Raspberry Pi Zero 2 WからSAM2695を鳴らす


システム構成

Raspberry Pi Zero 2 WからUSB経由でMIDIメッセージを送信し、 USB-UART変換モジュールFT232Rを介して音源IC SAM2695を制御する構成です。 使用する機器は次のとおりです。

  • Raspberry Pi Zero 2 W:MIDIメッセージを生成・送信するコンピューター
  • USB-HUB:Raspberry Piと、MIDI鍵盤やMIDI音源、USB-UART変換モジュールなど複数機器を接続
  • FT232R:USBシリアル変換モジュール。USBから受信したデータをUART信号に変換
  • SAM2695:MIDIメッセージを受信して音を生成する音源IC、 ここではM5Stack用MIDI音源ユニットを使用

接続構成

接続経路は次のようになります。

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の通信速度について

MIDI 1.0の通信速度は31,250 bpsです。このボーレートはLinuxの標準的なシリアル通信設定では直接指定できない場合があるため、 本プログラムではLinux固有の termios2 と BOTHER を利用して設定しています。これにより、FT232RからMIDI規格に準拠した31,250 bpsのUART信号を出力しています。

  • >ボーレート:31,250 bps
  • データビット:8 bit
  • パリティ:なし
  • ストップビット:1 bit(8N1)