0

我正在用 html5 开发音频混音器。要求是它应该具有以下控制。所有控件都将是简单的滑块,并且在幻灯片更改时控件的值将发生变化。

  1. 体积
  2. 音高校正
  3. 滤波器(高通和低通)
  4. 混响
  5. 高、中、低
  6. 速度

我了解如何实现#1,3,4。在#2 我有点困惑,我发现 HTML5 网络音频 API 中没有提供它,唯一的方法是使用 playBackRate。对此有任何意见吗?

No. 5 - 它似乎类似于高通和低通滤波器。#3 和 4 有什么区别?

No. 6 - 是否有任何控制来改变 Tempo?还是和 playBackRate 一样?

我对音乐术语一无所知,因此对于理解整体观点的任何帮助将不胜感激。

4

2 回答 2

4

我不知道该怎么说。“音高校正”是一个非常深奥的话题,不是你可以真正简化为单个滑块的东西;实现起来也相当复杂。

同样,节奏和混响是复杂的话题。这在很大程度上还取决于您的声源​​是什么。例如,您通常不会在混音器上设置“节奏”;它设置在某种音序器上,例如鼓机。

高通和低通滤波器在 Web Audio 中非常简单,但同样,这取决于您希望如何实现它们以及您希望提供哪些音乐控制。

使用 ConvolverNode 很容易实现混响,但同样有很多潜在的控制(例如,多大的房间/脉冲响应?)。

高/中/低控制非常简单——我在我的 wubwubwub DJ 混音器中使用了以下代码(http://github.com/cwilso/wubwubwub/):

    this.low = audioCtx.createBiquadFilter();
    this.low.type = "lowshelf";
    this.low.frequency.value = 320.0;
    this.low.gain.value = 0.0;
    this.low.connect( this.xfadeGain );

    this.mid = audioCtx.createBiquadFilter();
    this.mid.type = "peaking";
    this.mid.frequency.value = 1000.0;
    this.mid.Q.value = 0.5;
    this.mid.gain.value = 0.0;
    this.mid.connect( this.low );

    this.high = audioCtx.createBiquadFilter();
    this.high.type = "highshelf";
    this.high.frequency.value = 3200.0;
    this.high.gain.value = 0.0;
    this.high.connect( this.mid );
于 2013-10-29T07:15:50.823 回答
0

Mohayonao 的 timbre.js是一个非常简洁的库。它有高中低通滤波器、混响,并且“+”操作符充当内置混音器。

如果您想从音高校正开始,您可以阅读有关音高转换的这篇论文

还有Mixer.js也可以帮助您入门

于 2015-05-27T13:37:10.690 回答