在HTML5中构建音频混音器

时间:2013-10-29 06:05:46

标签: javascript html5 audio web-audio

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

  1. 音高修正
  2. 过滤器(高通和低通)
  3. 混响
  4. 高,中,低
  5. 速度
  6. 我理解如何实施#1,3,4。在#2我有点困惑,我发现它没有在HTML5网络音频API中提供,唯一的方法是使用playBackRate。对此有任何意见吗?

    没有。 5 - 它似乎与High&低通滤波器。 #3&和#3之间有什么区别? 4?

    没有。 6 - 有改变速度的控制吗?或者它与playBackRate相同?

    我对音乐术语一无所知,因此理解整体观点的任何帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:3)

我不知道怎么说这个。 “音高校正”是一个非常深刻的话题,而不是你可以真正减少到单个滑块的东西;实施它也很复杂。

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

高通和低通滤波器在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 );

答案 1 :(得分:0)

Mohayonao's timbre.js是一个非常整洁的库。 它有高中低通滤波器,混响,“+”运算符作为内置混音器。

如果你想开始音高修正,你可以read this paper on pitch shifting

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