Параллельное воспроизведение нескольких звуковых файлов с помощью библиотеки BASS

Обычно при воспроизведении звуковых файлов используется одновременно только один файл. Этого вполне достаточно для работы плеера или организации звукового сопровождения работы какой-либо программы. Однако существуют задачи для решения, которых необходимо одновременно воспроизводить, как минимум, два файла. Как правило, в данном случае речь идёт о задачах так или иначе связанных с микшированием.

С помощью библиотеки BASS эти задачи решаются довольно легко.

Микширование в библиотеке BASS осуществляется автоматически. Поэтому необходимо просто создать два или более звуковых канала и запустить их на воспроизведение. Реализуется это следующим образом (на примере двух каналов).

Объявление переменных:

 Инициализация и запуск на воспроизведение:

 Освобождение ресурсов после завершения воспроизведения или при завершении работы программы:

 Если необходимо использовать большее количество файлов, реализация осуществляется аналогичным образом. Различие только в количестве переменных и вызовов соответствующих функций библиотеки BASS.

Такой подход прост в реализации и вполне приемлем при малом количестве файлов и, соответственно, каналов. В случае же большого количества, он не эффективен (как минимум, с точки зрения программирования). В подобных ситуациях, необходимо использовать массив.

Для наглядности рассмотрим пример реализации для четырёх каналов.

Объявление массива:

 Инициализация и запуск на воспроизведение:

 Освобождение ресурсов после завершения воспроизведения или при завершении работы программы:

 Следует особо отметить, что для каждого воспроизводимого канала можно регулировать уровень громкости и применять различные эффекты доступные в BASS. Поэтому, при желании, с помощью этой библиотеки можно разработать программу для обработки звука обладающую довольно внушительным функционалом.

Полное описание работы с библиотекой BASS можно найти на официальном сайте её разработчика.

4 комментария

  1. Вот это и искал. СПС. Возможно лучше будет использовать часть DelphiX — Dsound? для игры типа арканоид. Бывает звук удара о кубик не успевает заканчиваться, а шар ударяет уже другой кубик.

    1. Всегда пожалуйста!
      По Вашему вопросу с ходу подсказать что-либо сложно. Возможно Вам будет проще самостоятельно попробовать различные решения и выбрать подходящее. Хотя по сути, что BASS, что DelphiX это «обёртки» над DirectX.

  2. А как быть с последовательным?
    К примеру, озвучить какую либо номенклатуру, состоящую из нескольких параметров, например: длина*ширина*высота
    т.е. должна сформироваться единая последовательность из нескольких звуковых файлов, которую нужно воспроизвести последовательно

    1. Вы по сути сами же отвечаете на собственный вопрос. К слову, у BASS есть возможность определить воспроизводится ли файл в данный момент или нет (см. документацию). Опираясь на это можно определить завершение воспроизведения для запуска следующего файла. Если интересуют «технические детали», то последовательное воспроизведение уже неоднократно рассматривалось на просторах сети.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *