【问题标题】:How to distort just a specific frequency range using javascript web audio?如何使用javascript网络音频扭曲特定的频率范围?
【发布时间】:2017-03-25 18:56:19
【问题描述】:

我有一个基于个人听力图 (http://howdeaf.com) 模拟耳聋的小型网络应用。从本质上讲,它是:

source -> 2-ch splitter -> 6 inline frequency separators -> merge node -> destination -> 6 inline frequency separators ->

频率分隔符是使用以下代码创建的:

for (let i = 0; i < bandSplit.length; i++) {
    for (let j in sides) {
        var side = sides[j];
        let filterNode = context.createBiquadFilter();
        filterNode.frequency.value = bandSplit[i];
        if (i === 0)
            filterNode.type = 'lowshelf';
        else if (i === bandSplit.length - 1)
            filterNode.type = 'highshelf';
        else
            filterNode.type = 'peaking';
        filterNode.gain.value = 0.0;

        this.eqNodes[side].push(filterNode);

        if (i > 0)
            this.eqNodes[side][i - 1].connect(this.eqNodes[side][i]);
    }
}

我调整了 12 个频率分离器节点中的每一个节点的增益,这是一个非常简洁的模拟。

我想分别使用不同的曲线值向这 12 个双二阶滤波器节点中的每一个添加失真(使用 createWaveShaper()),但我没有成功仅对单个频率进行失真。我创建的任何失真节点都会影响该通道的整个音频输出。

有什么方法可以单独对这些频率选择节点应用失真?

【问题讨论】:

  • 你把 WaveShaper 节点放在哪里了?
  • @RaymondToy 我尝试将 WaveShaper 连接到每个双二阶节点,但这显然是错误的;它塑造了所有通过的声音,而不仅仅是双二阶滤波器的目标频率。然后我将它们并行重新排列,而不是串联,源 -> 分离器 -> [biquad -> 波形整形器] -> 合并 -> 目的地([那些]中的 12 个,每个通道 6 个)但这也不起作用跨度>

标签: javascript audio html5-audio web-audio-api


【解决方案1】:

除了两个过滤器之外,所有过滤器都是增益为 0 的峰值过滤器。这基本上可以让所有东西都通过。因此,您应用的任何波形整形都会应用于整个频带。 (例如,请参阅http://googlechrome.github.io/web-audio-samples/samples/audio/mag-phase.html 以获取响应图表。)

考虑使用不同种类的滤波器,例如带通滤波器。这可能不适合您的应用,但至少这些滤波器不会让所有频率都通过。

【讨论】:

  • 无论如何我都不是音频工程师,所以我确定我做错了什么。起初,我想独立调整每个频率范围的增益。我的设置实现了这一点,但也许它是笨拙的。你有更清洁的方法吗?第二个目标是再次独立地为每个频率范围添加失真。一组并行的带通滤波器会允许这样做吗?
  • 是的,一组并行的带通滤波器将在一定程度上允许这样做。您必须仔细选择带宽和中心频率,以使结果基本平坦。不知道这有多容易。然后您可以在每个输出上应用失真。但是,滤波器并不完美,因此频率上会有一些重叠,因此一些失真会溢出到其他频段。
  • 我阅读了“Q 值”并查看了几张图表,所以我想我明白您所说的“重叠”是什么意思,我认为这将是最小且可以接受的(如果这些图表是准确,我的 Q 做得对)。如果可行,我将对其进行测试并发布结果代码。感谢您的提示。
  • 请做。我想看看它是怎么回事,因为我从来没有这样做过。
猜你喜欢
  • 2012-01-31
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多