Как использовать библиотеку BASS.
Подключение библиотеки.
Скачать библиотеку можно здесь. Распокавать архив в папку с проектом
(должно появится три новых файла: bass.dll, bass.h, bass.lib).
Далее нужно подключить библиотеку к проекту, включить заголовочный файл (bass.dll может лежать в той папке, где находится
текущий проект).
#pragma comment (lib, "bass.dll")
#include "bass.h"
Загрузка и воспроизведение звукового файла.
Библиотека поддерживает использование многих звуковых форматов: MP3, MP2, MP1, OGG, WAV, AIFF.
Первым делом нужно инициализировать устройство, которое инициализирует звук, делается это обычно там же,
где и остальная инициализация приложения.
BASS_Init(device, frequency, 0, 0, 0);
В большинстве случаев device = 1, frequency = 44100.
Далее нужно создать звуковой поток (там же - в инициализации):
HSTREAM stream = BASS_StreamCreateFile(FALSE, fileName, 0);
Где - filename - это путь к звуковому файлу, например, "my.mp3".
Теперь можно начать воспроизводить файл в созданном потоке:
BASS_StreamPlay(stream, FALSE, 0);
Освобождение звукового потока.
Не забывайте в конце приложения освободить звуковой поток (а также это можно понадобится, если вы захотите воспроизвести
другой звуковой файл в том же приложении).
BASS_StreamFree(stream);
Синхронизация событий в программе с воспроизводимым звуковым потоком.
Для того, чтобы объекты в сцене двигались под музыку нужно синхронизовать эти движения с воспроизводимым звуком.
В библиотеке BASS есть возможность снимать спектральную характеристику воспроизводимого звука.
Нам нужно извлекать эту спектральную характеристику в массив.
float buffer[1024];
BASS_ChannelGetData(stream, buffer, BASS_DATA_FFT2048);
На основе полученных данных менять поведение программы. Для этого для начала нужно выделить некоторый подддиапазон буфера с данными, например,
от 100-го до 200-го значания массива. Дальше нужно перевести значения диапазона в одну какую-нибудь величину (например, посчитать среднее
арифметическое значений, которые лежат в данном поддиапазоне. Разумеется, поддиапазонов может быть несколько для разных объектов.
Потом прибавить результат к скорости изменения состояния объекта.
Смотрите исходный код приложения с шариками, которые двигаются под музыку здесь: (zip 114 Кб).
|