MIDIメッセージの受信とフォーマットの解析

ラズパイに接続したUSB-MIDI機器をつなぐのは前回やりましたが、できれば

FC-50を踏むと

  • その番号を読み取ってGP-10のプログラムを変更
  • 同時にポケット・ミクのプログラム番号も変更

ギターの後ろでミクの声とかシンセの音がユニゾンでなったり、なんてことをしたいので、FC-50のプログラム番号を単純に転送するのではなく、番号を読み取って自由に制御したい。

ということで、まずはFC-50を踏んだときのMIDIメッセージの受信して中身の解析を行います。

 

データの受信は以下のコマンドで収集できます。

pi@raspberrypi:~ $ arecordmidi -p UM-1G test.mid

UM-1Gポートから受信したメッセージをtest.midというファイル名で保存します。

このコマンドを入力してからCtrl+cで停止するまでデータを受信し続けます。

ファイル形式はスタンダードMIDIファイルです。

バイナリエディタで開くとこんな感じになります。

f:id:tsukamasaki:20190221161735j:plain

プログラムチェンジメッセージ

詳しくはネットで調べてもらうとして、3段目の「c009」がプログラムチェンジ(音色10)のデータです。

この数値を読み取れば何番のスイッチを押したのかわかるんですけど、スタンダードMIDIファイルは結構複雑で、受信している時間やタイミングなどでデータの位置は都度変化するので、毎回同じ条件でデータを受信する方法が必要になります。

 

とりあえずはここまで。