Сделай сам на Delphi: Визуализационный плагин к Winamp
30.03.2008 от Иван Ширко(плагины + исходники на Delphi)
Работать с плеером Winamp мы научились в статье Управление Winamp. Теперь перейдем к разработке плагинов для него.
Плагины к Winamp бывают пяти видов:
- Input – плагины для проигрывания различных форматов;
- Output – для записи музыки в различных форматах;
- General Purpose – плагины общего назначения;
- DSP/Effect – для обработки звука;
- Visualization – плагины, которые делают что-нибудь в такт музыке.
Плагин к Winamp представляет из себя обычную динамическую библиотеку (DLL – Dynamic Link Library), которая должна экспортировать необходимую для данного плагина информацию. Шаблон библиотеки для любого типа плагинов можно взять на сайте Winamp'a – http://www.winamp.com. В этой статье мы рассмотрим процесс создания самого впечатляющего, на мой взгляд, типа плагинов – визуализационного.
В составе визуализационного плагина можно выделить заголовок и модули. Вот формат этих частей:
Заголовок плагина
winampVisHeader = packed record
version: Integer;
description: PChar;
getModule: function( which: integer ): PwinampVisModule; cdecl;
end;
version – версия, для данного типа плагинов должна быть равна $101 (знак '$' указывает на шестнадцатеричную систему счисления).
description – описание плагина.
getModule – функция, которая должна возвратить указатель на тело плагина.
Модуль плагина
winampVisModule = packed record
//описание модуля
description: PChar;
//идентификатор окна Winamp'a (заполняет Winamp)
hwndParent: HWND;
// идентификатор библиотеки (заполняет Winamp)
hDllInstance: HWND;
//sample rate (заполняет Winamp)
sRate: Integer;
//количество каналов (заполняет Winamp)
nCh: Integer;
//задержка между получением данных от Winamp'a и
//реакцией на них (в мс)
latencyMs: Integer;
//количество мс между получениями данных от Winamp'a
delayMs: Integer;
//следующие 4 параметра и есть те данные о звуке, которые мы
//будем через некоторый промежуток времени получать от Winamp'a
spectrumNch: Integer;
Рубрики: Delphi, Winamp, Сделай сам |
02.04.2008 в 05:02
kRUTO!!! aftoru respeKt!!! DAVNO ISkaL TAKoE
06.06.2008 в 12:13
Спасибо за модули. В выходные попробую разобраться подробнее
16.07.2008 в 09:25
Отлично написано
14.08.2008 в 20:56
Статья очень пригодилась, все просто и понятно.
Огромное спасибо автору!:)
21.08.2008 в 13:06
Люблю когда по сути, мне понравилось.
10.09.2008 в 11:04
Благодарю, очень полезная вещь
13.09.2008 в 14:58
У меня коряво получается, но все равно спасибо.
14.09.2008 в 06:34
У меня не вышло(((
19.10.2008 в 07:15
Спасибо попробую.
22.10.2008 в 10:24
Спасибо большое!!! Одно но : в 2 плагине в коде нужно заменить “*********
keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
//key release
*****”
на
“*********
keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0) else
//key release
*****”. Иначе просто все лампочки всегда выключаються.
22.10.2008 в 10:48
>>Виталий
Спасибо!
28.09.2009 в 08:03
хм…интересно..спасибо за идею, давненько хотел что-либо подобное попробовать…
16.10.2009 в 01:02
Отлично я нашла что искала:)