Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Програмируем в Delphi...
Показать сообщение отдельно

Аватара для MeXXXanik

Новый участник


Сообщения: 44
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ойй После Новой Винды(И нетолько!)Пришло время рассказать снова о Delphi. А почему? С помощью Дельфи может создать прогу с кодом ____(Сюда Компонент(Имя)).Visible:=True что позволит тебе спрятать ,например тайное послание. Но сегодня не об этом... Сегодня будем писать себе проигрыватель музыки
Сам Себе Музыкант (О компоненте BASS_._)
И так начнем с нужного:
1.BASS _._(Любой версии, а лучше последний)Вот он
2.Знание
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.

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, потока, сэмпла. Главное - скормить ей хэндл, который и является единственным аргументом. 

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.

Вот на этом я пожалуй закончу... А в продолжение сделаем форму и дошкодим

-------
I'l be back


Последний раз редактировалось MeXXXanik, 05-08-2009 в 14:32. Причина: Ко е че подправил


Отправлено: 14:27, 05-08-2009 | #5

Название темы: Програмируем в Delphi...