RSS Twitter Facebook

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_ToneControlNodetreble
mid
bass
高音/中音/低音のトーンコントロール
Macro_GraphicEqNodeeq[]7 バンド・グラフィックイコライザー
Macro_ChorusNoderate
depth
一般的なコーラスエフェクト
Macro_PhaserNoderate
depth
一般的なフェイザーエフェクト
Macro_DeepPhaserNoderate
depth
resonance
フィードバック付きのフェイザーエフェクト
Macro_DelayNodedelayTime
feedback
mix
一般的なディレイエフェクト
Macro_PingPongDelayNodedelayTime
feedback
mix
左右チャンネルから交互に出るディレイエフェクト
Macro_BitCrusherNodebitsビット深度を減少させるビットクラッシャーエフェクト
Macro_OverDriveNodedrive
level
サチュレーションによる歪みを付加するオーバードライブエフェクト
Macro_FuzzNodefuzz
level
倍音の強い歪みを付加するファズエフェクト
Macro_AutoWahNodefrequency
Q
sense
音の大きさでフィルターを変化させるオートワウエフェクト

Posted by g200kg : 2019/02/13 08:50:46