我有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从单个声音文件中获取音高,而多个正在播放?
答案 0 :(得分:1)
如果你的意思是“我是否可以仅对音乐曲目应用均衡,并且让语音不受影响”答案是肯定的,肯定 - 均衡(和其他过滤)是内联效果,不需要应用全球。如果你的意思是“我的语音和音乐的源材料混合在一起,我可以将它们分开”,那么Ken是对的,这是一个更难的挑战。