Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web音频API将单声道分割为立体声_Javascript_Web Audio Api - Fatal编程技术网

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替换振荡器对我很有效。理论上,可以将一个节点连接到任意多的其他节点。