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 ★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.