タルコンガで作ったラズパイ音楽プレイヤー with Pirate Audio

kongaspeaker-title作ってみた!
この記事は約10分で読めます。

友人に頼まれた音楽プレイヤーを作りました。お子さんが音楽にハマるお年頃のようです。今時の子らしくボカロが大好きらしい。ハイレゾでも聴けるプレイヤーが欲しいと聞いた時、ちょうどPirateAudioが発売されたので、それで作ろうとなりました。

タイトル通りなのですが、タルコンガって知ってます?

ゲームのコントローラーです。知ってはいても使ったことはありませんでしたので、実物がどの程度の大きさなのか見当も尽きませんでした。

友人はスピーカーが収まるような形で連想したようです。そのまんまですが。

追記 マウント時にファイル名が日本語文字化けしていたのを修正しました

スポンサーリンク

音楽プレイヤーとしての仕様

最初にどういった仕様にするのか決めました。

お子さんはあまりPCには詳しく無い。タブレットの操作はできるので、タブレットで操作させるにはMopidyでも充分です。

また、音楽ファイルは予めmicroSDカードへ転送しておくこととし、追加削除したいとのこと。

追加削除はUSBメモリーを指して読み込ませることにしました。スクリプトを書いてそれを何かトリガーで実行させる方法です。読み込ませるタイミングは再起動などか、物理ボタン、またはUSBメモリーが接続されたら?などいくつかありますが、今回は別途にBluetoothボタンと連携して終了と再起動をさせます。

今回の仕様
〜PCが使えない子供のために〜
  • 音楽ファイルはmicroSDカードへそのまま保存する
  • 曲の追加/削除はUSBメモリーを接続して行う
  • 読込はスクリプトで再起動時に行う
  • Bluetoothボタンで電源のオフと再起動

本当はクラウド経由とかにしておくとラクチンですし、Spotifyならサービス利用だけですから簡単なんですが、どうしてもローカルの手持ちファイルを聴きたいとのことでしたので、このようにしました。

前回の記事のようにPirateAudioをセットアップして、あとは入れ物を考えます。

Pirate Audio Line-outのセットアップは自動インストールスクリプトの使用でお手軽かんたん
先日購入したPirate Audioが届きました。自分用と友人に依頼された分と合わせて2つ購入しました。1つはLine...
スポンサーリンク

タルコンガをスピーカーにする

そのお子さんが使っていたタルコンガをスピーカーにしたらどうかと友人が持ってきました。

これがタルコンガです。

確かにスピーカーみたいです。

スピーカーが小さいのでこれだとだいぶ大きな入れ物になります。それならRaspberry Pi Zero Wだって仕込めますから面白そうです。

そしてこれ、かなり良く出来ていて衝撃に強いように作られています。破壊してみて任天堂のこだわりが感じられました!叩く物だから強度は必要ですからね。

どこからもアクセスできない作りなので破壊することにしました。

バラバラにしないと取り外せなかった。小一時間かかります。とにかくバラしてもどうやって組み立てているのか皆目見当も付かない程に良く出来ています。

スピーカーを仕込む

画像のように仕込みました。4cmくらいのスピーカーなのでかなり余ります。

スピーカーを取り付けている黒い半透明の物はプラ板です。100円ショップで購入しました。同じく黒いL字金具も100円ショップで購入し、ケースとナイロンネジ(M2.5)で止めています。

穴は家にドリルがあったのでそれでチマチマと開けました。

切り取りなどは汚いですが、そういったツールも持っていないのでPカッターとハサミで加工です。

想像通りで取りあえず動かないようにキチンと収まりました。道具が欲しいですね・・・。

さて、Raspberry Pi Zero Wを何処に配置するか?

乗っけてしまえ

100円ショップで以前にも使ったコレクションケースが良いあんばいの大きさだったので購入。

上に載せてしまえ!ということになりました。

透明なケースなので埃から守ってくれます。

取り付けはこれまたL字金具を使い、差し込むことで取り外しできるようにしました。位置取りが上手くいって良かったです。
L字金具の片方が長かったので思い付きました。

配線は裏に元々穴が空いていたので、そこを拡張して使いました。

本当は既存のボタンも何とか使いたかったのですが、なにせ2つに割らないとならないので諦めました。やるとしたらBluetoothボタンを仕込んで電源にするくらいかな。(GPIOが埋まってますので)

完成!

とりあえず完成です。作るより、どうするか考える方が時間がかかりました。

これが全貌です。

下の台に箱などを用意し、クッション性のある敷物だと、より一層重低音が締まります。

シャカシャカにはなりません。スピーカーの裏もそれなりに距離があります。今回は底にフェルトを入れるの忘れました。

前面はこのままの方がいいかなーと思いましたが、1枚の紙を通すとより安定した音になります。

まさに太鼓のように見えます!

ケーブルの根元は紙粘土で固定

実際の音質

これ、伝わらないと思いますが動画にしてみました。

音源は著作権が大丈夫なモーツァルトのJupiterです。

Pirate audio & Raspberry Pi Zero W Music system made with Donkeykonga

音楽ファイルを読み込むスクリプト

さて、中身は基本はmopidyです。

USBメモリーから音楽を追加、削除するためにスクリプトを簡単に書きました。

以下のようなスクリプトを作成しUSBを差してから実行します。

sh-cp_music
#!/bin/bash

