Web Audio APIのモジュラー接続デモを作ってみる(7)

公開:2015-10-29 21:55
更新:2020-02-15 04:37
カテゴリ:web audio api,javascript,html5,audio,webaudiomodular

今日はエンベロープ・ジェネレータ(EG)を作ろうと、少し設計を考えて軽く実装し始めたところ。 EGはアナログシンセではほぼ必須の機能である。これがないと楽音のシミュレーションができない。

https://68.media.tumblr.com/5375582dd5e50001a64256b7f129dc64/tumblr_nwzf2gSXsX1s44dwzo1_1280.png

上図は典型的なADSRタイプのEGのパラメータを説明するものである。アンプに対してのEGの動きを説明すると、

  1. キーオンでEG発動。
  2. まずアタックレートの時間で最大音量まで音量を上げる。
  3. 次にディケイレートの時間でサスティンレベルまで音量を下げる。
  4. キーオフまでサスティンレベルの音量で持続。
  5. キーオフでリリースレートの時間で0まで音量を下げる。

である。EGはフィルタにも使うことが多い。

Web Audio APIはEGを持っていないので、ソフトウェアでシミュレーションしなければならない。通常なら揺らぎのあるタイマーしかないブラウザ環境ではタイミングの維持が非常に難しいが、Web Audio APIのパラメータは

とかが可能で、時間管理をAPIに任せることができる。EGを実装するのに非常に有効である。

なのでEGはGainノードのgainパラメータをうまくコントロールすれば比較的簡単に実装できるのである。

EGのキーオン・キーオフのコントロールはシーケンサーで行うつもりなので、そのあたりの設計もある程度考えておかないといけない。やはり普通のオーディオ・ルーティングに含めるのは無理があるので、別系統でルーティングするようにしないといけないなと思っている。

詳細は実装しながら考えることにする。