我正在尝试使用Web Audio API在多频道设置中控制交互式音乐播放.到目前为止,我设法将12声道声卡上的8个振荡器的声音指向8个不同的通道,但一旦我尝试使用8个以上的通道,突然间所有的通道都会被静音.经过大量的研究,我也注意到audioContext.currentTime被卡在接近零的值上.
这是MAC OSX 10.8.5的结果
Google Chrome版本39.0.2171.27 beta(64位)
和版本40.0.2192.0金丝雀(64位).
Safari不允许我处理超过2个频道
FireFox使用audioContext.destination.maxChannelCount找到我的12个频道,但是继续将我的声音路由到频道1& 2,无论我是否尝试通过gain.connect(channelMerger,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,i); oscillator.start(0); }
解决方法
我们还没有在Firefox中实现多渠道支持.这是一个优先事项,并将在接下来的两个季度的某个时候发生.