更新日:2021/7/10

M E N U

前書き

「スマホレスで音楽再生したい。」

ここ最近、スマホのミュージックプレイヤーで m3u8 ファイルをインポート出来ると知ってからというもの、あれやこれやと音楽環境が整いつつあるようになってきた。
初めはスマホ (Xperia ZL2) に AUNE audio BU1 を繋いで音楽を楽しんでいたが、スマホのバッテリー管理がなかなかに面倒臭いので据え置きのプレイヤーが無いかと探していると、ラズベリーパイをデジタルトランスポーター代わりに出来ると知って、工作も楽しそうだしいっちょやってみるかと一念発起。

前提条件

まずは「ラズパイで何でも出来るなら勉強がてらいろいろ盛り込んでみよう」。
DAC は BU1 があるので純粋にトランスポート機能さえあれば良い。
しかしプレイヤー側は割と何でも出来ると聞いているので、どうせなら GPIO 端子を使って色々やってみたい。
そこで、以下のような機能を持たせてみることにした。

早送り・巻き戻しはそれほど頻繁に使わないのでブラウザもしくはスマホアプリのコントローラーで制御すれば良い。
音量は DAC・ヘッドホンアンプ側で変更するため不要。

準備したもの

色々準備した。まず基本的には以下のハードウェアを用意。

他に拡張機能を持たせたいなら次の部品なども必要。

注意事項として、ラズパイは出来れば 3B か 3B+ を選ぼう。
4B は高性能なのだがそれ故に CPU が爆熱で窒息ケースに収めると CPU 温度が 60度にも達する。4B は 85度でサーマルスロットリングが働くので若干の余裕はあるが、Volumio を動かす程度なら 4B のスペックは不要なので 3B 系にしておいたほうが無難 (音楽再生用としてよく使われているようだ)。
ZeroW (ZeroWH) でも使えないことはないが、Volumio が かーなーり!重(遅)い!! ので覚悟しよう。

実装 - ハードウェア編

今回は機能のフル実装ということで、GPIO の配線は以下のようにした。
(ピン番号とGPIO番号は一致しないことに注意!!)


注意すべき点としては、

実装 - ソフトウェア編

Download: Volumio デジタルトランスポーター制御スクリプト "wo.py"

Volumio は普通にインストールする。
追加で以下のプラグインをインストールしておく。

"BPIO Buttons" の設定は以下の通りに実施。


ssh を使うので Volumio を焼いたら一旦 microSD カードをカードリーダーから取り出しもう一度刺し直して BOOT パーティション (Windows のエクスプローラで "BOOT" となっている microSD カードのパーティション) に「SSH」という空 (0バイト) のファイルを作る。ファイルが有ることで ssh が有効になるので空で良い。また、拡張子は着けてはならないので注意。


ソフトウェア面ではこれらのボタンやLEDを Python と sh スクリプトで制御することにした。
ssh ログイン時のユーザー名は "volumio"、パスワードは "volumio" で同じとなっている。

% ssh volumio@xxx.xxx.xxx.xxx
※ xxx.xxx.xxx.xxx は Volumio の IP アドレス
このパスワード、よく「ssh を使う場合は変更しましょう」と説明されているサイトが多いが、これを変更すると Volumio がファイル操作を行えなくなるので変更してはならない。目立ったところではプラグインの導入に失敗したりメディアの取り外しが出来なくなる。
セキュリティ的には設定が終わったら ssh を無効化 (BOOT パーティションの SSH ファイルを削除するだけ) すれば良い。

python のパッケージもインストールする必要がある。

% sudo apt-get -y install python-smbus python-netifaces python-psutil python-RPi.GPIO python-mpd

LED ランプは以下のように。

完成

赤ボタンワンプッシュで起動とシャットダウンを実行。
黒ボタンで曲の再生と停止。
白ボタンで LCD の表示切り替え (押しっぱなしで自動順繰り切り替え)。

緑と黄の LED は将来拡張用で現在は NC。







Q&A

▼wo.py 関連
Q. LCD が文字化けする
マレに文字化けします。モード選択を触れば表示が都度リセットされるので元に戻ります。
Q. モード切替時に何度も押すのが面倒臭い
押しっぱなしで変わります。
Q. 電源ボタンを触るとすぐにシャットダウンするから怖い
仕様です。
Q. 電源入ったかどうかわからん
init で LED をオンにしてるので青ランプが光るのが結構遅いです。
15秒くらい経ってアクセスランプが明滅しなければ電源が入ってないので電源ボタンを押し直してください。
Q. シャットダウン後すぐに電源抜いていい?
出来れば 5秒数えてからにしてください。
▼Volumio 固有
Q. Spotify プラグインで停止は出来るが再生が出来ない。
プラグインの仕様です。
Q. Volumio でメディアの取り外しが出来ない。
volumio ユーザーのパスワードを変更したら操作が効きません。Volumio の焼き直しから実施してください。
# どうもパスワードを元に戻しただけではダメっぽかったので。
Q. プラグインの導入・削除が出来ない。
同上。
Q. 再生時、曲の始まりと終わりで一瞬音が大きくなる。
「プレイバックオプション」の DSD の設定項目にある「音量の正規化」が DSD にも影響するのでこれをオフにしてください。
Q. USB DAC が「オーディオ出力」の選択肢に出てこない。
機器をオンにしてください。OS に認識されていないと選択肢に出てきません。
Q. 「音量オプション」で "Mixer Type" がソフトウェア以外選べなくなった。
なぜか Software を一度選んでしまうと二度と戻らないようです。Volumio の焼き直しから実施してください。
Q. 初期設定時に Volumio にアクセスできない (ZeroW)。
Volumio が AP モードで動いてるので WiFi で Volumio の AP を探してください。AP のパスワードは "volumio2" です。
接続出来たら自宅の WiFi に繋ぐような設定をしてください。
Q. USB に格納されているプレイリストの曲が再生できなくなった。
正規の方法でシャットダウンしなかった場合 USB のマウントポイントが変わっている可能性が有ります。
USB メモリを外して Volumio を起動してから ssh でログインし、/media/ に Music や Music_ などディレクトリが沢山出来ている場合は全て削除してください。
% sudo rmdir /media/Music*
削除したら一旦シャットダウンし、USB メモリを刺して起動するとプレイリストの曲を再生できるはずです。
Q. 左の列の「アルバム」とか「アーティスト」とかいらないんだけど…。
「設定」→「Source」→「Source Visibility」で表示する項目を選べます。
Q. 音楽ライブラリで並び順がマレにおかしいものがある。
仕様っぽい。
Q. 「音楽ライブラリ」の "INTERNAL" ってなんですか?
Volumio が入っている microSD カードの空きの部分です。実は Volumio は裏で Samba が動いているので Windows のエクスプローラでアクセスできたりする。
ワークグループが同じなら「\\VOLUMIO」、これでダメなら「\\x.x.x.x」(x.x.x.x は Volumio の IP アドレス) でアクセス可能で、書き込みも出来たりするのでここに音源を置いても良い。
Q. Samba が動いているならば外部 USB メモリも刺せば書き込めませんか?
デフォでは書き込めない (リードオンリー) が /etc/samba/smb.conf を適切に書き換えれば書き込み可能になります。

検討中