Сделай сам на Delphi: Визуализационный плагин к Winamp | Программирование на Delphi и не только

Реклама на сайте

Вы уверены? Что нет работы в Ростове? Мы Вам ее найдем!
Красивые виды из отеля, тур - белек в мае со скидкой от турфирмы

Почитайте!

Нас читают

Статьи о программировании и не только

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Сделай сам на Delphi: Визуализационный плагин к Winamp

30.03.2008 от Иван Ширко

Страница: 1 2 3 4 5 6

скачать примеры  к статье (плагины + исходники на Delphi)

Работать с плеером Winamp мы научились в статье Управление Winamp. Теперь перейдем к разработке плагинов для него.
Плагины к Winamp бывают пяти видов:

  1. Input – плагины для проигрывания различных форматов;
  2. Output – для записи музыки в различных форматах;
  3. General Purpose – плагины общего назначения;
  4. DSP/Effect – для обработки звука;
  5. 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;

Страница: 1 2 3 4 5 6

Рубрики: Delphi, Winamp, Сделай сам |

Комментарии (13)

  1. IVAn sCm пишет:

    kRUTO!!! aftoru respeKt!!! DAVNO ISkaL TAKoE

  2. Dosha пишет:

    Спасибо за модули. В выходные попробую разобраться подробнее

  3. Фанат пишет:

    Отлично написано

  4. Иван пишет:

    Статья очень пригодилась, все просто и понятно.

    Огромное спасибо автору!:)

  5. Zveryoga пишет:

    Люблю когда по сути, мне понравилось.

  6. hitzinger пишет:

    Благодарю, очень полезная вещь

  7. help пишет:

    У меня коряво получается, но все равно спасибо.

  8. Коля пишет:

    У меня не вышло(((

  9. Гриша пишет:

    Спасибо попробую.

  10. Виталий пишет:

    Спасибо большое!!! Одно но : в 2 плагине в коде нужно заменить “*********
    keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0);
    //key release
    *****”
    на
    “*********
    keybd_event(c, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0) else
    //key release
    *****”. Иначе просто все лампочки всегда выключаються.

  11. Иван Ширко пишет:

    >>Виталий

    Спасибо!

  12. dfm пишет:

    хм…интересно..спасибо за идею, давненько хотел что-либо подобное попробовать…

  13. uniforgot пишет:

    Отлично я нашла что искала:)

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

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.