pulseaudioコントロール(pulse.php)

pulseaudioコントロール
moOde audioのデフォルトはmpd。moOde audioへはhttp://moode/html/pulse.phpにアクセスします。
以下Raspberry Pi ZeroにmoOde audio(8.0.2)新規インストールして確認

moOde audio(8.0.2)


moOde audioをインストールしたらI2SデバイスをSET
当サイトのI2SデバイスPCM5102A,ES9023,TDA1543
Generic-1 I2S(hifiberry-dac)


IPアドレスは固定(STATIC)に設定するのがいいと思います。
取り敢えずはDHCPでも可


設定が正しければラジオ再生可

pulseaudio

参考 過去記事 Raspberry Pi Zero moOde audio 630(PulseAudio)

$ sudo apt update && sudo apt -y install pulseaudio

以下 $ sudo -i  # rootで作業しています

/etc/pulse/default.pa
当サイトのI2SデバイスPCM5102A,ES9023,TDA1543で確認
いずれも汎用のデバイスですが共通設定で使用できます。他のデバイスでは調査する必要があると思います。

末尾に追記(ネットワーク帯は自ネットワーク)

/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

skyblue css

pulseaudioコントロールは操作性の良いskyblue cssを利用。ダウンロード、展開したらディレクトリ名をhtmlに変更してpulseaudio関連のファイルを纏めます。

# 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

www-dataからpulseaudioをスタートするためにはホームディレクトリが必要になります。

# systemctl stop nginx php7.4-fpm
# mkdir -p /var/www/html/www-data/.config/pulse
# usermod -s /bin/bash www-data -d /var/www/html/www-data
# systemctl start nginx php7.4-fpm

client.conf作成

# vi /var/www/html/www-data/.config/pulse/client.conf
autospawn = no
daemon-binary = /bin/true
auto-connect-localhost = yes

所有者www-data

# chown -R www-data:www-data /var/www/html/www-data

www-dataをaudioグループに追加

# gpasswd -a www-data audio
ユーザ www-data をグループ audio に追加

www-dataをsudersに追加(末尾に追記)

# visudo
www-data ALL=(ALL) NOPASSWD: ALL

pulse.php

pulse.php.20220508

/var/www/html/pulse.php

/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

ロゴ画像 /var/www/html/imgにコピー

# mkdir /var/www/html/img

以上でmoOde audio(pulseaudio)の設定は終了 Reboot

client設定

``~/.config/pulse/client.conf

autospawn = no
daemon-binary = /bin/true
default-server = 192.168.0.144 # moOde audioのIPアドレス

クライアントはpavucontrolをインストール、起動しておきます。(pulseaudioの自動キルを防止)
Raspberry Pi 2 ,Raspberry Pi Zeroで確認。但しZeroでは一瞬音声が詰まり気味になることがあります。moOde audio(730)では特に問題が無かったことからbullseye(pulseaudio)とZeroの間でなにか問題があると思います。Pi 2は特に問題なし(現時点ではPi2以降を使用か!?)

moOde audio 8.0.2(mpdとpulseaudio)

ちょっとサボっている間にmoOde audioのリビジョンも7(buster base)から8(bullseye base)に上がっています。

moOde audio 8.0.2


moOde7インストールの要領で8.0.2の新規インストールを実行したのですがmpdが起動していません(音が出ない)
/var/lib/mpd/databaseが無いよと言っています。

/var/lib/mpd/(/var/lib/mpd/database)の所有者を見るとpulse:audioになっています。
pulseaudioをインストールしたことでbullseyeはmpdの出力はpulseaudio経由と判断するようです。

所有者を変更して再起動

# chown mpd:audio /var/lib/mpd
# chown mpd:audio /var/lib/mpd/database

moOde player(8.0.2)


moOde playerは当サイトの環境では特に大きな変更は無いように思います。
mpdは非常に軽いmusic playerでPi zeroでも難なく動作します。基本はクライアントのウェブブラウザからmoOde audioにアクセス、moOde playerから基本設定、アルバム、ラジオなどを選択

mpdとpulseaudio

当サイトのmoOde audioはpulseaudioをインストール、設定をしています。過去記事にもpulseaudioについて触れていますがここでざっくばらんにmoOde audioにおけるmpdとpulseaudioの関係について考慮してみたいと思います。
debian系のmpdパッケージはmpdの出力をpulseaudio経由で再生する設定もあります。pulseaudio形式に変換することで音質の劣化を招く恐れがあるためmoOde audioにおいては独自にコンパイル、pulseaudioには非対応にしているものと思われます。アルバム、ラジオ局再生としてのmoOde playerも使い勝手がよくハイエンドオーディオを目指す形としては当然ながらひとつの方法と思います。
但し基本ラジオ生活を送っている当サイトとしてはmoOde audioにpulseaudioをインストール、接続しているアンプ、スピーカーを利用、日本のラジオサイト、動画の音声などを再生することでさらに利用価値が上がります。

pulseaudioコントロール (pulse.php)

