Курсы лаборатории компьютерной графики
Обязательный полугодовой курс ВМиК МГУ
     

Как использовать библиотеку 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 Кб).

Главная | О курсе | Лекции | Библиотека | Задания | Оценки | FAQs | Форум
  (с) Лаборатория компьютерной графики, 1997-2005
Дизайн: Алексей Игнатенко