VRChatにMIDIを送信する(調査)01
VRChatで、ローカルPCからワールドにMIDIで信号を送るにあたって、必要そうな技術の忘備録
アプリから出力するMIDIをループバックして、ローカルPCに入力するツール
loopMIDI
http://www.tobias-erichsen.de/software/loopmidi.html
loopMIDIでつなぐ
https://webmidiaudio.com/npage501.html
PCからMIDIデバイスとして信号を出力するPythonライブラリ
pygame.midiでつくる仮想キーボード ①下準備〜MIDI入力の確認・信号の送信
https://qiita.com/Karakuri_Polta/items/dc9aaa5aa6bb901b3439
Python テストコード
(上記の記事のコードを無限ループにしただけの、お行儀の悪いコードです。)
import pygame.midi as m import time def main(): m.init() i_num = m.get_count() for i in range(i_num): print(i) print(m.get_device_info(i)) midiout = m.Output(3) #直前のMIDIポート一覧から仮想デバイスのポート(自分の環境では「IAC Driver My Port」)のIDを確認して、その数値にしてください while True: midiout.note_on(60,100) print("note_on(60,100)") time.sleep(1) midiout.note_off(60) print("note_off(60)") midiout.note_on(64,100) print("note_on(64,100)") time.sleep(1) midiout.note_off(64) print("note_off(64)") midiout.note_on(67,100) print("note_on(67,100)") time.sleep(1) midiout.note_off(67) print("note_off(67)") time.sleep(1) midiout.note_on(60,100) print("note_off(60)") midiout.note_on(64,100) print("note_off(64)") midiout.note_on(67,100) print("note_off(67)") time.sleep(1) midiout.note_off(60,100) print("note_off(60,100)") midiout.note_off(64,100) print("note_off(64,100)") midiout.note_off(67,100) print("note_off(67,100)") midiout.close() m.quit() exit() if __name__=="__main__": main()
実行結果

受信テスト
https://mikatahara.github.io/SendReceive/

これでVRChatにMIDIの信号を送るテストは出来そう。
というわけで、Voxel Keiさんのワールドを借りて実験、VRChatに流し込むところまでうまくいってますね。
VoxelKeiさんのワールドを借りて実験!
— みっちー@メタバース・ロボット部 (@Dream_Drive) February 1, 2022
外部からpythonで送ったMIDIの信号が、ちゃんとVRChatのワールドに届いていることが確認できましたー! 次はUdon側の受信プログラム作らなきゃー。 #VRChat #MIDI pic.twitter.com/QGtDbU95lD
次は、UdonでMIDIを受信するテストですね。 >> 続く
コメントを残す