Web Audio API:如何仅在左声道或右声道播放单声道音源?

时间:2013-01-31 10:49:37

标签: web-audio

是否有一种(简单)方式可以单声道输入并仅在左声道或右声道播放?我以为我可以通过ScriptProcessing节点来实现它,但是如果有一个节点可以处理这种情况,我真的很想知道。 API有一个关于混音的部分,但我没有看到任何关于如何以这种方式操纵频道的代码。

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

3 个答案:

答案 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);

这就是你需要的吗?