VRCのMIDI
公式ドキュメント
https://docs.vrchat.com/docs/midi
設定方法
GameObjectにVRC MIDI Listenerをつける
同じオブジェクトにUdonSharpのスクリプトを付ける
Callbackが3つあるのでoverrideする
code:foo.cs
public override void MidiNoteOn(int channel, int number, int velocity)
{
Debug.Log($"Midi Note On {channel},{number},{velocity}");
}
public override void MidiNoteOff(int channel, int number, int velocity)
{
Debug.Log($"Midi Note Off {channel},{number},{velocity}");
}
public override void MidiControlChange(int channel, int number, int value)
{
Debug.Log($"Midi Control Change {channel},{number},{value}");
}
MIDIデバイスの認識
MIDIデバイスの認識はデフォルトでは一番最初のものを使うようになっているっぽい
Untiyエディタ
Unityエディタで確認するときはメニューのVRChat SDK -> Utilities -> Midiからデバイス指定できる
デバイス名の確認もできるので便利
クライアント
Steamの設定で起動コマンドで指定できる
--midi=nanoKONTROL2
--enable-debug-gui --enable-udon-debug-logging --midi=loopMIDI
デバッグもできるようにするならこんな感じ
注意点
UnityエディタがMidiデバイスを認識してしまうとVRChatクライアントが認識しないような気がする
SDKでのテストビルド時にも認識してくれない(別のMIDIデバイスを認識してそう)
ブラウザから起動する場合も駄目そう(きびしい)
仮想デバイスを使うこともできる
loopMIDI + RainbowKeyboard
https://qiita.com/gansaibow/items/47b0ec62042bd1984532
キーボード入力をRainbowKeyboardがMIDIに変換してloopMIDIに出力
VRCの起動コマンドを--midi=loopMIDIにしておけば、クライアントはloopMIDIを認識するはず
#VRChat