Преобразование стерео WAV в моно на C

Я разработал драйвер синхронного аудиоинтерфейса (SAI) для проприетарной операционной системы реального времени (RTOS) с использованием языка C. Мой драйвер настроен на вывод данных левого и правого каналов (I2S) на усилитель. Но, поскольку подключенный усилитель является монофоническим, он выводит на динамик только аудиоданные левого или правого канала. Теперь у меня есть 16-битный файл аудиоданных стерео PCM, и я хочу каким-то образом смешать аудиоданные левого и правого каналов в моем приложении и отправить их в левый или правый канал в драйвере SAI. Таким образом, я смогу воспроизводить комбинированные стереофонические аудиоданные как моно на динамике, подключенном к моноусилителю.

Может ли кто-нибудь предложить мне лучшее из возможных решений?

1 ответ

Как сказано в комментарии, обычный способ смешивания двух стереоканалов в моно - разделить выборку каждого канала на 2 и сложить их.

Пример на C вроде:

int left_channel_sample, right_channel_sample;
int mono_channel = (left_channel_sample / 2) + ( right_channel_sample / 2);

Вы упомянули какой-то драйвер, который вы написали, изменили его или добавили новую функцию. Не могу больше помочь, учитывая беспорядок вашего вопроса...

Другие вопросы по тегам