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を受信するテストですね。 >> 続く
コメントを残す