ラズパイフルーツボックス(fruitbox MP3 jukebox)はRaspberry Pi 3B+まで対応しているジュークボックス風のMP3プレイヤーです。
2017年頃に海外でリアルに中古のジュークボックスを魔改造しているような動画が出ていました。その後、日本ではあまり話題になっていなかったので、今更ながらご紹介します。
fruitbox v1.16 (Feb 17 2020, 15:28:38) by Mike Kingsley
A customisable MP3 Retro Jukebox for the Raspberry Pi
fruitbox MP3 jukeboxはRaspberry Pi 3Bまたは3B+を想定しているようで、CPUが4コア、メモリーも256MBの割当を推奨しています。
今回は、Raspberry Pi 3A+で動かしてみました。メモリーこそ512MBしかありませんがCPUは3B+と同等なので試してみたところ、特に大きな不具合も無かったのでオススメです。
更に音もレトロ感溢れるようにSpeaker pHATを再生用スピーカーとして使いました!
もちろん、テレビのHDMI出力でも、スピーカーを繋いでも問題ありません。もしもスピーカーを繋ぐなら、3.5mmジャックで繋ぐ独立電源が望ましいです。3A+はUSB端子が一つしかありませんから補助電源にもUSBスピーカーも端子が足りません。

構築方法は、次からのセットアップ方法の手順でどうぞ。※Raspberry Pi 4Bでは動作しません。
fruitbox MP3 jukeboxのセットアップ方法
いつものようにmicroSDカードへOSを書き込むことから始まります。
GithubのページにmicroSDカードへ書き込むイメージファイルもあります。しかし、最新のRaspberry Pi OSを入れてトライした方が良いでしょう。
イメージファイルの方はどうかわかりませんが、V1.16にはScratchとBusterの両バージョンが含まれていますから安心です。
Raspberry Pi OS Lite + fruitbox MP3 jukebox
※Raspberry Pi LiteはGUIがありません。コマンドで操作します。
どうしても出来ない場合は、公式のgithubページからイメージファイルをダウンロードできます。
先にそちらも試しました。事前にUSBメモリー直下へMP3ファイルを用意して、差してから起動させます。コマンドで実行なども同じです。
Raspbianのセットアップ
新規にRaspberry Pi OS Buster Liteを用意
RaspberryPi Imagerなら簡単ですね。


GPUメモリの割当を256MBに増やす設定
Liteですから、コマンドでの操作になります。デスクトップのGUIはありません。
sudo raspi-config
Advanced Options-> Memory Split
メモリーは最低256を設定してくれとのこと。
デフォルトだと64MBになっています。

Raspberry Pi 3B+ならメモリーは1GBあるので余裕です。
3A+はZeroW同様に512MBしか無いため少し苦しいですね。
rpi-fruitboxのダウンロード&インストール
wget https://github.com/chundermike/rpi-fruitbox/raw/master/install.sh
実行権を与える
sudo chmod +x ./install.sh
インストールスクリプトを実行する
source ./install.sh
※ 通常だとshコマンドで実行するスクリプトですが、sourceコマンドでお間違えないように。
sourceとshコマンドの違いはshは別プロセスで実行になり、sourceは同じプロセスなので環境変数などを引き継ぎます。まぁ、とにかくここではsourceコマンドで!
MP3ファイルの準備と指定
音楽MP3ファイルを(SDカードまたはUSBメモリーに)コピーします。
FruitboxにMP3ファイルを指定するため.cfgファイルを編集します。
~/rpi-fruitbox-master/skins/WallJuke/fruitbox.cfg
を編集し、MusicPathパラメータを変更します。
sudo nano ~/rpi-fruitbox-master/skins/WallJuke/fruitbox.cfg
今回USBメモリーにMP3ファイルを入れたので、ファイルまでのパスを、MusicPath = ../Music/
から MusicPath = /media/usb32g/music/
に変更しました。
修正場所は5行目ですね。
[general]
SkinName = WallJuke
SkinSize = 1024 768
Database = ../fruitbox.db
MusicPath = /media/usb32g/music/
SortSongsBy = Title
SortSongsBy = Artist
SelectButtons = ABCDE
SelectButtons = 1234
AutoSelect = Yes
SelectTimeout = 150
SelectHoldTimeout = 150
AutoPageTurnTime = 3000
MaxPlaylistLength = 20
LoopPlaylist = no
AutoPlay = yes
AutoPlayGap = 3000
PlaysPerCoin1 = 0
SongsPerPage = 2
.......(続く)
USBメモリーは事前にマウントしないとなりません。そのマウントした先のパスを指定しています。
USBメモリーへMP3をコピーした場合は先に差してから起動します。
実行する前に
このfruitbox MP3 jukeboxは、GPIOまたはUSBコントローラー、そしてタッチパネルのキーコンフィグが用意されています。
デフォルトだとキーボードで操作できます。ただ、キーマップがちょっと分かりにくい。(というかウィザードに従うのは無理がある)
また、キーボードの設定が日本語キーボード109になっているとキーマップが異なります。

