会場の音に反応させる(AudioReactive)

AIと読む
全ドキュメントを1ファイルで(llms-full.txt)

「音に合わせて映像を動かす」と聞くと難しそうですが、やることは1つだけです。 AudioReactive ノードが音を数字に変えてくれるので、それを動かしたいところへ挿す。 これだけです。

このページでは、実際に使っている繋ぎ方を簡単な順に4つ紹介します。 1〜3が分かれば十分実戦で使えます。

1. まず音を取り込む

AudioReactive ノードを置いて、Device で音の入り口を選びます。

AudioReactive ノード

Device のドロップダウンには、OSが認識している入力デバイスがそのまま並びます。 マイクで会場の音を拾ってもいいですし、ループバックデバイス(macOS の BlackHole など)を入れていれば、PCで鳴らしている音を直接渡すこともできます。 上の図は BlackHole 2ch を選んだ状態です。

出力は6本あります。

出力中身
Out音全体の大きさ(0〜1)
Bass低域の大きさ。キックやベースがここに出ます
Mid中域の大きさ
Treble高域の大きさ。ハイハットなど
Onset音色が変化した瞬間に発火するトリガー(自動検出)
Hit音の大きさがしきい値を超えた瞬間に発火するトリガー

このページで使うのは BassHit の2本だけです。 Hit のしきい値は、ノード上のメーターを直接ドラッグして決めます(既定 0.6)。 現場で「ここで反応してほしい」という位置まで動かしてください。

各パラメータの詳しい意味は AudioReactive のノードリファレンスを参照してください。

音からBPMは検出されません。 AudioReactive が見ているのは「今どれくらい鳴っているか」だけです。 テンポで刻みたい場合は 音楽に合わせる(Beat Sync) を参照してください。

2. 大きな音でフェーダーを上げる

一番分かりやすいのがこれです。上に重ねたレイヤーの不透明度を、音に合わせて自動で上げ下げします。

AudioReactive [Hit] → Curve [Trig] … Curve [Out] → LayerOpacity [In]

Hit を Curve 経由で LayerOpacity へ

やっていることは、手でフェーダーを上げ下げする動作の自動化です。

  • Hit が発火する = 大きい音が鳴った
  • それを CurveTrig に挿すと、カーブを頭から1回再生します
  • その出力を LayerOpacity に挿すと、Layer_1 の不透明度がカーブの形どおりに動きます

Hit を直接 LayerOpacity に挿さないのがポイントです。 Hit は「鳴った瞬間」しか出ないので、そのまま挿してもパッと点いて終わりです。 間に Curve を挟むことで、立ち上がって、少し保って、戻るという形を作れます。図では上に凸のカーブにして、フェードイン → キープ → フェードアウトにしています。

Curve の Time(図では 1.0 秒)が、その1回分の長さです。短くすればチカッと、長くすればふわっとした動きになります。

3. 低音でエフェクトの強さを変える

こちらはもっと単純で、繋ぐだけです。

AudioReactive [Bass] → UV_XCutting [_Value]

Bass を UV_XCutting の _Value へ

Bass は常に「今の低音の大きさ」を出し続けているので、それをエフェクトのパラメータに挿すと、低音が鳴っている間だけエフェクトが強くかかります。

挿し先は UV_XCutting でなくても構いません。エフェクトの数値パラメータならどれでも同じように動きます。 かかりが強すぎる・弱すぎるときは、間に MultiplyRemap を挟んで幅を調整してください。

キックで揺らしたいなら Bass、ハイハットで細かく動かしたいなら Treble というふうに、帯域を選べるのがこのノードの便利なところです。

4. 4拍ごとにエフェクトをON/OFFする

ここはあえてややこしいことをしています。飛ばしても大丈夫です。 1〜3だけでも十分に音に反応する映像は作れます。

やりたいのは「4回に2回だけエフェクトをONにする」、つまり拍でエフェクトを切り替える自動化です。

AudioReactive [Hit] → Counter → Modulo → Minus → Toggle → UV_XCutting [Enable]

Counter から Toggle までの連結

1ノードずつ追います。

ノードやること出てくる値
CounterHit が来るたびに数える0, 1, 2, 3, 4, 5 …
Moduloそれを 4 で割った余りにする0, 1, 2, 3, 0, 1 …
Minus1 を引く-1, 0, 1, 2, -1, 0 …
Toggle値を ON / OFF に変換OFF, OFF, ON, ON …

要は Modulo が「4拍子」を作っています。 4 で余りを出すと 0〜3 がひたすら繰り返されるので、これで拍を数えられます。

そこから 1 を引いて -1〜2 にすると、Toggle では -1 と 0 が OFF、1 と 2 が ON になります。結果として 4回のうち半分がON、半分がOFF。これを UV_XCutting の Enable に挿せば、エフェクトが拍で切り替わります。

Modulo の B を 8 にすれば8拍周期になります。ONとOFFの比率を変えたいときは MinusB をいじってください。

CounterMax は Modulo の値の倍数から1引いた数にしてください。 図では Max が既定の 100 のままですが、100 は 4 の倍数ではないので、 100 から 0 に回り込む瞬間だけ 0 が2回続き、拍が1つズレます。 4拍で回すなら Max を 3(Modulo 自体が不要になります)、 8拍なら 7 にしておくとズレません。

関連

このページへのリンク

同じページを参照しているページ