Raspberry Piを楽器、キーボード、PCとMIDIでつなぐ方法を場合分けしてまとめてみました。
ここでは、説明のために手持ちのRaspberry Pi 2 model Bを使います。OSはここから、Raspberry Pi OS (32-bit) with desktopをダウンロードしてインストールしました。インストールはいろいろ紹介されているページ、例えば、ここなど、がありますので参照してください。
Raspberry Piを音源にするために、ソフトシンセfluidsynthをインストールします。Consoleを開いて、以下のコマンドを入力します。
> sudo apt install fluidsynth
続行しますか?と聞かれますので、Yを入力します。音のデータ(サウンドフォント)がインストールされているかどうかを確認します。GM用の音ネタ、FluidR3_GM.sf2がインストールされていればOKです。
>ls /usr/share/sounds/sf2
もし、GMの音ネタが入っていなければ、以下のコマンドでインストールすることができます。
>sudo apt-get install fluid-soundfont-gm
GS用の音ネタFluidR3_GM.sf2は以下のコマンドでインストールできます。
>sudo apt-get install fluid-soundfont-gs
USBのキーボードは、そのままUSB端子に接続します。下の写真は、KORGのnanoKey2をつないでいます。
キーボードがつながっていることは、次のコマンドで確認することができます。hw:1.0.0にnanoKey2がつながっています。この、hw:1.0.0は覚えておきます。
>> amidi -l
鍵盤を弾いて、音を出すには以下のようにコマンドを打ち込みます。これで鍵盤を弾くと音が出ます。挿しているイヤフォンから音が出ます。
> fluidsynth -s -a alsa -m alsa_raw -g 0.4 -o midi.alsa.device=hw:1,0,0 /usr/share/sounds/sf2/FluidR3_GM.sf2
MIDI File(filename.mid)を再生するのは、以下のコマンドを打ち込みます。
> fluidsynth -a alsa -n -i -g 0.4 /usr/share/sounds/sf2/FluidR3_GM.sf2 filename.mid
USB-MIDI変換ケーブル、手持ちのモノを つないでみました。リーズナブルなケーブルですが、難なくRaspberry Piから認識することができました。
> pi@raspberrypi:~ $ amidi -l Dir Device Name IO hw:1,0,0 USB MIDI Interface MIDI 1
> pi@raspberrypi:~ $ amidi -l Dir Device Name IO hw:1,0,0 CH345 MIDI 1
MIDIをモニターしてみるには、以下のコマンドを入力します。
pi@raspberrypi:~ $ amidi -d -p hw:1,0,0 90 35 66 80 35 40 90 35 32 80 35 40 90 37 2F
MIDIを送信する場合は、以下の書式を入力します。
pi@raspberrypi:~ $ amidi -S'90 35 66 80 35 40' -p hw:1,0,0
amidiの説明はこちらにあります。
Raspberry Piに搭載しているChromium v.78はWeb MIDI APIを使うことができます。 fluidsynthを音源として使います。fluidsynthをポートとして立ち上げます。
> fluidsynth -s -a alsa -m alsa_seq -i /usr/share/sounds/sf2/FluidR3_GM.sf2
Chromemでこちらのページを開きます。
MIDI Outを、Synth input portを選択します。その後、Pushを押してみて下さい。音が出るはずです。
Raspberry Pi に学研、大人の科学のポケット・ミク( NSX-39 ) を接続します。といっても接続するだけです。上に書いたnanoKEY2も一緒に接続しています。
amidi コマンドで確認すると、以下のように接続されていることがわかります。
> pi@raspberrypi:~ $ amidi -l Dir Device Name IO hw:0,0,0 NSX-39 MIDI 1 IO hw:1,0,0 nanoKEY2 MIDI 1
もし、「NSX-39 MIDI」が表示されていない場合が、USBケーブルが悪いのかもしれません。(私の場合はそうでした。)USBケーブルをちゃんと購入したものに取り換えると良いかもしれません。
テキストデータを送って、ちゃんと動作するかどうかを確認します。 Text to NSX-39を使います。このWebアプリはRaspberry PiのChromeで動作します。まず、ポケット・ミクをNSX-1モードにします。ポケット・ミクの3つのボタン[▲]+[▼]+[U]を同時押すとNSX-1モードになります。このモードで無いと、MIDIを受けてくれません。
上は、Webアプリを使ってnanoKEY2とNSX-39をつなぎましたが、ここではLinuxのコマンドツールaconnectでつなぎます。aconnect -lとコマンドを打ち込みます。
>pi@raspberrypi::~ $ aconnect -l client 0: 'System' [type=カーネル] 0 'Timer ' 1 'Announce ' client 14: 'Midi Through' [type=カーネル] 0 'Midi Through Port-0' client 16: 'NSX-39' [type=カーネル,card=0] 0 'NSX-39 MIDI 1 ' 接続元: 20:0 client 20: 'nanoKEY2' [type=カーネル,card=1] 0 'nanoKEY2 MIDI 1 ' 接続先: 16:0
16番にNSX-39が、20番にnanoKEY2がつながっています。
>pi@raspberrypi::~ $ aconnect 16.0 20.0
このコマンドを打ち込むと鍵盤を弾くと音が出ます。
>pi@raspberrypi::~ $ aconnect -x
このコマンドで接続が切れます。