Delphi: Свой WinAMP в подарочной упаковке
Лозовский Александр
Xakep, номер #057, стр. 057-086-3
6) function BASS_ChannelResume(handle: DWORD): BOOL;
Функция, обратная предыдущей.
7) function BASS_ChannelSetAttributes(handle: DWORD; freq, volume, pan: Integer): BOOL;
Функция, устанавливающая атрибуты воспроизведения заданного канала. Под термином "канал" разработчики понимают все воспроизводимое и записываемое: HCHANNEL/HMUSIC/HSTREAM или CDCHANNEL/RECORDCHAN. Короче, годится для всего, поскольку свойства эти общие:
handle - хэндл канала (см. 2 строчки выше).
freq - частота в герцах. Если здесь -1, останется текущая.
volume - громкость - от 0 до 100. -1 оставляет дефолтовую.
pan - баланс - (-101) - текущий, (-100) - влево, 0 - центр, 100 - вправо.
8) function BASS_ChannelGetAttributes(handle: DWORD; var freq, volume: DWORD; var pan: Integer): BOOL;
Получает атрибуты канала. Переменные такие же, как и в предыдущей функции. Если не хочешь получать какое-нибудь свойство, ставь null.
9) function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD): BOOL;
Сдвигает позицию проигрывания на pos вперед. А это самое pos имеет разные значения в зависимости от хэндла; например, для CDCHANNEL - это количество в миллисекундах, считая от начала трека, а для HSTREAM - позиция в байтах. Получить позицию можно, соответственно, с помощью функции BASS_ChannelGetPosition.
Куем форму
Напомню, что главное на сегодня - интерфейс. Как говорится, прогу встречают по фейcу, а провожают по контенту, а если ты притащишь кому-нибудь сверхфункциональное, но омерзительно выглядящее чудище, то его отправят в trash, даже не выяснив всех достоинств.
Бросай на форму 1 Edit, 1 TImage, 1 TrackBar, 6 Кнопок, 1 TListBox, 1 TLabel, 1 OpenDialog. Все это должно выглядеть так:
Раздадим свойства всем этим компонентам:
RadioButton1 - свойство Caption - "From File". Если он будет выбран, то играть будем файл.
RadioButton2 - свойство Caption - "From CD". А если он, то играем аудио-компакт, причем в плейлист будет выведен список треков. В роли плейлиста выступает TListBox.
Button'ы под номерами 1, 2, 3 получают Caption'ы, соответственно: "Play", "Stop" и "Pause".
Button4 - свойство Caption - "ADD". Эта кнопка будет добавлять файлы в плейлист.
Button5 - свойство Caption - "View info...". Выводит информацию о файле.
Button6 - свойство Caption - "RMove". Необходима для удаления файла из плейлиста.
Label1 - свойство Caption - "Volume:". Находящийся под ней TrackBar будет определять громкость.
TImage - сюда придется залить свои пламенные поздравления. Все-таки подарок :).
Кодинг
Инициализация должна быть в OnCreate для формы. Вот и набивай туда следующее:
Здесь я инициализирую стандартный звук: 44100 Гц, стерео, 16 бит, устройство по умолчанию и проверяю версию bass.dll. Если она не 1.8, значит, ничего и не загружено. Поэтому аварийный выход через HALT. Вот, собственно, и вся инициализация. Теперь создай для RadioButton2 событие OnClick и пиши туда:
Если в CD-ROM'е имеется аудиодиск, то мы получаем список его треков и выводим его в плейлист в виде "Track XX". Если диска нет, то сообщаем об этом. Теперь давай сделаем две процедуры: StremPlay и PlayDisk. Для этого запиши их в конец раздела Type (который выше private):