mpdとpulseaudioの切り替えはpulseaudioをスタートすることでpulseaudioモード pulseaudioキルでmpdモード
実際のプログラムは/var/www/html以下に関係するファイルを全て置いてコントロールしています。クライアント(Pi4)からはsurfブラウザからアクセス、devilspie2でサイズ調整、タイトルバー非表示、全ワークスペース配置など設定
pulseaudioはroot権限ではスタート出来ません。通常はユーザーがログインしてpulseaudioをスタートさせることになりますが代わりにwww-dataにホームディレクトリを設定ブラウザを介してpulseaudioをスタートします(pulse.php)

pulseaudio mode
音量変更は%表示に変更。デフォルト音量値は深夜早朝でもうるさくない程度に


mpd mode
mpdモード時も音量値表示するように変更
デフォルト値設定(mpc volume)

上記のpulseaudioコントロールだけの場合(要設定)はmpdとpulseaudioの切り替え及びpulseaudioは外部からの接続のみとなります。
クライアントのPi4はデフォルトでpulseaudioはインストールされています。ユーザーは~/.config/pulse/client.confのdefault-server(IPアドレス)をmoOdeに向けることで音声はmoOdeに接続されたアンプ、スピーカーから出力します。例えば物理的な音声デバイスの無いSBCでもネットワーク、そしてpulseaudioをインストールできる環境であればpulseaudioを介して音声を出力できる可能性があります。(当サイトで試したSBCは可)
Pi4 + firefoxでYouTube視聴例 映像はPi4 音声はpulseaudioでmoOde audioから再生

TigerVNCサーバー

作成したサイマルラジオやラジコプレーヤーはXアプリケーションのためvnc serverを立ち上げます。
起動時もpulseaudioがスタートしていることがあるのでここで明示的にkillallしています。
vncbootで起動したvncserverを持続させるため最後の/usr/local/bin/dwmは”&”を付けないで実行します。ここらは従来の挙動とは若干違っていると思います。
必要なアプリケーションは起動後スクリプトまたは個別に起動

~/.vnc/xstartup

#!/bin/sh
xrdb $HOME/.Xresources
date.sh & # 時計
~/.fehbg  # 壁紙
xbindkeys &
uim-xim &
sleep 1
xterm -e ranger ~/ &
sleep 1
sudo killall -q pulseaudio
sleep 1
/usr/local/bin/dwm

残念ながらJCBAサイマルラジオはRadimo(レディモ)が導入されたせいかURLも変更となり4月中旬以降mpdからは再生不可となりました。使用する頻度は少ないのですが代わりにmoOde audioのラジオ局を登録しています。(よく聞くラジオ局はクイックに選局可)
登録しているラジオサイトはmpd,pulseaudioを自動で切り替えます。moOde playerを直接再生する場合のみpulseaudioコントロールからmpdモードに切り替えます。
pavucontrolは以前と比べると起動が遅い感じがします。(あまり支障が無い)

pulseaudioコントロール(pulse.php)やサイマルラジオのプログラムは順次次回の記事で紹介したいと思います。

Raspberry Pi 4 bullseye(32bit) SSD

マイクロSDにインストール、動作確認出来たところで再度SSDにクリーンインストールしました。

SSD


120GB 楽天ポイントで購入済のもの、現在は少し値上がりしていますね。


SATA-USB3 変換アダプタ こちらも楽天で購入
チップセット:ASMedia ASM1153E

インストール

インストールディスクの作成はマイクロSD作成時と同様。新品のSSDはgpartedからはデバイスを選択、デバイス –> パーテーションテーブルの作成で見えてきます。

デフォルトはOS書き込み後起動するとrootfsを拡張します。当サイトでは書き込み後適当にパーテーションを区切っています。起動すると拡張領域が無いよと言ってそこで止まっていますが強制的に再起動すると通常通りのインストール画面になります。
インストール終了後/dev/sda3をホームディレクトリとして環境を構成しています。

/etc/fstab
fstab(ホームディレクトリ)はオプションownerを入れることでログインユーザーのディレクトリとして認識します。

proc            /proc           proc    defaults          0       0
PARTUUID=4a422963-01  /boot           vfat    defaults,flush    0       2
PARTUUID=4a422963-02  /               ext4    defaults,noatime  0       1
PARTUUID=4a422963-03  /home/pi        ext4    defaults,owner,noatime  0       2
PARTUUID=4a422963-04  /home/data      ext4    defaults,noatime  0       2

起動

SSDからの起動はPi4のUSB3端子に接続します。従来はマイクロSDが接続してあれば優先して起動していましたが現在のbullseyeではSSDが優先します。マイクロSDから起動したい場合はSSDを外すことになります。

デスクトップ用途ではSSDはマイクロSDと比較するとかなり快適に動作します。

Raspberry Pi 4 bullseye(32bit)

Raspberry Pi OS 64bit版も正式公開になっていますが当サイトの環境では一部のアプリケーションが異常終了してしまうため32bit版で構成してみました。

/boot/config.txt

# For more options and information see
# http://rpf.io/configtxt
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_drive=1
# pi4 display(HP)
hdmi_cvt 1920 1080 60 3
dtparam=audio=on
display_auto_detect=1
disable_overscan=1
# Enable DRM VC4 V3D driver
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
[pi4]
arm_boost=1

