Raspberry Pi サイマルラジオ

前回Raspberry Pi Zeroのpulseaudioも解決を見たのでローカルのマシンもサイマルラジオを更新してみようと思います。

環境はvncクライアントのPi3、Pi4(ヘッドレスvncserver)、OrangePi3(ファイルサーバー)の音声を全てRaspberry Pi Zeroのpulseaudioサーバーに送るものとします。
Pi4はRaspbian2020-02-05版を新規インストールしています。

moOde audioとpulseaudio

moOde audioのmpdは音質的な面でも劣化の可能性があるpulseaudioには対応していません。
pulseaudioを導入すること自体はここ数年常時運用してきた実績から基本問題ないものと思います。
(audioの世界では何かしらの影響があるのかもしれませんがそこまで追求しないことにします)
むしろpulseaudioを導入することでローカルの音をmoOde audioに集約、そして資源(アンプ、スピーカー)を有効に活用することができます。
問題はミキサーの持たないI2SデバイスをmoOde audio自身(内部)から再生(mpd以外)する際はpulseaudioがスタートしている必要があります。(キルで100%出力)
安全に運用する方法としてpulseaudioは接続を受けるだけとしてmoOde audioからはmpdの再生オンリーにするという方法もあります(設定作業時やらかしてしまうことがある)。リストからradiko,mms;//を外してmplayer,mpvをインストールしない(or remove)すれば心配は無くなります。OSに含まれるコマンドもありますがsimul.pyから以外は実行しない。
pulseaudioスタート時mpc playするとmpd errorを返しますがpause状態になっているのでキルして再度playすればほとんど通常通り再生開始します。pulseaudioがスタートしていなければ外部のマシンからの音は出ないだけです。

当サイトのZeroはwww-dataのclient.confにauto-connect-localhost = yesを加えることで解決しました。但し内部からの実行はpulseaudioをキルしてしまうのでpavucontrolの起動は安全のために必要です。(ここも何らかの設定(オプション)があるのかもしれません)

Raspberry Pi

Raspberry Piには以前と同じようにmpdをインストール、mpd.confのaudio_outputはpulseaudioに向けておきます。
SimulRadio(サイマルラジオ) – MPD(music player daemon)
各マシンのユーザー ~/.config/pulse/client.confはpulseサーバー(Zero)のアドレス指定

autospawn = no
daemon-binary = /bin/true
default-server = 192.168.xx.xxx

simul.py
simul-sub.py
simul-vol.py
killall.sh
エリアリストはほぼ1画面に収まるよう再編成しました。エリアファイル名を変更しています。
ボタンは1段増やして、mpc volumeをマウスで調節できます。
mpdの出力レベルはncmpcppに表示されているmpc volumeの値です。pulse.phpに表示されるpactl set-sink-volumeの値とは常に一致するとは限りません。Vol-DEFボタンはsimul-vol.pyを実行
mpd以外(radikoなど)はpulse.phpに表示されている値(再読込)が適用されます。
radiko volumeはdefault setのradiko_volで変更可
listboxの大きさはボタンサイズが決まったらdefault setのlb_h,lb_wで合わせる

Videoリスト


お気に入りのプロモーションビデオファイルなどを登録します。
default setのvideo_dir = “/home/pi/radio/video/”以下にアーティスト別にディレクトリがあると仮定しています。
ジャンルを含めてもいいと思います。
実行は拡張子(mp4)を検索しています。
ファイル名に空白や半角記号括弧()などあるとpythonからは読めません。
リストのファイル名は実ファイル名と合っている必要があります。

リスト例

"あいみょん/あいみょん-ハルノヒ_ライブ配信-ByLz5Hczdg8.mp4"

YouTubeの動画はすぐ削除されることがあります。(GET)

$ youtube-dl -f mp4 w4CgAl7CqKo # url末尾
$ youtube-dl -f mp4 "https://youtu.be/-4CgAl7CqKo"  # url末尾の最初にハイフォンがある

YouTubeリスト

YouTubeは直接見たほうが早いのですが再度途中から再開して見たいときのブックマーク代わり
url “youtube”を検索

HPリスト

リストの最初に”hp-“の3文字を付加してurlを記載しておくとwebブラウザを起動します。
ほかのタグ(workspace)にchromium-browserが起動してあれば新しいタブで表示します。
urlの前に半角空白を入れる
“hp-「NHKラジオニュース」 https://www.nhk.or.jp/radionews/”

ncnpcpp

music_directory     "/home/hda/hda4/music"


moOde playerで設定したmusic sourceをmpd.confに設定することで同様にplay listに追加することができます。左クリック追加、右クリック再生開始

Raspberry Pi3

pythonプログラムはPi3 Pi4 OPi3とも共通(違いはタイトルラベルの色)
radioディレクトリもファイルサーバーのOPi3にあり共通化しています。
同時に再生も可能ですがスペック不足のZeroではpulseaudioは乱れます。
RadikoはZero以外で再生したほうが早く快適です。

Raspberry Pi Zero

Zeroのcpu使用率が100%に掛かってくるとpulseaudioは乱れてきます。
pulseaudio使用時は70〜80%前後ですがpavucontrolをほかのマシンで起動しておくと40%前後に落ち着きます。
ほかにもネットワーク環境や混み合ってくると乱れてくることがあるようです。

当初サイマルラジオは簡単シンプル短編でいくつもりでしたが思わず長編小説になってしまいました。
まだまだ手直しするところはあるのですが取り敢えず初期の目標はクリアしたと思うのでヨシということにします。