Delphi: Свой WinAMP в подарочной упаковке
Лозовский Александр
Xakep, номер #057, стр. 057-086-2
2) function BASS_CDInit(drive: PChar; flags: DWORD): BOOL;
Инициализирует CD функции.
drive - ставь 0.
flags - флаги - опции для громкости. Один ты уже видел выше (который 1000), а второй выглядит так: BASS_DEVICE_LEAVEVOL. Это громкость по умолчанию.
3) function BASS_Start: BOOL;
Открытие звукового выхода или resume после паузы.
Функции для работы с CD
1) function BASS_CDDoor(open:BOOL): BOOL; Выдвигает лоток сидюка, если ты передал ей TRUE. Если false, то лоток втягивается обратно.
2) function BASS_CDInDrive: BOOL;
Выясняет, есть ли аудио-CD в сидюке. Если есть, то возвращает TRUE.
3) function BASS_CDGetTracks:DWORD;
Получает количество треков на диске. Его, соответственно, и возвращает.
4) function BASS_CDGetTrackLength(track:DWORD):DWORD;
Возвращает длину трека в миллисекундах.
track - номер трека.
5) function BASS_CDPlay(track: DWORD; loop: BOOL; wait: BOOL): BOOL;
Играет заданный трек.
track - номер трека.
loop - если true, то играем циклически, наоборот - один раз.
wait - ждать или нет перед проигрышем.
6) procedure BASS_CDFree;
Освобождает ресурсы, занятые CD-аудио.
Функции для работы со звуковыми файлами
1) function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length, flags: DWORD): HSTREAM;
Создает звуковой поток из локального файла, к каковым относятся mp3, mp2, mp1, OGG и WAV. Файл может быть как на диске, так и в оперативке.
mem - если TRUE, то файл в оперативке. Если FALSE - то на диске. f - имя файла (если он на диске).
offset - смещение, с которого надо начинать. Обычно я начинаю с начала, но если у тебя другое мнение - сообщи его этому аргументу.
length - необходимое количество данных. Если ты хочешь использовать все до конца файла, то просто ставь 0.
flags - ставь 0.
Функция возвращает переменную типа HSTREAM, которая и есть хэндл новорожденного потока.
2) function BASS_StreamCreateURL(URL: PChar; offset: DWORD; flags: DWORD; save: PChar):HSTREAM;
То же, что и предыдущая функция, но поток создается не из локального, а из удаленного файла. Откуда и следуют новые аргументы:
URL - урл к файлу. Может начинаться либо с http://, либо с ftp://.
save - путь, куда класть закачанный файл. Если здесь null, значит не надо никуда сохранять.
3) function BASS_StreamGetLength(handle: HSTREAM): QWORD;
Получает приблизительную длину потока в байтах.
handle - получаем с помощью двух предыдущих функций.
Если размер в байтах тебя не удовлетворяет, воспользуйся функцией BASS_ChannelSeconds2Bytes. В ней нет ничего сложного, но она возвратит тебе уже секунды.
4) function BASS_StreamPlay(handle: HSTREAM; flush: BOOL; flags: DWORD): BOOL;
Играет заданный поток.
handle - хэндл потока.
flush - если false, поток можно приостанавливать, затем играть с места остановки. Если true, то остановка грозит возвращением к началу.
flags - если здесь будет стоять BASS_SAMPLE_LOOP, то поток будет играть ВЕЧНО.
5) function BASS_ChannelPause(handle: DWORD): BOOL;
Ставит паузу в воспроизведении чего угодно - CD, потока, сэмпла. Главное - скормить ей хэндл, который и является единственным аргументом.