WebAudio - 独立的音频通道

时间:2013-12-04 09:12:58

标签: html5 html5-canvas web-audio

我有2个单独的音频文件,它们将通过WebAudio API播放。

一个包含背景音乐,并且将始终打开。 另一个包含语音,我的图形将对声音的音调做出反应。我有一些代码,它使用WebAudio.context和analyserNode以及dynamicNode来计算当前正在播放的声音文件的音高。

function init() {    
    this.context = ((Object)(createjs.WebAudioPlugin)).context;
    this.analyserNode = this.context.createAnalyser();
    this.analyserNode.fftSize = 32;
    this.analyserNode.smoothingTimeConstant = 0.7;
    this.analyserNode.connect(this.context.destination);

    this.dynamicsNode = ((Object)(createjs.WebAudioPlugin)).dynamicsCompressorNode;
    this.dynamicsNode.disconnect();
    this.dynamicsNode.connect(this.analyserNode);

    this.freqFloatData = new Float32Array(this.analyserNode.frequencyBinCount);
    this.freqByteData = new Uint8Array(this.analyserNode.frequencyBinCount);
}

function onUpdate() {
    this.analyserNode.getByteFrequencyData(this.freqByteData);
    // ---- do stuff with this.freqByteData[0]; ---- \\
}

但是,当我同时播放背景音乐和语音文件时,我只能将两种声音的音高检索为一个。

是否有可能通过WebAudio API从单个声音文件中获取音高,而多个正在播放?

1 个答案:

答案 0 :(得分:1)

如果你的意思是“我是否可以仅对音乐曲目应用均衡,并且让语音不受影响”答案是肯定的,肯定 - 均衡(和其他过滤)是内联效果,不需要应用全球。如果你的意思是“我的语音和音乐的源材料混合在一起,我可以将它们分开”,那么Ken是对的,这是一个更难的挑战。