Raspberry Pi Zero moOde audio 630(PulseAudio)
ローカル内にアンプ、スピーカーのあるマシンをpulseaudioサーバーにしておくと便利です。
moOde audioには通常アンプ、スピーカーを接続することになると思いますがHiFi再生を主眼とするmoOde audioではpulseaudioの導入は考慮されていません。mpdもpulseaudio経由の再生は不可です。
当サイトのmoode playerは通常通りダイレクトに再生、mpd以外はpulseaudio経由で再生しています。
pulseaudioは設定次第でいろいろな動作が可能ですが下記は当サイトの設定、実行例です。
Raspberry Pi ZeroにはmoOde audioをインストール、正常に再生しているものとします。
設定の過程では100%で出力します。
動作が確認できるまではアンプのボリュームを充分絞っておくか電源を切っておくようにします。
pulseaudioサーバー
前回Xを導入したmoode audioにpulseaudioをインストール
# apt install pulseaudio pavucontrol
デフォルトの入力ソース、出力ソースを設定 PulseAudio/サンプル
$ pulseaudio --start $ pacmd list-sources | grep -e 'index:' -e device.string -e 'name:' * index: 0 name: <alsa_output.platform-soc_sound.stereo-fallback.monitor> device.string = "0" $ pacmd list-sinks | grep -e 'name:' -e 'index:' * index: 0 name: <alsa_output.platform-soc_sound.stereo-fallback>
値はPi1B(ES9023DAC),Pi Zero(TDA1543DAC)とも同じnameを出力しています。
/etc/pulse/default.paの末尾に自ネットワーク帯と上記の得られたname値を追記
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1 set-default-source alsa_output.platform-soc_sound.stereo-fallback.monitor set-default-sink alsa_output.platform-soc_sound.stereo-fallback
一応再起動してpulseaudioをスタート
$ pulseaudio --start $ alsamixer
カードはPulseAudioになります。
出力は100%になっているので充分音量を下げます。
pavucontrolを起動して音量を下げてもOK
ここでLan内にpulseaudioをインストールしてあるマシンで~/.config/pulse/client.confにmoode audioのIPを記載することで音声を飛ばすことができます。
~/.config/pulse/client.conf
autospawn = no daemon-binary = /bin/true default-server = 192.168.0.113
# 補足
pulseaudioサーバーでpulseaudio –startします。
pulseaudioをインストールしているクライアントでpulseaudio –startすると~/.config/pulseが作成されます。
pulseaudio –killして上記のclient.confを作成(以降クライアントはpulseaudio –startは特に必要ない)
pulseaudio対応のプレーヤー(mpv,mplayerなど)で再生すると音声はpulseaudioサーバーに送ります。
mpv,mplayerはサーバー側でpulseaudioがstartしていない且つクライアントにアンプ、スピーカーが接続してあればクライアント側で再生します。
pulseaudioのスタート
moode audioのMPDはダイレクトに再生する必要があります。
上記の通りpulseaudioサーバーにすることは比較的簡単なのですが誰かがログインしてpulseaudioをスタート及びストップする必要があります。(基本root権限ではpulseaudioをスタートすることはできない)
当サイトでは使い勝手の良いwww-dataからpulseaudioを制御しています。
skyblue css
# cd /var/www # wget https://github.com/Stanko/skyblue/archive/gh-pages.zip # unzip gh-pages.zip # mv skyblue-gh-pages html # rm gh-pages.zip
www-data
sudersに追加(末尾に追記)
# visudo www-data ALL=(ALL) NOPASSWD: ALL
pulseaudioがcookieを作成できるようwww-dataにホームディレクトリを作成
(パスワードは設定していないのでログインは不可)
ホームディレクトリはmoodeのバージョンアップを考慮して/var/www/html/以下に作成
# gpasswd -a www-data audio ユーザ www-data をグループ audio に追加 # systemctl stop nginx php7.3-fpm # mkdir -p /var/www/html/www-data # chown -R www-data:www-data /var/www/html/www-data # usermod -s /bin/bash www-data -d /var/www/html/www-data # systemctl start nginx php7.3-fpm
# 追記 —
/var/www/html/www-data/.config/pulse/default.pa
.include /etc/pulse/default.paを書いて/etc/pulse/default.paに追記した3行(ネットワーク帯は各自環境)を加えます。
.include /etc/pulse/default.pa load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1 set-default-source alsa_output.platform-soc_sound.stereo-fallback.monitor set-default-sink alsa_output.platform-soc_sound.stereo-fallback
/var/www/html/www-data/.config/pulse/client.conf
autospawn = no daemon-binary = /bin/true auto-connect-localhost = yes
user:groupはwww-data
# chown www-data:www-data default.pa # chown www-data:www-data client.conf
—
pulseaudio –startしてcookieを確認
Xからpulseaudio –startするとエラー(authorized — error)が出るので.Xauthorityをコピー
(エラーがあってもスタート、実行は可)
# cp /home/pi/.Xauthority /var/www/html/www-data # chown www-data:www-data /var/www/html/www-data/.Xauthority # sudo -u www-data pulseaudio --start # ls -la /var/www/html/www-data/.config/pulse --- -rw------- 1 www-data www-data 256 11# 25 15:23 cookie
ユーザーが変わるとやはり100%で出力するので音量を下げておきます。
# sudo -u www-data alsamixer
pulse.php
/var/www/html/pulse.phpを作成してPi3からアクセス
surf_340x100 http://moode/html/pulse.php
surfブラウザは340×100でコンパイルして起動しています。
参考 pulse.php
作成するのはpulse.phpとkillall.sh
/var/www/html以下に置きます。
/var/www/html/killall.sh
#!/bin/sh sudo killall -q mplayer sudo killall -q mpv sudo killall -q ffplay mpc stop > /dev/null 2>&1
# chmod 755 /var/www/html/killall.sh
追記 client.conf
音量コントロールなど1本化するため内部からwww-dataが起動したpulseaudioに接続するようにします。この設定をすることでuser piはpulseaudioを起動することができなくなります。
user piがコマンドラインから実行する場合は必ずwww-dataからpulseaudioをスタートしておきます。
mixerを持っていないDACは100%で出力します。(設定後はコマンドラインから実行しない)
/home/pi/.config/pulse/client.conf
autospawn = no daemon-binary = /bin/true default-server = 127.0.0.1
ボリューム値は$ pactl list sinksから取得しています。
I2S接続の汎用ドライバーならこのまま取得できると思っています。
パッケージからsurfをインストールして自身のweb serverに接続
外部からは問題なく接続できますが内部のsurfブラウザの起動は多少時間が掛かってしまいます。
radikoの再生は開始までやはり少し時間が掛かりますが再生自体は特に問題無いようです。
外部から接続するmoode playerは問題ないですね。
MPD(simul.py)も起動してしまえば軽快に動作します。
simul.pyのタイトル(ラベル)を利用してON AIR情報を再生時自動表示するようにしました。
moode playerとsimul.pyそしてradikoの連携もうまくいっています。
プログラムについてはまた次回で!