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