Skip to content

VRChatWordのライブパフォーマンスや照明制御などをMIDデバイスででできるようにするギミック

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE.meta
Notifications You must be signed in to change notification settings

SmiSANN/MidiAnimatorDriver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIDI Animator Driver for VRChat

VRChatワールド内でMIDIコントローラーの入力を受け取り、Animatorのトリガーを発火させるギミックです。
ライブパフォーマンス・照明制御などのインタラクティブな演出が可能になります。

主な機能

  • MIDI入力対応 - VRCMidiListenerを使用したMIDI信号の受信
  • ネットワーク同期 - 全プレイヤーにAnimator操作を同期
  • コンボ入力 - 複数ボタンの同時押しによるトリガー発火
  • 操作権限ロック - 特定プレイヤーのみ操作可能なロック機能
  • JSON設定 - 外部JSONファイルによる柔軟なマッピング設定
  • エディターツール - GUI操作でマッピング設定を作成

クイックスタート

1. MIDI Pad Mapping ツールでマッピングを作成

  1. Window > MIDI Pad Mapping でツールを開く
  2. 左ペインでAnimator選択(シーンから自動検出)
  3. 中央ペインにTriggerパラメータ一覧を表示
  4. TriggerをPADグリッドにドラッグ&ドロップ
  5. Export ボタンでJSON出力

2. ワールドにセットアップ

  1. MeshRendererとColliderを持つGameObjectを用意
  2. Add Component > VRC Midi Listener を追加
    • Active Events の NoteOn を有効化(青くなれば選択済み)
  3. Add Component > Midi Animator Driver を追加
  4. Config Json 欄にエクスポートしたJSONをドラッグ
  5. ColliderIs Trigger を有効化

セットアップ詳細

VRC MIDI Listener

  1. Add Component → VRC Midi Listener
  2. Midi Note On を ON
  3. Behaviour に MidiAnimatorDriver を設定

MidiAnimatorDriver コンポーネント

フィールド 説明
Target Animators 制御対象のAnimatorを登録
Config Json マッピング設定JSONファイル
Indicator Unlocked フリー状態時に表示するオブジェクト
Indicator Locked ロック状態時に表示するオブジェクト

Collider(操作権限ロック用)

  1. Box Collider または Mesh Collider を追加
  2. Is Trigger を有効化
  3. Layer を Walkthrough に設定(プレイヤーがすり抜け可能、Interact動作)

Note: Colliderを配置することで、プレイヤーがInteractしてロック/アンロックを切り替えられます。


MIDI Pad Mapping Editor Tool

開き方

Window > MIDI Pad Mapping

機能

  • 3ペインUI(Animator / Trigger / PADグリッド)
  • Launchpad Mini MK3対応プリセット(Drum / User / Keys / Programmer)
  • ドラッグ&ドロップでTrigger割り当て
  • レイヤー機能(コンボ入力の定義)
  • JSON Import / Export
  • Undo / Redo 対応
  • ⚠ 警告表示 - 名前に [ ] { } " \ などJSON問題文字が含まれる場合

操作方法

パラメーターの割り当て

  1. 左側のAnimators一覧からAnimatorを選択
  2. 中央のTriggers一覧に、選択したAnimatorのTriggerパラメータが表示
  3. パラメータを右側のPADグリッドにドラッグ&ドロップ

レイヤーの追加と割り当て

  1. + ボタンをクリックして新しいレイヤーを追加
  2. PADを右クリックしてコンテキストメニューを開く
  3. メニューからレイヤーを選択して割り当て

エクスポートとインポート

  • 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 (行列=十の位・一の位)

JSON構造

{
  "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)でロック/アンロック切り替え


MIDIデバイスの接続

単体デバイスの場合

特別な設定は不要です。VRChatが自動的にデバイスを認識します。

複数デバイスの場合

VRChatの起動オプションで使用するデバイスを指定します。

  1. Steamのライブラリを開く
  2. VRChatを右クリック → プロパティ を選択
  3. 起動オプション 欄に以下を入力:
--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クラスファイルに分割されています。


トラブルシューティング

Animatorが認識されない

  • GameObjectに Animator コンポーネントがアタッチされているか確認
  • Animator Controller に Trigger パラメータが定義されているか確認
  • 名前に [ ] { } " \ などの特殊文字が含まれている場合は警告が表示されます

MIDI入力が反応しない

  • VRC Midi Listener の NoteOn が有効になっているか確認
  • MIDIデバイスがPCに正しく接続されているか確認
  • 複数デバイスの場合は起動オプションで指定が必要

ロック機能が動作しない

  • Collider の Is Trigger が有効になっているか確認
  • Layer が Walkthrough に設定されているか確認

ライセンス

MIT License

About

VRChatWordのライブパフォーマンスや照明制御などをMIDデバイスででできるようにするギミック

Resources

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE.meta

Stars

Watchers

Forks

Packages

No packages published

Languages