如何使用 WebAudio 将多个立体声信号混合为一个信号?
How can I mix multiple stereo signals to one with WebAudio?
我正在编写一个 Web 应用程序,它需要将多个立体声声音组合成一个立体声输出,所以我想要 gstreamer's audiomixer element 的等价物,但 WebAudio 中似乎没有。 ChannelMerger 并没有做完全相同的事情 - 它将多个单声道信号组合成一个多声道信号。
AudioNode.connect 的文档说您可以将一个输出连接到其他节点的多个输入,并且尝试将同一输出多次连接到同一输入的尝试将被忽略。但它并没有说明如果您尝试将多个不同的输出连接到同一输入会发生什么。那会像我想要的那样充当简单的混音器吗?我怀疑不是,因为 WebAudio 提供的 splitting/merging 功能(参见上面的 ChannelMerger)似乎主要是基于多个单声道信号和一个多声道信号之间的转换,以及一个声道到一个单声道信号的映射。
我可以采用任意节点(我想 GainNode 可以工作,我可以利用它的增益功能)并将其 channelInterpretation 模式设置为 "speakers" 以实际混合通道,但它仅适用于1、2、4 或 6 个输入。我不太可能需要超过 6 个,但我肯定需要能够处理 3 个,可能还有 5 个。这可以通过使用多个混音器来完成(例如,对于三个通道,在一个混音器中混合输入 1 和 2,然后在第二个混音器中将其输出与输入 3 混合),但我认为我必须添加更多 GainNode 才能正确平衡混音。混频器可能必须衰减每个输入以防止重合峰值超出范围,因此对于没有补偿的链式混频器,我最终会得到 1/4、1/4、1/2 而不是 1/3、1/3 ,1/3?
你几乎做对了。使用单个 GainNode
并将每个源连接到 GainNode
的单个输入。这将总结所有不同的连接并产生单个输出。如果您知道所有单独的来源都是立体声,则无需更改 channelInterpretation
、channelCountMode
或 channelCount
即可获得所需内容。
您可能需要调整 GainNode
的增益值以降低输出音量,这样您就不会过度驱动输出设备。
除此之外,这应该都有效。
我正在编写一个 Web 应用程序,它需要将多个立体声声音组合成一个立体声输出,所以我想要 gstreamer's audiomixer element 的等价物,但 WebAudio 中似乎没有。 ChannelMerger 并没有做完全相同的事情 - 它将多个单声道信号组合成一个多声道信号。
AudioNode.connect 的文档说您可以将一个输出连接到其他节点的多个输入,并且尝试将同一输出多次连接到同一输入的尝试将被忽略。但它并没有说明如果您尝试将多个不同的输出连接到同一输入会发生什么。那会像我想要的那样充当简单的混音器吗?我怀疑不是,因为 WebAudio 提供的 splitting/merging 功能(参见上面的 ChannelMerger)似乎主要是基于多个单声道信号和一个多声道信号之间的转换,以及一个声道到一个单声道信号的映射。
我可以采用任意节点(我想 GainNode 可以工作,我可以利用它的增益功能)并将其 channelInterpretation 模式设置为 "speakers" 以实际混合通道,但它仅适用于1、2、4 或 6 个输入。我不太可能需要超过 6 个,但我肯定需要能够处理 3 个,可能还有 5 个。这可以通过使用多个混音器来完成(例如,对于三个通道,在一个混音器中混合输入 1 和 2,然后在第二个混音器中将其输出与输入 3 混合),但我认为我必须添加更多 GainNode 才能正确平衡混音。混频器可能必须衰减每个输入以防止重合峰值超出范围,因此对于没有补偿的链式混频器,我最终会得到 1/4、1/4、1/2 而不是 1/3、1/3 ,1/3?
你几乎做对了。使用单个 GainNode
并将每个源连接到 GainNode
的单个输入。这将总结所有不同的连接并产生单个输出。如果您知道所有单独的来源都是立体声,则无需更改 channelInterpretation
、channelCountMode
或 channelCount
即可获得所需内容。
您可能需要调整 GainNode
的增益值以降低输出音量,这样您就不会过度驱动输出设备。
除此之外,这应该都有效。