久しぶりにパケットキャプチャWireSharkの出番です。
いつもはイーサネットでしたが、今回ははじめてUSBで接続されているMIDIデータ通信についてキャプチャしてみました。
きっかけは、ZOOMのマルチエフェクタをMIDIで制御しているサイトをいくつかあったことから、所有しているB1 Fourでもできるかどうか試してみたかったからです。ZOOMのマルチエフェクタは、GuiarLabというアプリケーションとUSB接続して制御できるのですが、MIDIの仕様が非公開のため自前で制御することができません。
そこでこのGuiarLabでパラメータ変更しているときにパケットキャプチャをして、自前アプリで制御することを試みました。
たくさんのパケットを送受信していますのて、まずはsysexでフィルタして、アプリからの送信部分だけ抽出して傾向を解析しました。
いろいろと送られていますが、15バイトのパケットのみが有効そうだったので、これをプログラムで送出してみます。
環境: python-rtmidi 1.4.1 / Python 3.7.7 / Windows 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import time import rtmidi midiout = rtmidi.MidiOut() available_ports = midiout.get_ports() print(available_ports) midiout.open_port(2) control = [0xf0, 0x52, 0, 0x6e, 0x64, 0x03, 0, 0, 0x05, 70, 0, 0, 0, 0, 0xf7]; midiout.send_message(control) del midiout |
OUTPUTが70になることを確認できました。
この調子でいろいろと調べていけば、目的の制御ができそうです。
これを真似する方は、くれぐれも自己責任で。
手順の補足)
1) GutarLabとB1Fourを接続してEDITORモードに入る
2) 1-1 MX Cleanパッチを選び、OUTPUTノブを操作しながら、キャプチャする
3) GutarLabを終了する
4) Pythonプログラムを実行する(B1FourはEDIT画面に。値がかわることを確認)
5) もう一度GutarLabを起動し結果を確認(実物の写真を撮り忘れたので、アプリケーションのスクリーンショットでかわり)