デフォルトのキーマップ(キーボード)
ボタンコントロールは、次のキーボードのキーにマップされています デフォルトでは、他のキーボードのキー、GPIOに再マッピングできます 入力、USBジョイスティック、またはボタンで定義されたタッチスクリーン入力 マッピングファイル。 LEFT:ButtonLeft ........ページを左に移動 RIGHT:ButtonRight .......ページを右に移動 [:ButtonLeftJump ....「PageJump」ページを移動 ]:ButtonRightJump ...「PageJump」ページを移動 、:ButtonLeftAlpha ...前のソートセクションに移動* 。:ButtonRightAlpha ..次の並べ替えセクションに移動します* UP:ButtonUp ..........曲の選択を上に移動 (ジョイスティックモードのみ) DOWN:ButtonDown ........曲の選択を下に移動 (ジョイスティックモードのみ) 0から9 / AからK:Button0..ButtonK ..曲選択 ENTER:ボタン選択......曲を選択 F1:ButtonCoin1 .......コインを入れる F2:ButtonCoin2 .......コインを入れる F3:ButtonCoin3 .......コインを入れる F4:ButtonCoin4 .......コインを入れる F5:ButtonFlag1 .......トグルステータスフラグ1 F6:ButtonFlag2 .......ステータスフラグ2を切り替えます F7:ButtonFlag3 .......トグルステータスフラグ3 F8:ButtonFlag4 .......トグルステータスフラグ4 スペース:ButtonRandom ......ランダムな曲を選択 BACKSPACE:ButtonSkip ........スキップ(現在停止) Z:ButtonPause .......一時停止(一時停止/一時停止解除) 現在曲を再生中) R:ButtonAuto ........自動再生モードを切り替えます L:ButtonLoop ........トグルループモード P:ButtonFree ........フリープレイモードを切り替え X:ButtonClear .......すべての曲をクリア 再生キュー =:ButtonVol + ........曲の音量を上げる -:ButtonVol- ........ソングの音量を下げる M:ButtonMute ........ミュート/ミュート解除の曲と 効果音の音量 ESC:ButtonQuit ........ fruitboxを終了します F12:ButtonPowerOff .... Raspberry Piの電源をオフにします *並べ替えセクションは、アルファベットの新しい文字で始まります 最後のSortSongsBy値に対応します。たとえば、 最後のSortSongsBy =アーティスト、および現在表示されているアーティスト 「B」で始まり、ButtonLeftAlphaを押すとページに移動します 「A」で始まる最初のアーティストが含まれています。
キーコンフィグは別途に、.btnファイルを編集して定義します。
最初はありません。詳しくは./fruitboxフォルダにあるユーザーガイドテキストファイルを参照してください。
fruitbox.btn
# fruitbox v1.16 button mapping file # Missing buttons will assume their default values (see user guide) ButtonQuit = Key 16 ButtonCoin1 = Key 59 ButtonCoin2 = Key 60 ButtonCoin3 = Key 61 ButtonCoin4 = Key 62 ButtonVol+ = Key 103 ButtonVol- = Key 108 ButtonRandom = Key 57 ButtonSelect = Key 105 ButtonSkip = Key 31 ButtonPause = Key 119 ButtonUp = Key 103 ButtonDown = Key 108 ButtonLeft = Key 105 ButtonRight = Key 106 ButtonRightJump = Key 108 ・・・(続く)
テストで確認
sudo ./fruitbox --test-buttons
configオプションにより画面で設定できますが、文字が全て表示されず分からない・・・。
sudo ./fruitbox --config-buttons
fruitbox MP3 jukeboxの実行
rpi-fruitboxを実行するには、/rpi-fruitbox-masterに移動して、コマンドで以下です。
./fruitbox --cfg skins/WallJuke/fruitbox.cfg
公式にあったようにスキンはWallJukeを指定しています。同じようにスキンは10種類インストールされています。実行する際にskins/以降のスキン名を変更して試してみてください。
- Granite
- Modern
- Splat
- WallJuke
- Wurly
- MikeTV
- NumberOne
- TouchOne
- WallSmall
- WurlyVideo

自動起動の設定
userguide.txtの12.ヒントにあるように、フルーツボックスを自動的に実行するには.bashrcへ登録しましょう。
自動ログイン設定
Raspberry Pi OS Liteの場合はデスクトップがないコンソール画面で起動します。(文字だけの)そのため自動ログインが少し特殊です。備忘録も兼ねて残しておきます。
cd /etc/systemd/system/getty@tty1.service.d
sudo nano autologin.conf
[service]
ExecStart=
ExecStart=-/sbin/agetty --autologin pi --noclear %I xterm
以下、特殊な例。
最後に
日本人はジュークボックスにあまり強い想いがありません。そのためか、日本でこのfruitbox MP3 jukeboxプレイヤーの記事も少ないと思います。
かなりカスタマイズが可能な点は煩わしく感じました。逆に言えばカスタマイズの幅が広い。
今回はメモリーが512MBの3A+でも動きました。Raspberry Pi Zero Wでも動いている動画は観たことあります。私はまだ試していません。
こういった拡張基板(HAT)やUSBメモリーを使うと、色んなコマンドで操作します。初心者には難しいと思われますが、実はそんなに多くのコマンドは使っていませんし、他のプロジェクトでも利用する頻度が高いコマンドばかりです。
何でもそうですけど、一遍には覚えられません。繰り返し操作していると忘れないものです。
fruitbox MP3 jukeboxというミュージックプレイヤー(MPC)の紹介でした。
Speaker pHATはPimoroni製で、現在はPirate Audioがその後継になってからは、在庫のみの取り扱いのようですね。残念。