Javascript Web音频API将单声道分割为立体声
假设我有一个连接到目标节点的源节点。 即使音频是单声道的,我也希望能够独立地控制每只耳朵的音量,就像我拥有带有拆分器和合并节点的立体声音频一样 已经尝试在单源节点上使用拆分器和合并节点,但右通道显示为空 立体声示例:Javascript Web音频API将单声道分割为立体声,javascript,web-audio-api,Javascript,Web Audio Api,假设我有一个连接到目标节点的源节点。 即使音频是单声道的,我也希望能够独立地控制每只耳朵的音量,就像我拥有带有拆分器和合并节点的立体声音频一样 已经尝试在单源节点上使用拆分器和合并节点,但右通道显示为空 立体声示例: var audioCtx=newaudiocontext(); var source=audioCtx.createMediaElementSource(myAudio); var gainnode=audioCtx.createGain(); var gainNodeR=aud
var audioCtx=newaudiocontext();
var source=audioCtx.createMediaElementSource(myAudio);
var gainnode=audioCtx.createGain();
var gainNodeR=audioCtx.createGain();
var splitter=audioCtx.createChannelSplitter(2);
var合并=audioCtx.CreateChannel合并(2);
源。连接(拆分器);
拆分器连接(GainModel,0);
拆分器。连接(gainNodeR,1);
连接(合并,0,0);
连接(合并,0,1);
merge.connect(audioCtx.createMediaStreamDestination())代码>如果信号仅为单声道(或换言之,其信道计数为1),则不需要ChannelSplitterNode。我稍微修改了这个例子。它现在可以分离振荡器的单声道信号
var audioCtx = new AudioContext();
var oscillator = audioCtx.createOscillator();
var gainNodeL = audioCtx.createGain();
var gainNodeR = audioCtx.createGain();
var merger = audioCtx.createChannelMerger(2);
oscillator.connect(gainNodeL);
oscillator.connect(gainNodeR);
gainNodeL.connect(merger, 0, 0);
gainNodeR.connect(merger, 0, 1);
merger.connect(audioCtx.destination);
oscillator.start();
function left () {
gainNodeL.gain.value = 1;
gainNodeR.gain.value = 0;
}
function right () {
gainNodeL.gain.value = 0;
gainNodeR.gain.value = 1;
}
function center () {
gainNodeL.gain.value = 1;
gainNodeR.gain.value = 1;
}
如果信号仅为单声道(或换言之,其信道计数为1),则不需要ChannelSplitterNode。我稍微修改了这个例子。它现在可以分离振荡器的单声道信号
var audioCtx = new AudioContext();
var oscillator = audioCtx.createOscillator();
var gainNodeL = audioCtx.createGain();
var gainNodeR = audioCtx.createGain();
var merger = audioCtx.createChannelMerger(2);
oscillator.connect(gainNodeL);
oscillator.connect(gainNodeR);
gainNodeL.connect(merger, 0, 0);
gainNodeR.connect(merger, 0, 1);
merger.connect(audioCtx.destination);
oscillator.start();
function left () {
gainNodeL.gain.value = 1;
gainNodeR.gain.value = 0;
}
function right () {
gainNodeL.gain.value = 0;
gainNodeR.gain.value = 1;
}
function center () {
gainNodeL.gain.value = 1;
gainNodeR.gain.value = 1;
}
请添加一个。添加一个示例请添加一个。添加一个示例它确实与振荡器节点一起工作,但源节点无法连接到2个节点,它会抛出一个exceptionHi@AlonDayan,您会得到哪个错误?在Firefox和Chrome中,用MediaElementSourceNode替换振荡器对我很有效。从理论上讲,可以将一个节点连接到任意多的其他节点。它可以与振荡器节点一起工作,但源节点无法连接到2个节点,它会抛出一个异常hi@AlonDayan,您会得到哪个错误?在Firefox和Chrome中,用MediaElementSourceNode替换振荡器对我很有效。理论上,可以将一个节点连接到任意多的其他节点。