VRChatワールド内でMIDIコントローラーの入力を受け取り、Animatorのトリガーを発火させるギミックです。
ライブパフォーマンス・照明制御などのインタラクティブな演出が可能になります。
- MIDI入力対応 - VRCMidiListenerを使用したMIDI信号の受信
- ネットワーク同期 - 全プレイヤーにAnimator操作を同期
- コンボ入力 - 複数ボタンの同時押しによるトリガー発火
- 操作権限ロック - 特定プレイヤーのみ操作可能なロック機能
- JSON設定 - 外部JSONファイルによる柔軟なマッピング設定
- エディターツール - GUI操作でマッピング設定を作成
- Window > MIDI Pad Mapping でツールを開く
- 左ペインでAnimator選択(シーンから自動検出)
- 中央ペインにTriggerパラメータ一覧を表示
- TriggerをPADグリッドにドラッグ&ドロップ
- Export ボタンでJSON出力
- MeshRendererとColliderを持つGameObjectを用意
- Add Component > VRC Midi Listener を追加
- Active Events の NoteOn を有効化(青くなれば選択済み)
- Add Component > Midi Animator Driver を追加
- Config Json 欄にエクスポートしたJSONをドラッグ
- Collider の Is Trigger を有効化
- Add Component → VRC Midi Listener
- Midi Note On を ON
- Behaviour に MidiAnimatorDriver を設定
| フィールド | 説明 |
|---|---|
| Target Animators | 制御対象のAnimatorを登録 |
| Config Json | マッピング設定JSONファイル |
| Indicator Unlocked | フリー状態時に表示するオブジェクト |
| Indicator Locked | ロック状態時に表示するオブジェクト |
- Box Collider または Mesh Collider を追加
- Is Trigger を有効化
- Layer を
Walkthroughに設定(プレイヤーがすり抜け可能、Interact動作)
Note: Colliderを配置することで、プレイヤーがInteractしてロック/アンロックを切り替えられます。
Window > MIDI Pad Mapping
- 3ペインUI(Animator / Trigger / PADグリッド)
- Launchpad Mini MK3対応プリセット(Drum / User / Keys / Programmer)
- ドラッグ&ドロップでTrigger割り当て
- レイヤー機能(コンボ入力の定義)
- JSON Import / Export
- Undo / Redo 対応
- ⚠ 警告表示 - 名前に
[ ] { } " \などJSON問題文字が含まれる場合
- 左側のAnimators一覧からAnimatorを選択
- 中央のTriggers一覧に、選択したAnimatorのTriggerパラメータが表示
- パラメータを右側のPADグリッドにドラッグ&ドロップ
- + ボタンをクリックして新しいレイヤーを追加
- PADを右クリックしてコンテキストメニューを開く
- メニューからレイヤーを選択して割り当て
- Export: 現在のマッピング設定をJSONファイルとして出力
- Import: 以前エクスポートしたJSONファイルを読み込み、再編集
| 名前 | サイズ | 説明 |
|---|---|---|
| Drum Mode | 8×8 | 36-99 (左右2ブロック) |
| User Mode | 8×8 | Drum Modeと同じ |
| Keys Mode | 8×8 | ピアノ風配置 |
| Programmer Mode | 9×9 | 11-99 (行列=十の位・一の位) |
{
"midiChannel": 0,
"bindings": [
{ "note": 36, "animatorName": "Cube", "parameterName": "blue" }
],
"combos": [
{ "notes": [43, 36], "animatorName": "Cube", "parameterName": "layerBlue" }
],
"layerButtons": [
{ "notes": [99], "targetLayerIndex": 1 }
],
"layeredBindings": [
{ "LayerIndex": 1, "notes": [36], "animatorName": "Cube", "parameterName": "layerRed" }
]
}| フィールド | 説明 |
|---|---|
| midiChannel | MIDIチャンネル(0-15, 0=全チャンネル) |
| bindings | 通常バインディング(note → trigger) |
| combos | コンボ入力(複数ノート同時押し) |
| layerButtons | レイヤー切り替えボタン |
| layeredBindings | レイヤー別バインディング |
| 状態 | MIDI入力 | 表示 |
|---|---|---|
| フリー (-1) | 誰でも操作可能 | Indicator Unlocked |
| ロック中 | コントローラーのみ操作可能 | Indicator Locked |
操作: Colliderをクリック(Interact)でロック/アンロック切り替え
特別な設定は不要です。VRChatが自動的にデバイスを認識します。
VRChatの起動オプションで使用するデバイスを指定します。
- Steamのライブラリを開く
- VRChatを右クリック → プロパティ を選択
- 起動オプション 欄に以下を入力:
--midi=LPMiniMK3 MIDI
Tip: デバイス名は、Windowsのサウンド設定やMIDI設定で確認できます。
MidiAnimatorDriver/
├── Scripts/
│ └── MidiAnimatorDriver.cs # UdonSharp メインスクリプト
├── Editor/
│ ├── MidiAnimatorDriverEditor.cs # カスタムエディター
│ └── MidiPadMapping/
│ ├── Scripts/
│ │ ├── MidiPadMappingWindow.cs # エディターウィンドウ (メイン)
│ │ ├── MidiPadMappingWindow.Toolbar.cs # ツールバー操作
│ │ ├── MidiPadMappingWindow.AnimatorPanel.cs # Animator/Triggerリスト
│ │ ├── MidiPadMappingWindow.LayerPanel.cs # レイヤー管理
│ │ ├── MidiPadMappingWindow.PadGrid.cs # PADグリッドUI
│ │ ├── MidiPadMappingWindow.ImportExport.cs # JSON入出力
│ │ ├── MidiPadMappingData.cs # データモデル
│ │ ├── AnimatorAnalyzer.cs # シーン解析
│ │ └── PadPresets.cs # プリセット定義
│ ├── UXML/
│ │ └── MidiPadMappingWindow.uxml
│ └── USS/
│ └── MidiPadMappingWindow.uss
└── README.md
Note:
MidiPadMappingWindowは責務ごとに6つのpartialクラスファイルに分割されています。
- GameObjectに Animator コンポーネントがアタッチされているか確認
- Animator Controller に Trigger パラメータが定義されているか確認
- 名前に
[ ] { } " \などの特殊文字が含まれている場合は警告が表示されます
- VRC Midi Listener の NoteOn が有効になっているか確認
- MIDIデバイスがPCに正しく接続されているか確認
- 複数デバイスの場合は起動オプションで指定が必要
- Collider の Is Trigger が有効になっているか確認
- Layer が
Walkthroughに設定されているか確認
MIT License