Мини FAQ по библиотеке Nano Visual Library

Опубиковано: 26.12.2009 г., автор: , просмотров: 30343

    Delphi уроки - мини FAQ по библиотеке Nano Visual Library

    Итак, если вы разрабатываете свой Плеер и не желаете использовать библиотеки BassVis или BASS_SFX для визуализации различных эффектов, то можете воспользоваться Nano Visual Library.
    Nano Visual Library – это небольшая библиотека размеров 26 КБ, которая умеет визуализировать различные графические образы от разных мультимедийных приложений. Пока на этапе разработке правильно работать она умеет только с визуальными образами плееров AIMP(*.dll) ,Sonique(*.svp). Базируется она на всем известном аудио движке Bass.dll. Т.е в вашем проекте обязательно должен участвовать именно этот движок для работы Nano Visual Library. Она содержит довольно понятный SDK, думаю любой сможет без проблем разобраться, что к чему. Но всё таки объясню – какие функции что означают:

    1. NanoVis_Init – обязательная процедура, желательно выполнять при инициализации вашего приложения.

    2. NanoVis_DeInit –  анологичная предыдущей процедуре, только действия выполняются после работы приложения (при закрытии Destroy).

    3. NanoVis_LoadFromFile(FileName: PWideChar) - для версий Delphi 2009 и выше.
    NanoVis_LoadFromFile(FileName: PAnsiChar) – для версий ниже Delphi 2009.
    Функция, служит для загрузки библиотеки в память – возвращает Bool (True, False)

    4. NanoVis_FreePlugin – выгружает загруженный плагин из памяти

    5. NanoVis_ResizeWindow(ANewWidth,ANewHeight: Integer) – процедура задаёт параметры окна визуализации – первый параметр задаёт длину, второй высоту.

    6. NanoVis_Render – функция возврщает тип Bool , служит для вывода визуализации на экран. Желательно использовать в например таких местах как Timer.

    7. NanoVis_GetPluginAuthor – функция возвращает имя автора плагина.

    8. NanoVis_GetPluginType – функция вовзращает тип плагина (Sonique, AIMP);

    9. NanoVis_GetPluginName – функция возвращает имя плагина

    10. NanoVis_SetWindow(AWnd: HWND) – процедура, задаёт окно для вывода визуализации. Например: NanoVis_SetWindow(Panel1.Handle);

    11. NanoVis_SetChannel(AChannel: HStream) – процедура, задаёт канал для обработки визуализацией.
    Например:

    Procedure Form1.FormCreate(Sender: TObject);
    var
    Channel: HStream;
    begin
    Channel:= Bass_StreamCreateFile(False,PWideChar(‘Play.mp3’),0,0,BASS_UNICODE);
    NanoVis_SetChannel(Channel);
    End;

    Эта процедура должна вызываться постоянно после загрузки канала в память.

    Ну вот собственно и всё, не правда ли всё довольно понятно и просто? Нежели использовать библиотеки BassVis или BASS_SFX.

    Скачать

    P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.
    Участвовать в конкурсах и постепенно вливаться в нашу команду ?!
    Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
    Нас уже больше чем 4000 человек ! Подписаться



    Похожие материалы

    Последние из рубрики

    GregoryDarse Gregorymic 14 Aug 2024 в 00:28 #
    Хииии)) я с них улыбаюся
    Серега 10 Jun 2013 в 00:00 #
    Неплохая вещь, кстати. Только рендер лучше не на таймер ставить, а то будет мигать. Вот код:
    {=====================================}
    type
    procedure Visual;
    {=====================================}
    procedure TForm1.Visual;
    begin
    H := FindWindow (′TForm1′, ′Form1′);
    if h<>0 then
    begin
    NanoVis_Init; nanoVis_LoadFromFile(′Aorta.svp′);
    NanoVis_SetWindow(Panel1.Handle);
    NanoVis_ResizeWindow(Panel1.ClientWidth,Panel1.ClientHeight);
    NanoVis_SetChannel(Channel);
    SendMessage (H, SC_MINIMIZE, 0, 0);
    end
    else exit;
    end;
    {=============================}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Visual;
    Visual; //Не обязательно
    end;
    {=============================}
    У кого отрисовка идет в левом верхнем углу раб.стола и не хочет рисоваться на панели - вызывайте процедуру visual два раза. Если все норм, то не надо).
    Серега 10 Jun 2013 в 00:00 #
    H : integer;
    Так, на всякий случай)
    Денис 04 Apr 2013 в 00:00 #
    Всё отлично, вот только при загрузке некоторых плагинов ругается на деление на ноль, но раз тут не написанно, добавлю от себя:
    ...
    var a:integer;
    ...
    procedure Form1.FormCreate(Sender: TObject);
    begin
    a:=Get8087CW or $03AF; //|
    Set8087CW(a);
    end;

    что заставляет игнорировать это сообщение
    Алексей 31 Dec 2011 в 00:00 #
    А как вывести визуализацию на панель например?

    ОтменитьДобавить комментарий