# mount usb
sudo mount -r -o uid=pi,iocharset=utf8 /dev/sda1 /mnt/usbram

# copy music
sudo rsync -av --delete /mnt/usbram/music/ /home/pi/media

# unmount
sudo umount /mnt/usbram

# service reboot
sudo systemctl restart mopidy

echo "Scan..."

sudo mopidyctl local scan

echo "All done!"

実行させるトリガーは、起動時に読み込ませまることにします。

ポイント

マウントのオプションで -o uid=pi,iocharset=utf8 を付けてマウントします。日本語ファイル名の文字化けがあったので追加しました。ただ、ST7789のディスプレイ表示は化けます・・・。なぜ?

rsync -av –delete で同期元にないファイルを削除させます。他にもオプションがありますのでrsyncで検索してみてください。

適当なスクリプトですみません。これでも一応動いていますが、不要な物を省いたりしてください。

※scanのコマンドを実行してもライブラリが更新できない場合は、Irisのsettingにあるボタンからスキャンしてみてください。

今回は自動実行に/etc/rc.localとしました。スクリプトは/usr/local/bin/へコピーしておき、/etc/rc.localへshファイルを追記します。

sudo cp cp_music.sh /usr/local/bin/
sudo nano /etc/rc.local

最後に追記(今回のファイル名はcp_music.sh)

cp_music.sh
exit 0

再起動のさせかた

問題は再起動をどうやらせるか、ということです。使うのはお子さんなので遠隔で操作できませんから、ややこしくなりますが、やはりBluetoothボタンに割り当てようと思います。

いつものアレ

AB-shutterボタンは便利です。安いのに。色もお子様らしいし。

2つのボタンは使えません。1つを長押しか1回押しかで2つの機能を割り当てます。(ボタンを別々に制御するやり方もありますが今回はパス!)

パイブラック
パイブラック

これまでも何回か記事にしています。そちらをご覧ください。

簡易ドライブレコーダーZeroWにBluetoothボタンでオンオフ編
これは過去にも扱ったBTボタンである100円ショップで300円で売っている(なんだそれ)AB Shutter3 ボタン...

1回押しに割り当てる再起動用

#!/usr/bin/python
import os
os.system("sudo shutdown -r now")

長押しに割り当てるシャットダウン用

#!/usr/bin/python
import os
os.system("sudo shutdown -h now")

それぞれ名前を「saikido.py」と「owari.py」などPythonファイルで保存します。

実行権を与えます。

sudo chmod +x saikido.py && sudo chmod +x owari.py

Bluetoothボタンをペアリングできたらbluebuttonというファイルにイベント動作を設定します。

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

AB Shutterボタンとペアリングは前回の記事を参考に進めてください。

取りあえず/home/piにあるとして以下、設定します。

sudo nano ~/.config/bluebutton
#以下を記述
keyup=saikido.py
keydown=echo DOWN
longup=echo LONG UP
longdown=owari.py

Bluetoothボタンを待ち受け状態にします。

sudo bluebutton -c ~/.config/bluebutton

これを常にしておきたいので、cornでshファイルを実行させます。

先ずshファイルを作って

#!/bin/bash
sleep 10
sudo bluebutton -c ~/.config/bluebutton

sleep10と待たせているのは、ペアリングが失敗しないようにということです。

実行権を与えて

sudo chmod +x waiting_bluebutton.sh

以下、cornに記述します。

crontab -e

Select an editor. To change later, run ‘select-editor’.

  1. /bin/nano <—- easiest
  2. /usr/bin/vim.tiny
  3. /bin/ed

Choose 1-3 [1]: 1

@reboot /home/pi/waiting_bluebutton.sh

これで完了です!

rpi x raspida

以上、タルコンガ(コントローラー)をPirateAudioとRaspberry Pi Zero Wを使って音楽プレーヤーにしてみました。

友人のお子さん、喜んでくれると良いけど・・・、実は女の子だからもっとカッコイイ方が良かったか?! 子供っぽいとか鼻で笑われそうだわ、この外観では。

備忘録(Mopidyサブコマンドなど)

以下、忘れやすいので覚え書きで置いておきます。
サービスで実行しているmopidyの場合はサブコマンドも変わってきます。そもそもconfファイルの置き場所も異なります。

ユーザーmopidyでconfigの内容を確認するコマンド

sudo mopidyctl config

変更を反映させるのにmopidyのサービスを再起動させるコマンド

sudo systemctl restart mopidy

ユーザーmopidyとしてローカルファイルを再スキャンするコマンド

sudo mopidyctl local scan

ユーザーによる相違点

特にmopidyは、この辺は本当に理解し難い。

ユーザーmopidyユーザーrootユーザーpi
/etc/mopidy/mopidy.conf/root/.config/mopidy/mopidy.conf~/.config/mopidy/mopidy.conf
sudo mopidyctl local scansudo mopidy local scanmopidy local scan

サービスで稼働させる場合は常にユーザーはmopidyなので注意が必要ですね。

m4aファイルの再生にはgstreamer1.0-plugins-badのインストールで再生可能

mp3の他、24bitハイレゾ対応なのでFlacで再生させています。これにm4aなどを追加するのにgstreamerを追加しておきましょう。

sudo apt install gstreamer1.0-plugins-bad

ラズパイダの新着記事をメールで購読

メールアドレスを記入して購読すれば、更新をメールで受信できます。

471人の購読者に加わりましょう

タイトルとURLをコピーしました