Портативная библиотека для воспроизведения сэмплов на отдельных 5.1 каналах с помощью C / C ?

#c #c #audio #openal

#c #c #Аудио #openal

Вопрос:

Я ищу бесплатную портативную библиотеку C или Си , которая позволит мне воспроизводить сэмплы монофонического звука на определенных каналах в настройках 5.1. Например, звук должен воспроизводиться с помощью левого переднего динамика, при этом все остальные динамики остаются беззвучными. Существует ли какая-либо библиотека, способная это сделать?

Я взглянул на OpenAL. Однако я могу указать только позицию, с которой должен исходить звук, но мне кажется, что я не могу сказать что-то вроде «используйте только передний левый канал для воспроизведения этого звука».

Любые подсказки приветствуются!

Комментарии:

1. Другие, о которых я знаю, — это irrKlang и fmod, но я думаю, что они оба также являются позиционными.

Ответ №1:

Я взглянул на OpenAL. Однако я могу указать только позицию, с которой должен исходить звук, но мне кажется, что я не могу сказать что-то вроде «используйте только передний левый канал для воспроизведения этого звука».

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

Смотрите это обсуждение в списке рассылки OpenAL.

В качестве альтернативы, я думаю, что PortAudio является открытым, кроссплатформенным и поддерживает многоканальный вывод. Вам все равно придется чередовать данные так, чтобы, если вы отправляете звук на один канал, вам приходилось отправлять нули на все остальные. Вам также все равно нужно будет выполнить некоторую проверку при открытии потока на устройстве, чтобы убедиться, что устройство поддерживает 6 каналов вывода.

Ответ №2:

Давным-давно я использовал RtAudio. Но я не могу сказать, может ли эта библиотека делать то, что вы хотите заархивировать, но, возможно, это поможет.

Ответ №3:

http://fmod.org тоже могло бы сработать

Ответ №4:

Я использую библиотеку BASS Audio http://www.un4seen.com для всех моих аудио- и звукозаписывающих проектов. Я очень доволен этим.

BASS — это аудиотека, предоставляющая разработчикам мощные и эффективные сэмплы, потоковое вещание (MP3, MP2, MP1, OGG, WAV, AIFF, настраиваемое и многое другое с помощью дополнений), модную музыку (XM, IT, S3M, MOD, MTM, UMX), музыку MO3 (моды в формате MP3 / OGG) и функции записи. И все это в крошечной DLL размером менее 100 КБ *. Доступны C / C , Delphi, Visual Basic, MASM, .Net и другие API. BASS доступен для платформ Windows, Mac, Win64, WinCE, Linux и iOS.

Я никогда не использовал ее для воспроизведения разных сэмплов в конфигурации 5.1. Но, согласно их собственной документации, это должно быть возможно.

Основные возможности

  • Поддержка сэмплов для WAV / AIFF / MP3 /MP2 /MP1/ OGG и сэмплов, созданных пользователем

  • Потоки сэмплов передают любые сэмплы данных в 8/16/32 битном формате, как в системах «push», так и «pull». Потоки файлов в формате MP3 / MP2 /MP1 / OGG / WAV / AIFF. Потоковая передача файлов. Потоковая передача файлов через Интернет. Потоковая передача данных с HTTP- и FTP-серверов (inc. Shoutcast, Icecast amp; Icecast2), с поддержкой IDN и прокси-сервера и регулируемой буферизацией. ** Пользовательская потоковая передача файлов ** Потоковые данные из любого места с использованием любого способа доставки, как с «push», так и с «pull» системами

  • Многоканальная поддержка более простого стерео, включая многоканальные файлы OGG / WAV / AIFF

  • Несколько выходов одновременно используют несколько звуковых карт и перемещают каналы между ними

  • Назначение динамиков Назначайте потоки и модифицируйте музыку конкретным динамикам, чтобы воспользоваться преимуществами оборудования, способного воспроизводить не только обычную стереосистему (до 4 отдельных стереовыходов со звуковой картой 7.1).

  • 3D sound Воспроизводит сэмплы / потоки / музыку в любой 3D позиции

Лицензирование

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