Raspberry Pi Zero 2 WからUSB経由でMIDIメッセージを送信し、 USB-UART変換モジュールFT232Rを介して音源IC SAM2695を制御する構成です。 使用する機器は次のとおりです。
接続経路は次のようになります。
FT232RのTXD端子とSAM2695のシリアル入力端子を接続します。また、両者のGNDを共通にします。
このプログラムは、ALSA MIDI Sequencerを利用してMIDIメッセージを受信し、受信したメッセージをUSB経由でFT232Rへ送信します。FT232Rは受信したデータをUART信号に変換し、SAM2695へ送ります。
ALSA MIDI Sequencerを使用しているため、外部のMIDI機器やアプリケーションとの接続も柔軟に行えます。
例えば、aconnect コマンドを使えば、USB接続したMIDIキーボードなどの入力ポートをプログラムに接続できます。また、pmidi を使えば、SMF(Standard MIDI File)を再生して、そのMIDIメッセージをプログラム経由でSAM2695に送ることができます。
このように、MIDIキーボードの演奏だけでなく、MIDIファイルの再生にも対応しています。
MIDI 1.0の通信速度は31,250 bpsです。このボーレートはLinuxの標準的なシリアル通信設定では直接指定できない場合があるため、 本プログラムではLinux固有の termios2 と BOTHER を利用して設定しています。これにより、FT232RからMIDI規格に準拠した31,250 bpsのUART信号を出力しています。