使用Web Audio API可以输出8个以上的通道吗?

时间:2014-10-17 22:23:33

标签: macos audio web-audio

我正在尝试使用Web Audio API来控制多声道设置中交互式音乐的播放。到目前为止,我已经设法在我的12声道声卡上将多达8个振荡器的声音引导到8个不同的声道​​,但是一旦我尝试使用超过8个声道,突然所有声道都被静音。经过大量研究后,我还注意到audioContext.currentTime卡在接近零的值上。

这是我的MAC OSX 10.8.5的结果 谷歌Chrome版本39.0.2171.27 beta(64位) 和版本40.0.2192.0金丝雀(64位)。

Safari不允许我处理2个以上的频道 FireFox通过audioContext.destination.maxChannelCount查找我的12个频道但继续将我的声音发送到频道1& 2无论我是否尝试使用gain.connect(channelMerger, 0, i)将振荡器连接到更高的数字。

有没有人遇到类似的东西?有解决方法吗?

以下是代码:

var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioContext = new AudioContext();
var maxChannelCount = audioContext.destination.maxChannelCount;

// if set to max 8 it works fine in Chrome, but this line
// breaks the audio if the sound card has got more than 8 channels
audioContext.destination.channelCount = maxChannelCount; 
audioContext.destination.channelCountMode = "explicit";
audioContext.destination.channelInterpretation = "discrete";

var channelMerger = audioContext.createChannelMerger(maxChannelCount);
channelMerger.channelCount = 1;
channelMerger.channelCountMode = "explicit";
channelMerger.channelInterpretation = "discrete";
channelMerger.connect(audioContext.destination);

for(var i = 0; i < maxChannelCount; i++){
    var oscillator = audioContext.createOscillator();
    oscillator.connect(channelMerger, 0, i);
    oscillator.start(0);
}

1 个答案:

答案 0 :(得分:0)

我们尚未在Firefox中实施多渠道支持。它已经被优先考虑,将在接下来的两个季度的某个时刻发生,然后不久就会发布。