2019/02/13 (2019年02月 のアーカイブ)
webaudio-macronodes
これは GitHub に置いてあるリポジトリの説明です。リポジトリ:webaudio-macronodes
Web Audio API のノードは全体的に機能の粒度が細かめで組み合わせの自由度は高いですが、反面何らかのエフェクターのようなものを構成するには複数のノードを組み合わせる必要があり、エフェクターの内部構造に関する知識を必要とします。
前回の記事で「[Web Audio API] 既存ノードを組み合わせたカスタムノードの作り方」というのを書いたのですが、これを使っていわゆるギターエフェクター的な機能を単一のノードにまとめる事ができます。
webaudio-macronodes は良くあるエフェクターのセットを Web Audio API のノードとして使えるようにまとめたものです。特長は、ノードの生成や接続、パラメータへのアクセスに関して、例えば GainNode や BiquadFilterNode のような通常の Web Audio API のノードとまったく同じ使い方ができる事です。
使い方
本体は webaudio-macronodes.js というファイルになるのでこれを読み込みます。GitHub pages から直接読み込むならば、次の行を HTML に追加します。<script src="https://g200kg.github.io/webaudio-macronodes/webaudio-macronodes.js"></script>
これによって webaudio-macronodes が持っている 10 個程度のエフェクトが使えるようになります。
ノードの生成
コンストラクタを使って生成します。audioContext.createGain() のようなファクトリメソッドはサポートしていません。 例えば、
toneControl = new Macro_ToneControlNode(audioContext);
また、作成時にパラメータの初期値を渡す事もできます:
toneControl = new Macro_ToneControlNode(audioContext, {bass:10, mid:0 treble:-3});
ノードの接続
通常のノードと同様に connect() メソッドで接続して行きます。このノードに対する接続が Web Audio API の通常のノードと同様に connect() メソッドを使う事でできるのが webaudio-macronodes の肝の部分です。例えば
sourceNode.connect(toneControl).connect(audioContext.destination);
パラメータへのアクセス
webaudio-macronodes の各ノードはそれぞれエフェクトのかかり方を調整するパラメータを持っています。これらのパラメータは基本的に AudioParam 型になっていますので、setValueAtTime() 等のオートメーション関数を使うなり、他のノードの信号を connect() するなり自由にアクセスできます。例えば
now = audioContext.currentTime;
toneControl.bass.setValueAtTime(0,now);
toneControl.bass.linearRampToValueAtTime(12,now+10);
エフェクトの一覧
パラメータが取る値の範囲等の詳細はリポジトリを見てください。リポジトリ : webaudio-macronodes
エフェクト | パラメータ | 説明 |
---|---|---|
Macro_ToneControlNode | treble mid bass | 高音/中音/低音のトーンコントロール |
Macro_GraphicEqNode | eq[] | 7 バンド・グラフィックイコライザー |
Macro_ChorusNode | rate depth | 一般的なコーラスエフェクト |
Macro_PhaserNode | rate depth | 一般的なフェイザーエフェクト |
Macro_DeepPhaserNode | rate depth resonance | フィードバック付きのフェイザーエフェクト |
Macro_DelayNode | delayTime feedback mix | 一般的なディレイエフェクト |
Macro_PingPongDelayNode | delayTime feedback mix | 左右チャンネルから交互に出るディレイエフェクト |
Macro_BitCrusherNode | bits | ビット深度を減少させるビットクラッシャーエフェクト |
Macro_OverDriveNode | drive level | サチュレーションによる歪みを付加するオーバードライブエフェクト |
Macro_FuzzNode | fuzz level | 倍音の強い歪みを付加するファズエフェクト |
Macro_AutoWahNode | frequency Q sense | 音の大きさでフィルターを変化させるオートワウエフェクト |
Posted by g200kg : 2019/02/13 08:50:46