waveformNch: Integer;
spectrumData: array[0..1, 0..575] of byte;
waveformData: array[0..1, 0..575] of byte;
//процедура, которая будет вызываться при нажатии на кнопку «Конфигурация»
Config: procedure( thismod: PwinampVisModule ); cdecl;
//функция, вызываемая при инициализации плагина, должна возвратить 0, если всё в порядке
Init: function( thismod: PwinampVisModule ): integer; cdecl;
//функция, вызываемая при получении очередной порции данных //от Winamp’a, именно здесь нужно реагировать на изменение //музыкальных данных, должна возвратить 0, если всё в порядке,
// или 1, если плагин завершает свою работу
Render: function( thismod: PwinampVisModule ): Integer; cdecl;
//процедура, вызываемая при завершении работы плагина
Quit: procedure( thismod: PwinampVisModule ); cdecl;
//здесь можно хранить указатель на свои данные userData: pointer;
end;
Ну а теперь сделаем простой и абсолютно бесполезный визуализационный плагин, маленький анализатор спектра. Создайте в Delphi DLL. После этого создайте форму и положите на неё шесть компонентов TProgressBar, для которых свойство Orientation установите в положение pbVertical, а Max – в 300. Пример расположения компонент можете посмотреть на рис.1.
Всё, форму можно больше не трогать, займёмся теперь DLL. Вот код библиотеки:
library vis_MyFirstPlug;
uses Windows, forms, Unit1 in 'Unit1.pas' {Form1};
const
//версия VIS_HDRVER = $101;
//класс окна
szAppName = 'OurPlug';
//описание плагина
descr = 'Мой первый VIS плагин';
//описание модуля
mod1_descr = 'А это единственный модуль моего плагина';
type
//типы заголовка и тела плагина PwinampVisModule = ^winampVisModule; winampVisModule = packed record description: PChar; hwndParent: HWND; hDllInstance: HWND; sRate: integer; nCh: integer; latencyMs: integer; delayMs: integer; spectrumNch: integer; waveformNch: integer; spectrumData: array[0..1,0..575] of byte; waveformData: array[0..1,0..575] of byte; Config: procedure(thismod: PwinampVisModule);cdecl; Init: function(thismod: PwinampVisModule): integer;cdecl;
Render: function(thismod: PwinampVisModule): integer;cdecl;