64bit版は以下を追記
# Run in 64-bit mode
arm_64bit=1

インストール

ロケールを設定
デフォルトのpiユーザーは廃止されたので別途ユーザーを登録
wifi設定は設定済みのwpa_supplicant.confをbootに入れておくと簡単

当サイトではデスクトップページャーを設定しています。LXPanelは寸詰まり。ワークスペースを切り替えると画面はオレンジ系の単色となり操作不可

openbox

Raspberry Pi OS(bullseye)のデスクトップ環境はLXDE、ウィンドウマネージャはopenboxからmutterに変更になっています。但し2GB以下のメモリシステムはウィンドウマネージャにopenboxが適用されるようです。
Pi4(4GB)にopenboxを設定
Use openbox instead of mutter in rpi4 2-4-8gb

/etc/xdg/lxsession/LXDE-pi/desktop.conf
window_manager=openbox

openboxを適用するとlxappearanceはsegmentation fault
lxappearance is giving me an error

sudo apt remove lxappearance-obconf


LXPanelの寸詰まりは変わりませんがデスクトップページャーは使えそうです。余白を調整して右寄せ
ウィジェットはAdwaita-Dark、アイコンテーマはHighContrast

# apt install gnome-accessibility-themes


以前のBusterからは個人のユーザーディレクトリ、またシステムのパスワード関連ファイルをコピーしています。
必要なアプリケーションをインストール、最低限の設定で以前の基本環境を復元(細部は要調整)。

wiringpiは正式にリポジトリから外れたようなので今までのGPIOコマンドはraspi-gpioコマンドに一本化しようと思います。
chromium-browserでは相変わらず~/.config/pulse/client.confの設定を無視しているようです。ブラウザからの動画再生などはfirefoxを使うことにします。
今回の現象は当サイトだけの問題かもしれませんがこれでしばらく様子を見ようと思います。
また64bit版は正式公開になっていますが安定するのはもう少し時間が掛かると思っています。

らじる★らじるのURL

2月28日未明よりMPD経由のNHKラジオらじるらじるが再生不可になっていました。

らじる★らじる

ホームページを覗いてみると

なにかシステムに変更があったようです。

ブラウザ(firefox)のプレーヤーからは正常に再生します。
右クリック -> 調査 -> ネットワーク -> ファイル -> m3u8 -> URLコピー

アカマイからnhk.jpのサーバーに変更になっていますね。
旧 NHK R1 東京 https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8
新 NHK R1 東京 https://radio-stream.nhk.jp/hls/live/2023229/nhkradiruakr1/master48k.m3u8

新URL

"NHK R1 札幌   https://radio-stream.nhk.jp/hls/live/2023545/nhkradiruikr1/master48k.m3u8"
"NHK FM 札幌   https://radio-stream.nhk.jp/hls/live/2023546/nhkradiruikfm/master48k.m3u8"
"NHK R1 仙台   https://radio-stream.nhk.jp/hls/live/2023543/nhkradiruhkr1/master48k.m3u8"
"NHK FM 仙台   https://radio-stream.nhk.jp/hls/live/2023544/nhkradiruhkfm/master48k.m3u8"
"NHK R1 東京   https://radio-stream.nhk.jp/hls/live/2023229/nhkradiruakr1/master48k.m3u8"
"NHK FM 東京   https://radio-stream.nhk.jp/hls/live/2023507/nhkradiruakfm/master48k.m3u8"
"NHK R1 名古屋   https://radio-stream.nhk.jp/hls/live/2023510/nhkradiruckr1/master48k.m3u8"
"NHK FM 名古屋   https://radio-stream.nhk.jp/hls/live/2023511/nhkradiruckfm/master48k.m3u8"
"NHK R1 大阪   https://radio-stream.nhk.jp/hls/live/2023508/nhkradirubkr1/master48k.m3u8"
"NHK FM 大阪   https://radio-stream.nhk.jp/hls/live/2023509/nhkradirubkfm/master48k.m3u8"
"NHK R1 広島   https://radio-stream.nhk.jp/hls/live/2023512/nhkradirufkr1/master48k.m3u8"
"NHK FM 広島   https://radio-stream.nhk.jp/hls/live/2023513/nhkradirufkfm/master48k.m3u8"
"NHK R1 松山   https://radio-stream.nhk.jp/hls/live/2023547/nhkradiruzkr1/master48k.m3u8"
"NHK FM 松山   https://radio-stream.nhk.jp/hls/live/2023548/nhkradiruzkfm/master48k.m3u8"
"NHK R1 福岡   https://radio-stream.nhk.jp/hls/live/2023541/nhkradirulkr1/master48k.m3u8"
"NHK FM 福岡   https://radio-stream.nhk.jp/hls/live/2023542/nhkradirulkfm/master48k.m3u8"
"NHK R2 全国   https://radio-stream.nhk.jp/hls/live/2023501/nhkradiruakr2/master48k.m3u8"

moodeaudioにラジオ局登録してあればURLを変更

サイマルラジオ関連を修正、復活しました

Top