我正在尝试使用WebAudio API,并尝试构建一个分析器,用户可以与之交互,并最终打开和关闭音乐中的不同频率,以隔离曲目中的不同节拍,例如低音、踢鼓等。
我正在使用Canvas可视化频率数据,并希望用户能够突出显示可视化的某些部分,从而静音频率。
默认情况下,可视化将如此,并且用户将听到所有频率。
但是当用户选择几个条形图时,灰色区域将静音相关频率:
我的想法是是否可以反向工程频率数据数组,并基本上静音相关的频率?
** 更新 **
因此,我添加了几个类型为notch的biquadFilter,并调整它们的频率和Q值。这确实有助于隔离音乐中的一些部分,但不完全符合我的要求。这是我迄今为止使用的代码...
const audioContext = new window.AudioContext();
const source = audioContext.createMediaElementSource(element);
const biquadFilter1 = audioContext.createBiquadFilter();
const biquadFilter2 = audioContext.createBiquadFilter();
const biquadFilter3 = audioContext.createBiquadFilter();
const analyser = audioContext.createAnalyser();
biquadFilter1.connect(analyser);
biquadFilter2.connect(analyser);
biquadFilter3.connect(analyser);
source
.connect(biquadFilter1)
.connect(biquadFilter2)
.connect(biquadFilter3);
analyser.connect(audioContext.destination);
我不确定我是否正确设置了这个,但它确实允许我非常粗略地操作频率,但感觉这样做没有准确的科学依据。
我正在尝试的是否可能,如果可能的话,任何建议都将不胜感激 :)
Math.max.apply(0, arrData)
进行动态重新调整。 - dandavis