Мини 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 #
А как вывести визуализацию на панель например?

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