7

有没有一种(简单的)方法可以获取单声道输入并仅在左声道或右声道中播放?我想我可以通过 ScriptProcessing 节点来做到这一点,但是如果有一个节点可以处理这种情况,我真的很想知道。API 有一个关于混合的部分,但我没有看到任何关于如何以这种方式自己操作通道的代码。

请注意,我已经尝试过 panner 节点,但它似乎并没有真正切断右声道的左声道,我不希望任何声音从一个声道流到另一个声道。

4

3 回答 3

3

您确实想使用 ChannelSplitter,尽管在通道未连接时存在错误。请参阅此问题:在单个通道中播放振荡

于 2013-01-31T21:46:21.160 回答
2

看一下拆分器节点:https ://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#ChannelSplitterNode-section

ChannelSplitterNode 的一个应用是在需要对每个通道进行单独增益控制的情况下进行“矩阵混合”。

(我还没试过,告诉我:)

于 2013-01-31T15:37:12.700 回答
1

您可以尝试使用CreatePanner(),然后setPosition()转到所需的频道。不要忘记将之前的节点连接到 panner 节点,并将 panner 连接到context.destination.

例如:

//Lets create a simple oscilator just to have some audio in our context
var oscillator = context.createOscillator();

//Now lets create the panner node
var pannerNode = context.createPanner();

//Connecting the nodes
oscillator.connect(pannerNode); //Connecting the oscillator output to the panner input
pannerNode.connect(context.destination); //Connecting the panner output to our sound output

//Setting the position of the sound
pannerNode.setPosition(-1, 0, 0);//If you want it to play on the left channel
pannerNode.setPosition(1, 0, 0);//If you want it to play on the right channel

//Playing the sound
oscillator.noteOn(0);

那是你需要的吗?

于 2013-09-04T02:58:49.610 回答