Преобразование стерео 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);
Вы упомянули какой-то драйвер, который вы написали, изменили его или добавили новую функцию. Не могу больше помочь, учитывая беспорядок вашего вопроса...