【问题标题】:Filtering web audio frequencies过滤网络音频频率
【发布时间】:2016-04-16 10:03:46
【问题描述】:

我正在通过 Tone.js 的 Player 播放 mp3 文件,我只需要播放该文件中的特定频率范围。这个范围是由用户动态选择的,用户应该能够在不停止播放的情况下改变它。同时 Tone.js 播放合成音符。目前,我正在使用带通/低通/高通滤波器,但据我了解,它们并没有严格削减选定范围之外的频率,而是平滑地降低它们的增益,如下图中的红线所示,我'已经在一些教程中找到。这是我的一段代码:

function applyLimits([min,max]) {
    minFreq = min > max ? Number.NEGATIVE_INFINITY : min;
    maxFreq = min > max ? Number.POSITIVE_INFINITY : max;
    if (mp3Player) {
        if (minFreq == Number.NEGATIVE_INFINITY && maxFreq == Number.POSITIVE_INFINITY) {
            if (mp3Filter) {
                mp3Filter.dispose();
                mp3Player.toMaster();
                mp3Filter = null;
            }
        }
        else {
            if (!mp3Filter) {
                mp3Player.disconnect();
                mp3Filter = new Tone.Filter();
                mp3Player.chain(mp3Filter, Tone.Master);
            }
            if (minFreq != Number.NEGATIVE_INFINITY && maxFreq != Number.POSITIVE_INFINITY) {
                let centerFrequency = Math.sqrt(maxFreq * minFreq);
                let q = centerFrequency / (maxFreq - minFreq);
                mp3Filter.set({frequency: centerFrequency, Q: q, type: 'bandpass', rolloff: -96});
            }
            else if (minFreq != Number.NEGATIVE_INFINITY) {
                mp3Filter.set({frequency: minFreq, Q: 1, type: 'highpass', rolloff: -96});
            }
            else {
                mp3Filter.set({frequency: maxFreq, Q: 1, type: 'lowpass', rolloff: -96});
            }
        }
    }
}

我需要的是绿线。查看 Tone.js 源代码,我可以看到 Tone.js 使用了级联双二阶滤波器。但是即使使用 10 个级联过滤器也会导致曲线,而不是精确切割。此外,根据该图,该范围内的频率也受到影响。

如何使用 Tone.js、Web Audio API 或任何其他 js 库来实现这样的效果?

【问题讨论】:

    标签: javascript web-audio-api


    【解决方案1】:

    绿线,如果它真的是垂直的,在物理上是无法实现的。您可以做的最好的事情是将一堆双二阶(小心地)级联在一起以产生近似值。或者使用 IIRFilterNode(如果可用)进行过滤。

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 2014-11-02
      • 1970-01-01
      • 2019-11-03
      • 2015-05-23
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多