RaspberryPIでMIDI&音楽


R2.12.24

 ラズベリーパイだと能力が高いのか、下のように接続してMIDI音楽を聞くことができます。鳴らすためのプログラムが揃っているので、それを探して取り込み、設定するだけで楽しめます。

 MU5等の音源で鳴らす場合。

 M5Stack(MIDIモジュール2+MIDI野郎)で鳴らす場合。ATmega32u4積載のArduino互換ボードによるMIDIインターフェース使用

 ポケット・ミクとUSBケーブルだけで接続。TypeAとmicroBの変換ケーブルが必要です。CH1がミク音声になるので、それを避けるにはCH1を使わない。ミク音声を使うとそれなりに面白いことになるとは思います(^^)/

 時と場合に応じて、意図に応じて使うといいよ! ということですね。いずれにしても、aplaymidiで完結してしまうのがすごいところです。


R2.12.19

 ラズパイzeroにスピーカーを付けようと頑張ったけれど、スピーカー焼いてしまった臭いが出て、めげたのでHDMI経由でテレビに出してます(^^;)

 zeroでnanoKEY2をつなげてHDMI経由のテレビで音を聞くことができましたが、レイテンシーが大きいので無理と判断しました。SDカードにmidiファイルを置いて、聞けないかということでやってみました。

 fluidsynthを使えればいいのですが、ネットを検索してみると timidity++ というプログラムが手軽で良さそう。zeroのターミナルで、> timidity としてみると、「ありません〜」ということ。そりゃそうだね。ということで、

$ sudo apt-get install timidity timidity-interfaces-extra

インストール。音データはfluidsynthの時にインストールしてある。
 次に、timidityを起動してみる。

$ timidity -ig -Oe

これはダメ。

ALSAライブラリをバックエンドに指定という方法があるらしく、

$ timidity -ig -Os;

でやってみると出てきました。midiファイル位置を指定してみると

鳴りました。でも、時々引っかかります(^^;) 次は、これをBLEヘッドホンに飛ばしたい。


R2.12.18

 手持ちのラズパイは3.5インチ液晶を身につけたRapsberryPI 3B と1.4inch液晶を身に付けたRapsberryPI Zeroの2つです。

 Ryuhei NishinoさんのRaspberry Piをシンセサイザー楽器にして遊ぼう 「SunVox」という記事を見て、能力の高い3Bのほうでやってみました。

 以下自分のための覚書です。詳しくは、当該HPで直接ご覧ください。

 ラズパイでネットにアクセスして、SunVoxをダウンロード、インストールしました。zipファイルなので、/home/pi にすべてのファイルをフルパスで展開するオプションで解凍します。

 ラズパイのデスクトップ画面。設定から、Add / Remove Software を起動し「libsdl2」を検索。「Simple DirectMedia Layer」「Simple DirectMedia Layer development files」の2つをラズパイに追加。

 これで、SunVoxを起動すればいいのですが、私の液晶画面では小さすぎて全面が表示されません。けれど、nanoKEY2を接続して弾いてみると素晴らしい音がヘッドホンから聞こえてきました。音ズレもほとんどありません。


 でもこれはラズパイzeroでは無理なので(^^;) 別の方法。
 MIDI & AUDIO LABさんの「Raspberry PiのMIDI接続」という記事を参考にやってみました。
 まずソフトシンセfluidsynthをインストールしました。

$ sudo apt install fluidsynth

 GMあるいはGSの音データが必要なので、インストールされていなければ要インストールです。

 次に、USBキーボードnanoKEY2を差し込んで、

$ amidi -l

として確認です。

IO hw:1,0,0 nanoKEY2 mIDI 1

なんて出てきました。ここで、

$ fluidsynth -s -a alsa -m alsa_raw -g 8 -o midi.alsa.device=hw:1,0,0 /usr/share/sounds/sf2/FluidR3_GM.sf2

として打ち込んでみてから、nanoKEY2鍵盤を弾いてみるとが出てくるはずですが、zeroはスピーカーがないので音は出ません(^^;)

 そこで、HDMI端子を使ってテレビをスピーカーとして音出しです。音の出力先はデフォルトHDMIを変えていないと思うので(zeroスピーカーはGPIOを使っていると思う)。つないでみると、「テレビの方からは対応できない映像または音声信号が入力されています。」というメッセージが表示されたけれど、音は出ました(^^;) ただ音ズレがあります。

 もう一つ、このページには「大人の科学のポケット・ミク( NSX-39 ) 」接続の記事があるのですが、これはまた次回。


 RaspberryPI Zeroにもスピーカーを付けようと調べてみました。スピーカーHATを持っていますが、今の液晶を付けたまま使うために。

 GPIO13と18を使ってスピーカーを鳴らすことができるらしい。そこで、下のように導線を半田付け。

 こちら側はGPIO18、あちら側(内側になります)にはGPIO13。リード線を長めに半田付け。日々適当クリエイトさんの「キノコの自省録」というブログの中での「RaspberryPi ZeroでGPIOを使って音声出力するお話」という記事。「最も簡単な方法」を使いました。自分のための備忘録として、ラズパイのSDカードをPCで編集。/boot/config.txtの中で、dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4 という1行を追加。sudo raspi-config で音源をHDMIから、「Force 3.5mm (Headphone)」に変更して、再起動。

 2本のリード線の先をイヤホン先にくっつけて、aplay /usr/share/sounds/alsa/Front_Center.wav でテストします。聞こえない(^^;) そこで sudo amixer cset numid=1 100% にして、再度挑戦。小さいですが、聞こえました。
 次は、このリード線にアンプとスピーカーを付けて、このラズパイのお腹の中にセットするだけです。バッテリー問題が再燃しそうですが。