VideoSender
DAW-to-Video Parameter Bridge VST3 Plugin
DAWのパラメーター(float値・トグル・BPM・MIDI)をRGBピクセルにエンコードし、
Spout2経由でリアルタイムに映像ストリームとして送信するVST3プラグインです。
DRAW TOKYO 2026ライブのためだけに制作しました。
Ableton LiveとUnity(VJ)の間でデータを共有するため、
MIDIやOSCではなく映像という経路を選んだことがこのプラグインの核心です。
なぜ映像で送るのか
OSCやMIDIによるネットワーク送信と比べたときの利点:
- 同期が確実:DAWのオーディオバッファと映像フレームが同期する
- チャンネル数が多い:32ch(うち12chが汎用パラメーター)
- 特別なネットワーク設定が不要:Spout2はPC内共有、HDMIは物理線1本
出力仕様
出力フレームは 1920×1080px・RGBA 8bit。 データが入っているのは 左上の 512×64px だけです。残りは全て黒。
1920×1080 フレーム ┌─────────────────────────────────────────────┐ │ ←── 512px ──→ │ │ │ ┌────────────┐ │ │ │ │ データ │ 64px │ │ └────────────┘ │ (残りは全部黒) │ │ │ │ └─────────────────────────────────────────────┘ ↑ここだけ読む(x=0〜511, y=0〜63)
X軸がチャンネルに対応し、チャンネル幅は16px(全32ch × 16px = 512px)です。
Y軸は全行同じ値が繰り返されます。読む際は y=32(中央)が安定します。
チャンネルマッピング
| ch | X座標 | 内容 | エンコード |
|---|---|---|---|
| ch0〜ch11 | x=0〜191 | 汎用 float(0.0〜1.0) | グレースケール(R=G=B) |
| ch12 | x=192〜207 | BPM(0〜300) | グレースケール |
| ch13 | x=208〜223 | Beat Flash | y=0行のみ R=255 → 次フレームで 0 |
| ch14 | x=224〜239 | MIDI ch1 トリガー | NoteOn中=白、NoteOff後=黒 |
| ch15 | x=240〜255 | MIDI ch1 音程 | R=G=B = noteNumber × 2 |
| ch16 | x=256〜271 | MIDI ch2 トリガー | 〃 |
| ch17 | x=272〜287 | MIDI ch2 音程 | 〃 |
| ch18 | x=288〜303 | MIDI ch3 トリガー | 〃 |
| ch19 | x=304〜319 | MIDI ch3 音程 | 〃 |
| ch20 | x=320〜335 | MIDI ch4 トリガー | 〃 |
| ch21 | x=336〜351 | MIDI ch4 音程 | 〃 |
| ch22〜ch31 | x=352〜511 | 予約(黒) | — |
値のエンコーディング
-
汎用 float(ch0〜ch11):R = G = B = (uint8)(value × 255)。グレースケール。
Unity側はpixel.r(0.0〜1.0)を読むだけで復元できます。 -
BPM(ch12):R = G = B = (uint8)(bpm / 300 × 255)。
Unity側はpixel.r × 300で実BPMを復元。 - Beat Flash(ch13, y=0行):ビートの頭で R=255、次フレームで R=0。エッジ検出でタイミングを取ります。
- MIDIトリガー(ch14/16/18/20):NoteOn中=白(R=G=B=255)、NoteOff後=黒。
-
MIDI音程(ch15/17/19/21):R = G = B = noteNumber × 2(0〜127 → 0〜254)。
Unity側はpixel.r × 255 ÷ 2でノートナンバーを復元。
接続方法
Spout2(PC内・推奨)
VideoSender プラグイン → Spout送信(名前: "VideoSender") Unity 側: Klak Spout パッケージで受信
HDMI(物理出力)
プラグイン UI の「HDMI Output」ボタン → 2画面目にフルスクリーン表示 → AJA U-TAP HDMI → USB 3.0 → Unity がウェブカメラとして認識(WebCamTexture)
DRAW TOKYO 2026 での使い方
本番では ch0〜ch3 と ch12 に yoxtretch のパラメーターを、 ch14〜ch21 にドラムマシン/シーケンサーからのMIDI信号を割り当てました。
| ch | yoxtretchパラメーター |
|---|---|
| ch0 | TRIGGER(グラニュラー処理のON/OFF) |
| ch1 | Ratio(タイムストレッチ倍率 1〜12×) |
| ch2 | GrainSize(512〜16384 smp) |
| ch3 | HOLD(グレイン位置フリーズ) |
| ch12 | BPM(DAWのテンポをそのまま送信) |
| ch14〜ch21 | Kick / Snare / Break / Melody(MIDI ch1〜4) |
動作環境
- 形式:VST3
- 対応OS:Windows 11
- ビルド:JUCE 7.x + CMake 3.22 以上 + Visual Studio 2022
- Spout2受信側:Klak Spout(Unity)
- HDMI受信側:AJA U-TAP HDMI + WebCamTexture(Unity)