是否有一种(简单)方式可以单声道输入并仅在左声道或右声道播放?我以为我可以通过ScriptProcessing节点来实现它,但是如果有一个节点可以处理这种情况,我真的很想知道。 API有一个关于混音的部分,但我没有看到任何关于如何以这种方式操纵频道的代码。
注意,我已经尝试过panner节点,但它似乎并没有真正切断左边的通道,我不希望任何声音从一个通道流到另一个通道。 / p>
答案 0 :(得分:3)
您确实想要使用ChannelSplitter,但是当频道没有连接时会出现错误。请参阅此问题:Play an Oscillation In a Single Channel。
答案 1 :(得分:2)
查看拆分器节点:https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#ChannelSplitterNode-section
ChannelSplitterNode的一个应用是进行“矩阵混合”,其中需要对每个通道进行单独的增益控制。
(我还没试过,请告诉我:)。
答案 2 :(得分: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);
这就是你需要的吗?