Как я могу смешать несколько стереосигналов в один с WebAudio? - PullRequest
0 голосов
/ 08 декабря 2018

Я пишу веб-приложение, которому необходимо объединить несколько стереозвук в один стереовыход, поэтому я хочу эквивалент элемента аудиомикшера gstreamer *1002*, но, похоже, его нет вWebAudio.ChannelMerger не делает совсем то же самое - он объединяет несколько монофонических сигналов в один многоканальный сигнал.

В документации для AudioNode.connect говорится, что вы можете подключить выход к нескольким входам других узлов, и это пытаетсядля подключения одного и того же выхода к одному и тому же входу более одного раза игнорируются.Но это не говорит о том, что произойдет, если вы попытаетесь подключить несколько разных выходов к одному и тому же входу.Будет ли это действовать как простой микшер, как я хочу?Я подозреваю, что нет, потому что функциональность разделения / слияния, которую обеспечивает WebAudio (см. ChannelMerger выше), по-видимому, в основном основана на преобразовании между несколькими монофоническими сигналами и одним многоканальным сигналом с отображением одного канала в один моносигнал.

Я мог бы взять произвольный узел (я думаю, что GainNode будет работать, и я мог бы воспользоваться его функциональностью усиления) и установить его режим channelInterpretation на «колонки», чтобы фактически смешивать каналы, но он работает только для 1, 2, 4 или6 входов.Мне вряд ли понадобится больше 6, но мне определенно понадобится уметь обрабатывать 3 и, возможно, 5. Это можно сделать, используя более одного микшера (например, для трех каналов микшируйте входы 1 и 2 в одном микшере,затем смешайте его выход со входом 3 во втором микшере), но я думаю, что мне нужно было бы добавить больше GainNodes для правильного баланса микса.Предполагается, что микшер должен ослаблять каждый вход, чтобы не допустить сужения совпадающих пиков вне диапазона, поэтому в случае цепных микшеров без компенсации я получу 1 / 4,1 / 4,1 / 2 вместо 1 / 3,1 / 3.1/3 & alpha;

1 Ответ

0 голосов
/ 08 декабря 2018

Вы почти правильно поняли.Используйте один GainNode и подключите каждый источник к одному входу к GainNode.Это суммирует все различные соединения и даст один выход.Если вы знаете, что все отдельные источники стереофонические, вам не нужно ничего менять в channelInterpretation, channelCountMode или channelCount, чтобы получить то, что вы хотите.

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

Кроме того, все это должно работать.

...