Постановка задачи
Необходимо разработать алгоритм программы «аудиопроигрыватель». Функциональные возможности:
- Воспроизведение форматов:
mp3
wma
- Наличие плейлиста
- Наличие эквалайзера
- Сохранение плейлиста
- Наличие информационного окна
- Наличие горячих клавиш
- Сворачивание в трей
Краткая теория
Программа написано на языке программирования Delphi 7.
2.1 Библиотека Bass.Dll
При написании аудиоплеера использовалась библиотека Bass.dll v 2.3. Библиотека BASS разработана un4seen developments. и содержит набор функций для воспроизведения звуковых файлов различных форматов, а также для записи звука.
Возможности библиотеки BASS:
1. воспроизведение звуковых образцов (сэмплов) в формате WAV/AIFF/MP3/MP2/MP1/OGG;
2. потоковое воспроизведение звуковых файлов в формате MP3/MP2/MP1/OGG/WAV/AIFF;
3. потоковое воспроизведение звука из интернета (по протоколам http и ftp, с поддержкой серверов Shoutcast, Icecast & Icecast2);
4. воспроизведение файлов музыкальных форматов (XM, IT, S3M, MOD, MTM, UMX), а также формата MO3 (mod музыка, сжатая MP3/OGG);
5. запись звука;
6. поддержка эффектов обработки звуков и эффектов DirectX 8 (только для Win32): Chorus / compressor /distortion / echo / flanger / gargle / parametric eq / reverb и т.д.;
7. поддержка многоканального (а не только стерео) звука, в том числе и многоканальных OGG/WAV/AIFF файлов;
8. поддержка многопотоковых звуковых карт;
9. поддержка позиционируемого 3D звука и EAX;
10.поддержка расширений (плагинов);
Основные функции библиотеки BASS:
function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; Инициализирует звуковой поток
Пример использования:
BASS_Init(-1, 44100, 0, handle, nil);
function BASS_StreamFree(handle: HSTREAM): BOOL
Очищает звуковой поток
function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM;
Создаем звуковой поток из локального файла
Пример использования :
Имя потока := Bass_streamCreateFile(false, PChar('C:\muzic.mp3'),0,0,0);
function BASS_ChannelGetLength(handle, mode: DWORD): QWORD;
Узнать длинну звукового потока
Пример использования:
BASS_ChannelGetLength(Имя потока,0);
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
Начать проигрывать звук
Пример использования:
Bass_channelPlay(Имя потока, false);
function BASS_ChannelPause(handle: DWORD): BOOL;
Сделать паузу
Пример использования:
BASS_ChannelPause(Имя потока);
function BASS_ChannelStop(handle: DWORD): BOOL;
Остановить проигрывание звука.
Пример использования:
BASS_ChannelStop(Имя потока);
function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD; mode: DWORD): BOOL; Установить новую позицию в потоке( необходимио для перемотки) Сдвигает позицию проигрывания на pos вперед.
Пример использования:
BASS_ChannelSetPosition(Имя потока, ScrollBar1.Position, 0);
function BASS_ChannelGetAttribute(handle, attrib: DWORD; var value: FLOAT): BOOL;
Получает атрибуты канала.