【发布时间】:2018-02-05 03:17:52
【问题描述】:
我正在尝试使用 WebAudio API,并尝试构建一个分析器,用户可以与之交互并最终打开和关闭音乐中的不同频率,以隔离音轨中的不同节拍,即低音、底鼓等。
我正在使用 Canvas 可视化频率数据,并希望用户能够突出显示可视化的部分内容,并依次静音频率。
默认情况下,可视化看起来像这样,用户会听到所有频率。
但是当用户选择几个条时,灰色的会静音相关频率:
我的想法是我可以对频率数据数组进行逆向工程并从本质上使相关频率静音吗?
** 更新**
所以我一直在尝试添加几个biquadFilters 类型为notch,然后调整它们的频率和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);
我不确定我是否设置正确,但它确实允许我非常粗略地操纵频率,但感觉这样做没有准确的科学。
我正在尝试是否可行,如果是这样,任何建议都非常感谢:)
【问题讨论】:
-
你不能只是 [].slice() 画布绘图部分中的数据吗?如果需要,您可以
Math.max.apply(0, arrData)重新缩放它 JIT... -
是的,但这不会禁用它们所代表的音频频率