FM3 Buddha Machineをラズパイで作る(2) MOCによるギャップレス再生
前回はRaspberry Piにpymusiclooperというpythonライブラリを入れて自動的にループポイントで切り出した音源を作成しました。
今回はこれを再生する環境をMOC(Music on Console)で作成したいと思います。
1. なぜMOCを使うのか
Raspberry Piにも標準で音楽再生できるソフトは標準インストールされています。にもかかわらず、なぜ今回はMOCを追加で導入するかといいますと以下の3点の理由があります。
ギャップレス再生したい
軽いソフトで再生したい
WAVファイルを再生したい
ギャップレス再生とは、音源をループ再生するとき曲間に無音部分を入れずに継ぎ目なく連続再生する機能です。
Raspberry Piシリーズに標準でインストールされているVLCはギャップレス再生の設定が見つかりませんでした。
pymusiclooperでわざわざ継ぎ目のない音源を作っても再生プレイヤーが対応していないと元も子もありません。そこでギャップレス再生をRepeatオプションのみで対応するMOCが良いと思いました。
次の軽いソフトにつきましては、将来的にこのシステムはサイズを小さくしたいのでRaspberry pi ZeroまたはRaspberry Pi Zero 2にシステムを置き換えたいと考えています。
そうしますと今よりも性能が落ちるので、なるべく軽いソフトを使用しておこうと思いました。なおRaspberry Pi OSに標準でインストールされているVLCのRaspberry Pi4のメモリ使用量は18MBに対して、MOCは3MBでした。
最後のWAVファイルの再生に関してはpymusiclooperがループ音源を書き出しが一律WAV形式のためです。
MP3形式に変えても良いのですが、今回はそのままWAVで運用することにしました。mpg123というソフトがギャップレス再生に対応していて、軽量なのですが、WAV再生には対応していません。それに対してMOCは幅広い音楽フォーマットに対応しています。(MP3、Ogg Vorbis、FLAC、Musepack、Speex、WAV)
以上の理由からMOCを使うことにしました。
2. 必要なもの
2-1. Raspberry Pi本体
非常に用途の広いシングルボードコンピューターです。GPIO(はんよう入出力)が標準で付いているためハードウエアに組み込みやすい設計になっています
今回はRaspberry Pi4を使います。使用するOSはRaspberry Pi OS(64bit) / 2022-04-04バージョンです(Debian Bullseye)
Raspberry PiはWindowsパソコンからVNC Viewerで操作します
2-2. Raspberry Pi用の周辺機器
・ACアダプタ
Raspberry Pi4の場合、本体側の電源端子はUSB TypeC接続で、5V/3Aの出力が必要です。
・スピーカー、イヤホン
音の再生に必要です。今回はAnker Soundcoreを使います。
・MicroSDカード
Raspberry PiのOSインストールに必要です。今回はADATA製の32GB MicroSDカード(UHS-1)を使います。
2-3. パソコン
VNC ViewerでRaspberry Piをパソコンから操作します。今回はWindows 11パソコンを使います。
2-4. 音源
前回pymusiclooperで作成したループ音源を使います。
3. MOCで音楽再生する手順
3-1. MOCのインストール
Raspberry PiにMOCをインストールします。LXTerminalを起動して以下のコマンドを入力、実行してください。
sudo apt install moc
3-2. MOCを起動する
MOCはGUI起動とコンソール起動ができます。LXTerminalで以下のように入力してください。コンソール起動時のオプションは大文字、小文字で意味が変わってしまいますのでご注意ください。
実機のFM3 Buddha Machineは音量と曲送りボタンのみで構成され、曲送りボタンを押すまでは同じ音源をギャップレス再生します。MOCで同じことができるように設定します。
将来的にシェルスクリプトにすることを念頭に置いているため、今回はMOCをコンソール起動します。
・GUI起動
mocp
・コンソール起動
mocp -S
3-3. ループ音源をプレイリストに登録
プレイリストに登録することにより再生する順番を決めます。例えば追加したいループ音源が「/home/pi/Music/Master/Loops」ディレクトリにあるとき、LXTerminalで以下のコマンドを実行しますとディレクトリ内の対応ファイルがすべてプレイリストに追加されます。
mocp -a "/home/pi/Music/Master/Loops"
3-4. ループ音源をギャップレス再生
プレイリストを再生する前にMOCの初期設定はリピート再生がOFF、再生中の曲が終わったら次の曲を自動再生する設定がONになっています。今回は逆にしたいのでLXTerminalで以下のコマンドを実行します。
mocp -u n
mocp -o r
3-5. プレイリストの曲を再生する
LXTerminalで以下のコマンドを実行します。
mocp -p
3-6. ループ音源を曲送り
次の曲を自動再生する設定がOFFでも曲送りすれば次の曲の再生が開始します。LXTerminalで以下のコマンドを実行します
mocp -f
3-7. 再生中に音量を変更
再生中のマスターボリュームを変更します。LXTerminalで以下のコマンドを実行します。音量を10%上げたい場合には+10、音量を10%下げたい場合には-10を指定します。
mocp -v +10
mocp -v -10
3-8. 再生を止める
リピート再生を停止し、プレイリストを削除したあとにMOCを終了します。MOCを終了してもプレイリストは次回起動時に残っているため、一度削除してしまいます。
mocp -s
mocp -c
mocp -x
これでソフトウエアとしての機能は実現できました。次回は再生、停止、音量変更をコマンド入力せずにハードウエアから操作できるようにしていきたいと思います。