LINUX.ORG.RU

Audio mixer algorithm


0

0

Никто не задавался вопросом как правильно микшировать аудио потоки ?

Например:

1) x = (x1 + x2) / 2 происходит уменьшение громкости каждого канала вдвое 2) x = sqrt(x1*x1 + x2*x2) / 1.41 потеря громкости 30 процентов

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


Ответ на: комментарий от Deleted

не согласен

например:

1 --   0x04  0x05 0x06 0x07 0x08 0x09 0x0A
2 --   0x02  0x04 0x00 0x00 0x04 0x08 0x00
&      0x00  0x00 0x00 0x00 0x00 0x08 0x00

mumg
() автор топика
Ответ на: комментарий от YesSSS

тоже не катит, есть ограничение по битности например 16 бит, если оба канала имеют самплы по весу больше чем половина максимального значения, при сложении будет overflow

mumg
() автор топика
Ответ на: комментарий от mumg

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

У меня в миксере канал PCM стоит не на 100%, музыка тоже не достигает максимальной громкости и т.д., и только поэтому звук не зашкаливает.

Так что простое сложение (с коэффициентами громкости) представляется логичным.

Другой путь - это попробовать нормализовать звук (можно локально, а не глобально).

P.S. Всё это IMHO.

Davidov ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.