Delphi: Свой WinAMP в подарочной упаковке
Лозовский Александр
Xakep, номер #057, стр. 057-086-1
(alexander@real.xakep.ru)
Пишем полноценный медиа-плеер
На свете существует такое огромное количество медиа-плееров, что просто взять и накодить очередной WinAMP-killer стало уже немодно. Многие это проделывали, пытаясь доказать общественности, что их прога чем-то лучше/красивее/функциональнее. Ну, как говорится - флаг им в руки и поезд навстречу, а мы пойдем другим путем - будем делать штучный товар, предназначенный только для одного, но хорошего человека. В подарок.
Ни один человек не останется равнодушным, если на день варенья ты принесешь ему симпатичную прогу, сделанную своими руками специально для него. Особенно, если в ее интерфейсе присутствуют твои пламенные поздравления или признания. Хорошо себя зарекомендовали в этом деле две категории прог: скринсейверы и медиа-плееры, т.к. любой юзер пользуется ими постоянно, а написать их совсем не сложно. Правда и успех они будут иметь только в том случае, если твое творение будет лучше или хотя бы на уровне конкурентов, иначе... сам понимаешь, кто отправится в grave, а кто останется жить. Ну что ж, здоровая конкуренция только подстегивает боевой дух настоящего Х-мена :).
Реквизит
Делать хороший медиа-плеер "с нуля" и на чистом API довольно долго и муторно, поэтому мы воспользуемся пакетом под названием BASS 1.8 от Un4seen developments, который и попал сегодня под мой резекционный нож. Вскрытие показало, что его основу составляет библиотека bass.dll и соответствующий заголовочный файл (я имею в виду Delphi, но она поддерживает еще несколько языков). Содержит эта либа целый набор функций для работы со звуком через DirectSound. Таким образом, ты сможешь проигрывать mp3/mp2, WAV, MOD-музыку, MO3, аудио-компакты, работать с сэмплами, записывать саунд и пользоваться при этом всеми преимуществами DirectX 8.0. Внушительный набор, особенно если ты собираешься кодить игрушки или ди-джейский софт - в подобных прогах итак есть над чем напрячься, поэтому пусть уж хоть работа со звуком будет легкой и приятной.
Сам компонент качай отсюда: www.un4seen.co.uk/files/bass18.zip. Или бери с нашего компакта. Весит он всего 550 Кб. После распаковки архива главное - не забыть поместить bass.dll в windows\system, а заголовочный файл - в delphi\lib и помнить, что bass.dll нужна для работы программы. А то получится, что перепишешь саму прогу на дискету, придешь с ней в гости... а она не работает. Будет весьма торжественный момент, и смеяться над тобой будут даже самые грустные и нетрезвые люди :).
Функции bass.dll - инициализация
Инициализация - вещь архиважная и архинужная. Поэтому товарищи из un4seen напряглись и сделали целых 3 функции для этой цели:
1) function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND): BOOL;
Инициализирует BASS. Здесь:
device: 0 - первое устройство, -1 - по умолчанию, -2 - без звука.
freq - частота. Обычно - 44100.
flags - флаги. Например, BASS_DEVICE_MONO даст монозвук (вспомнишь молодость), а BASS_DEVICE_VOL1000 позволит тебе измерять громкость по шкале от 0 до 1000. Напомню, по умолчанию - до 100. Если такие настройки тебе не нужны, ставь 0.