Для работы понадобится библиотека bass.dll. Она находится в папке рядом в HiAsm, её нужно скопировать в папку Windows. Можно, конечно, поместить её в папку с программой, но тогда её придётся помещать в папку с каждой программой, использующей BASS, а при копировании в Windows библиотека будет работать для всех программ на компьютере.
Если распространяете программу в Интернете, тоже не забудьте поставлять эту библиотеку.
А теперь перейдём к программированию. Найдите группу компонентов "BASS2.4". Это версия текущей библиотеки. Нам понадобится самый первый компонент - BASS_Init. Он инициализирует подсистему BASS, что необходимо для работы с BASS. Идеально это делать сразу при входе в программу, т.е. по событию формы onCreate.
У компонента также есть события. onInit происходит при успешной инициализации, и по нему можно выполнять какие-нибудь действия. onError - при ошибке инициализации. Это событие выдаёт в поток код ошибки, а его значение можно узнать из файла Elements\Delphi\code\bass.pas. Там они написаны в самом начале.
Ещё у компонента есть точки данных и параметры. Назначение точек данных вполне понятно, как и некоторых параметров. Но вот в группе параметров Flags назначение параметров не указано, поэтому я их здесь опишу.
8bit - использовать 8-битное разрешение или 16-битное.
mono - использовать моно или стерео.
3D - включить или отключить трёхмерные возможности устройства.
Кроме этого, в группе "BASS2.4" есть ещё компоненты. BASS_CPU и BASS_Version нужны для получения информации (о загрузке процессора и версии BASS соответственно), а BASS_Device и BASS_Volume - для получения и установки нужных значений (устройства для вывода звука и громкости всей подсистемы BASS). Эти компоненты просты, с ними не составит труда разобраться.
Теперь посмотрим на группу "BASS потоки". Компоненты здесь нужны для загрузки или создания звука. Возьмём первый - BASS_StreamCreateFile. Даже по названию понятно, для чего он нужен. Он может проигрывать следующие форматы: MP3, MP2, MP1, OGG, WAV, AIFF. У компонента есть множество параметров в группе Flags, некоторые из которых совпадают с рассмотренными выше.
Loop - циклическое проигрывание файла.
Software - не использовать аппаратное микширование.
FX - разрешить использование эффектов DirectX 8.
Эти определения я брал из справки по bass, к сожалению, в HiAsm никаких справок на эту тему нет.
Компонент BASS_StreamCreateURL делает то же самое, что и предыдущий компонент, только предназначен для загрузки музыки из Интернета. Он снабжён некоторыми дополнительными параметрами и точками, но в целом работа с ним не сильно отличается от работы с BASS_StreamCreateFile.
BASS_StreamCreate предназначен для создания звука из потока. Для него не нужен файл - для него нужны 2 байта для создания соответствующего звука. Очень хорошо работу с этим компонентом демонстрирует стандартный пример Elements\Delphi\Example\Media\BASS\PlayStreamMix.sha.
Остаётся ещё один компонент - BASS_MusicLoad. Он загружает музыку форматов MO3 / IT / XM / S3M / MTM / MOD / UMX. В подсказке к этому компоненту HiAsm версии 4.02 build 179 есть ошибка: неправильно указаны форматы. Поэтому обратите на это внимание.
Мы разобрались с загрузкой, но теперь надо как-то проиграть загруженный файл. Поэтому переходим к новой группе компонентов - "BASS каналы". Вообще, компоненты с этой вкладки полностью управляют проигрыванием и позволяют получить разную информацию из проигрываемого потока. Самый нужный сейчас для нас - это BASS_ChannelPlay. Он проигрывает звуковой поток.
Сейчас вам главное - понять, как указать компоненту, какой поток проигрывать (ведь загрузить можно несколько потоков). Раньше, в предыдущих версиях HiAsm, создавался идентификатор потока в виде точки внизу и подключался к верхней точке компонента для управления потоком. Сейчас используется технология менеджеров. В компоненте BASS_StreamCreateFile (и ему подобных) нужно указать имя звукового потока в параметре Name. Оно выбирается произвольно. А в BASS_ChannelPlay нужно выбрать в параметре Channel желаемый поток (имя).
В примере потоку дано имя firststream, но вы можете называть потоки как угодно.
Рассмотрим и другие компоненты для управления звуковым потоком.
Разобраться здесь будет несложно, однако обратите внимание на некоторые особенности.
Чтобы после паузы запустить проигрывание, нужно вновь нажать "Пуск", а не "Пауза".
Компонент BASS_ChannelPlay содержит нижнюю точку, по которой можно узнать, проигрывается ли поток.
Громкость в BASS изменяется в пределах от 0 (минимум) до 1 (максимум). Разумеется, возможны дробные значения, но ScrollBar выдаёт только целые числа, поэтому ставить максимум 1 в нём нельзя: не будет градации звука (т.е. возможности плавного изменения). Я в примере выставил максимум 100, а полученные значения делю на 100. У Math при этом ResultType=Real. Вот и получаются дробные значения, которые можно передавать компоненту.
Конечно, можно установить максимум 1000 и делить на 1000 - так будет больше градаций (плавности изменения звука). Можно выбрать любое число.
Обратите внимание на два последних компонента: BASS_ChannelEnumTags и BASS_ChannelFX_Eq. Первый вытаскивает из звукового потока теги, второй компонент - эквалайзер.
В первом важно правильно выбрать тип тегов в параметре Type. Обычные mp3-теги - это ID3v2 теги (просто ID3 - это старая версия таких тегов).

Немедленно запретить курительные смеси! Самые разные легальные миксы goaspirit (гоаспирит), hydro fire (гидро фаер), eclipse moon (эклипс мун), goamoon (гоамун), goasun (гоасан) и по низким ценам - запретить.
Комментариев нет:
Отправить комментарий