ラズパイでレトロでリアルなカスタマイズ可能なジュークボックスソフト

rpi-fruitbox-titleメディアプレイヤー
この記事は約14分で読めます。

ラズパイフルーツボックス(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カードへ書き込むイメージファイルもあります。しかし、最新のRaspbianを入れてトライした方が良いでしょう。イメージファイルの方はどうかわかりませんが、V1.16にはScratchとBusterの両バージョンが含まれていますから安心です。

最新のRaspbian Lite + fruitbox MP3 jukebox

※Raspbian Buster LiteはGUIがありません。コマンドで操作します。

どうしても出来ない場合は、公式のgithubページからイメージファイルをダウンロードできます。

先にそちらも試しました。事前にUSBメモリースティック直下へMP3ファイルを用意して、差してから起動させます。コマンドで実行なども同じです。

Raspbianのセットアップ

新規にRaspbian Buster Liteを用意

RaspberryPi Imagerなら簡単ですね。

GPUメモリの割当を256MBに増やす設定

RaspbianLiteですから、コマンドでの操作になります。デスクトップのGUIはありません。

sudo raspi-config

Advanced Options-> Memory Split

メモリーは最低256を設定してくれとのこと。

デフォルトだと64MBになっています。

Raspberry Pi 3B+ならメモリーは1GBあるので余裕です。3A+は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
.......(続く)
mount

USBメモリースティックは事前にマウントしないとなりません。そのマウントした先のパスを指定しています。
外付けハードディスクを接続する場合——mount、umount

USBメモリースティックへMP3をコピーした場合は先に差してから起動します。

実行する前に

このfruitbox MP3 jukeboxは、GPIOまたはUSBコントローラー、そしてタッチパネルのキーコンフィグが用意されています。デフォルトだとキーボードで操作できます。ただ、キーマップがちょっと分かりにくい。(というかウィザードに従うのは無理がある)

また、キーボードの設定が日本語キーボード109になっているとキーマップが異なります。

Raspbian Liteのraspi-configでおすすめキーボード設定
ラズパイを扱っていてコマンドで操作することに抵抗がある人は多いでしょう。確かにマウスでもなくキーボードだけで操作するの...
ボタンコントロールは、次のキーボードのキーにマップされています 
デフォルトでは、他のキーボードのキー、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 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へ登録しましょう。

Raspbian Liteの場合はデスクトップがないコンソール画面で起動します。(文字だけの)そのため自動ログインが少し特殊です。備忘録も兼ねて残しておきます。

cd /etc/systemd/system/getty@tty1.service.d
sudo nano autologin.conf
[service]
ExecStart=
ExecStart=-/sbin/agetty --autologin pi --noclear %I xterm

参考https://www.raspberrypi.org/forums/viewtopic.php?t=253364

以下、特殊な例。

HDMIではなく、シリアル通信でRaspbian Liteで通信している場合は、ttyの管理が異なります。serial-getty@ttyS0.serviceです。

sudo nano /etc/systemd/system/serial-getty@ttyS0.service.d/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin pi --keep-baud 115200,38400,9600 %I $TERM

(補足).serviceの設定は、confファイルをnanoなどで開かなくても、systemctl editのコマンドでOKみたいですね。

sudo systemctl edit serial-getty@ttyS0.service

参考https://raspberrypi.stackexchange.com/questions/102227/unable-to-set-autologin-on-pi-zero-w-running-raspbian-buster-lite-previous-solu

最後に

20180413_210510_resized
画像引用:公式フォーラムの書き込みより

日本人はジュークボックスにあまり強い想いがありません。そのためか、日本でこのfruitbox MP3 jukeboxプレイヤーの記事も少ないと思います。

かなりカスタマイズが可能な点は煩わしいとも思えます。逆に言えば自由です。

今回はメモリーが512MBの3A+でも動きました。Raspberry Pi Zero Wでも動いている動画は観たことあります。私はまだ試していません。

こういった拡張基板(HAT)やUSBメモリースティックを使うと、色んなコマンドで操作します。初心者には難しいと思われますが、実はそんなに多くのコマンドは使っていませんし、他のプロジェクトでも利用する頻度が高いコマンドばかりです。

何でもそうですけど、一遍には覚えられません。繰り返し操作していると忘れないものです。

パイグリーン
パイグリーン

忘れたらラズパイダで検索して確認してください!

fruitbox MP3 jukeboxというミュージックプレイヤー(MPC)の紹介でした。

3A+ならセットでも5,000円以下で購入可能です。Speaker pHATはPimoroni製で、現在はPirate Audioがその後継になってからは、在庫のみの取り扱いのようですね。残念。

Raspberry Pi Imagerhttps://www.raspberrypi.org/downloads/

rpi-fruitboxhttps://github.com/chundermike/rpi-fruitbox

公式フォーラムhttps://www.raspberrypi.org/forums/viewtopic.php?f=38&t=188723

speraker phathttps://github.com/pimoroni/speaker-phat