Raspberry PiのMIDI接続

Raspberry Piを楽器、キーボード、PCとMIDIでつなぐ方法を場合分けしてまとめてみました。

Raspberry Pi準備

ここでは、説明のために手持ちのRaspberry Pi 2 model Bを使います。OSはここから、Raspberry Pi OS (32-bit) with desktopをダウンロードしてインストールしました。インストールはいろいろ紹介されているページ、例えば、ここなど、がありますので参照してください。


Raspberry Piを音源にする

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のキーボードは、そのまま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

Option

  • -s : サーバーモードで動作
  • -a alsa : オーディオドライバーをalsaとします
  • -m alsa_raw : MIDIドライバーをalsa_rawとします。
  • -g 8 : ゲインを8に設定、(0 - 10 : default:0.2)
  • -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

Option


  • -i : シェルからコマンドを読み取りません。MIDI File再生後、fluidsynthが終了します。

USB-MIDI変換ケーブルで音源を接続

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の説明はこちらにあります。

WebMIDIと音源をつなぐ

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を押してみて下さい。音が出るはずです。

USBで音源を接続

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を受けてくれません。

  1. MIDI出力をNSX-39に設定します。
  2. テキストをNSX-39に転送します。Pushボタンを押します。ここでは「あいうえおかきくけこ」と送っています。ポケット・ミクは特に何も反応はしませんが大丈夫です。
  3. をNSX-39の鍵盤を押すと、テキスト通り、1語づつ音が出ます。

上は、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 

このコマンドで接続が切れます。