Raspberry Pi Zero moOde audio 630(simul.py radiko)

moOde audioをインストールしてからvncserver,pulseaudioを導入してきました。
これまで他のマシンで設定したsimulラジオやradikoは自マシンのデバイスやpulseaudioに一括で送ることができましたがmoOde audioからはMPDはダイレクトにradikoなどはpulseaudio経由で再生することになります。

今回はできるだけ当サイトが使いやすいように編集してみました。
設定などに誤りがあると100%で出力することがあります。
確実に動作するまではアンプのボリュームを充分絞っておくか電源を切っておくようにします。

simul.py(moOde audio)

moOde audioのMPDはプロトコル(mms://)に対応していないのでCSRAの一部のラジオ局はMPDで再生することはできません。mms://はpulseaudio経由で再生するようにしています。

ファイル置き場、ファイル名は以前に設定した内容と一部変更しています。
simul.py simul-vol.pyは~/bin
リスト関連は~/radioで基本変わりませんがNHKもリストを作成しています。
NHK.txt NHK.list

mms://は一部urlを変更しています。(?MSWMExt=.asfを削除)各エリアのリストにあるurlも変更します。
mms.list mms-pulse_vol.py


# NHKのvolが抜けていました。
リストから拾って~/rdio/volの末尾に追記してください。


起動時のタイトルラベル(グリーンに設定)
再生時は赤系でラジオ局を表示。そのまま表示させると色や文字が残ってしまうので一旦空白文字で上書きしてから再書き込みしますが環境によって幅の調整が必要かもしれません。

play_selectionでurlがmms://ならばpulseaudioを–startしてmplayerで実行します。
次にon_air_selectionに行って各ラジオ局を取得します。
ラベル表示はラジオ局、デフォルト(停止、その他)、mms://の3パターン
mms://再生時はここで~/radio/CSRA/mms-pulse_vol.pyを実行します。
mms://(pulseaudio)のデフォルトボリュームはこのファイルで設定しています。
(“pactl set-sink-volume 0 20%”)適宜変更
戻ってJCBAを再生ならばIDをファイル(jcb_play)に保存します。
ファイルjcb_play(/tmp)は実行ユーザーに変更があった場合パーミッションの関係で書き込みができなくなってしまうのでユーザーディレクトリに変更しました。(simul.py simul-vol.py)
次にsimul-vol.pyを実行して音量を設定します。
MPDのデフォルトボリュームはsimul-vol.pyとkillall.shで設定(“mpc volume 10”)適宜変更
moOde audio(MPD)の出力レベルは高めになっているようです。


NHK
リストを作成、ラジオ局、音量個別に設定可


mms://はpulseaudioで再生
Pi Zeroでは再生開始に10秒位かかります。
MPD – pulseaudioはシームレスに選局できます。

simul.py(Raspberry Pi Desktop)

Pi4(vncserver)からpulseaudioでmoOde audioに送っています。

自マシンで再生(pulseaudio or alsa)またはpulseサーバー側で再生するかはmpd.conf pulse/client.confの設定次第になります。
simul.py
simul-vol.py
mms-mpc_vol.py
その他リスト関係は共通

moode audioのMPDダイレクト再生とRaspberry Piのmpd.confにaudio_output pulseを指定したときのmpc volume値取得に挙動の違いが見られます。Raspberry Piではsimul-vol.py実行の前で適切にsleepを入れる必要があります。

Raspberry Pi Desktopはkillall.shにsink-volumeを設定しています。MPDではsinkとsource volume値にずれが生じてきます。ncmpcppに表示されるsource-volume値が実音量値です。再生開始時はリストでsink-volume以下の値を設定している以外はsource-volumeと合うようになります。設定したsink-volumeはradikoのデフォルト音量値にもなります。
~/bin/killall.sh (chmod 755 killall.sh)

#!/bin/sh
killall -q mpv && killall -q mplayer && killall -q ffplay
mpc pause 1>/dev/null 2>/dev/null
sleep 0.2
mpc volume 20 1>/dev/null 2>/dev/null
sleep 0.2
mpc clear 1>/dev/null 2>/dev/null
pactl set-sink-volume 0 20%

radiko.py


参考 各地域のIDに書き換える
radiko.py moode audio
radiko.py raspberry pi
Pi Zeroはスペック的に厳しい。起動は遅いが再生自体はOK

swapもある程度消費します。
/etc/dphys-swapfile

CONF_SWAPSIZE=512 # 適当に

# systemctl restart dphys-swapfile

mplayerはcacheを少し(適当に!多いと再生開始遅くなる)
/etc/mplayer/mplayer.conf

cache = 100

pulse.php
moode audioから起動アクセス

# apt install surf

$ surf localhost/html/pulse.php

再生はpulseaudioがスタートしているときmoode playerのplayボタンで再生不可を除いてsimulラジオ、radiko間は自由に選局が可能です。
pulseaudioのスタートは数値の無い状態でpulseボタンまたは数値ボタンをクリックでスタートします。
数値ボタンは終了時の値を保存しています。もう一度クリックするとデフォルト値をセット
pulseボタンはmoode自身のpulseaudio経由で再生中のラジオなどを停止して待機
moodeボタンはpulseaudioをkillしてmoode playerを再生
playlistに登録があれば再生、無ければaddして再生開始
/var/www/html/pulse.phpを編集してplaylist,挙動は編集できます。
mボタンはpulseaudio 10%にミュート、MPDはpause
音量ボタンはdB(対数)で変化しますがアンプのボリュームを絞って高めで使用している場合は%で指定すると使いやすいかもしれません。
STOP-PLAYLIST_ADDはmoode playerの目覚ましラジオセット用
www-dataからスタートしたpulseaudioはアクセスが無いとすぐkillしてしまいます。Lan内のどれか1台がpavucontrolを起動しておくことでpulseaudioはスタート状態を保ちます。

pulse.phpをクライアントの小さいwebブラウザからアクセスするとこんなとき便利です。
最初にpulseaudioをスタートしてからコンテンツを開かないと音声はpulseaudioに向きません。

moOde6.4.0がリリースされていますね。ほとんど変わらないと思いますが次は今回設定した内容をできるだけ簡単に移行してみたいと思います。