Raspberry Pi Zero moOde audio 630(vnc server)

前回のWiFiを無効にしたZero(w)は無駄になるので素のZeroと選手交代しました。

今回はvncserverを導入してX環境を構築してみたいと思います。
moOde audioにはデスクトップ環境はありませんがXorgはインストールされています。(動いてはいませんが)使いたいときは好きなウインドウマネージャーを入れて勝手にしろよということだと思います。

Zero + moOde audioのX環境は少し重くなるかもしれませんが今回もtightvnc + dwmの組み合わせで構築してみたいと思います。

初期設定

sshでログインしてraspi-config実行

$ ssh pi@moode or ip address
$ sudo raspi-config


4 Localisation OptionsからLocaleとTimezone
7 Advanced OptionsからA1 Expand Filesystem Ensures
を実行してreboot

再ログイン、update upgradeはしばらくかかります。
(kernel更新あり)

# apt update && apt upgrade

X環境

tightvnc

# apt install tightvncserver autocutsel

ユーザー権限でvncserverを起動してパスワードだけ設定しておきます。

$ vncserver

~/.vnc/xstartup

#!/bin/csh
xmodmap -e "keysym Meta_L = Super_L"
xmodmap -e "keysym Meta_R = Super_R"
xrdb $HOME/.Xresources
xsetroot -solid black
autocutsel -fork
xbindkeys &
cd && xterm -e ranger &
uim-xim &
uim-toolbar-gtk &
dwm &

~/.vncrc

$geometry     = "918x545";
$depth        = 24;
$desktopName  = "moOde audio";

/etc/init.d/vncboot

# chmod 755 /etc/init.d/vncboot
# systemctl enable vncboot

ウインドウマネージャーdwm
コンパイル
参考 当サイト(現在)のconfig.hの変更箇所

static const char *fonts[]          = { "monospace:size=11.5" };
static const char dmenufont[]       = "monospace:size=11.5";
static const char col_cyan[]        = "#06793C";  /* green */
static const float mfact     = 0.58; /* factor of master area size [0.05..0.95] */
static const int resizehints = 0;    /* 1 means respect size hints in tiled resizals */
#define MODKEY Mod4Mask
{ MODKEY,                       XK_u,      incnmaster,     {.i = -1 } },
{ MODKEY,                       XK_q,      killclient,     {0} },

MODKEYはwinkey
縦分割、横分割はMODKEY + iとMODKEY + u
アプリケーションの終了はMODKEY + q

日本語環境
最近はセットアップに必要なファイルはディレクトリzzzに纏めておきそれをカードのルートディレクトリにコピーしています。使い終わったら片付けるかセキュリティー上支障が無ければそのままでもいいと思います。
65-fonts-*も/zzz/font_setに入れておきます。65-fonts-*はこのへん
/zzz/font_set/font_set.sh

#!/bin/sh
sudo apt install -y fonts-ipafont fonts-ricty-diminished
sudo apt install -y uim uim-anthy uim-xim uim-gtk2.0
sudo cp /zzz/font_set/65* /etc/fonts/conf.avail
cd /etc/fonts/conf.d
sudo ln -s ../conf.avail/65-fonts-ipa-mincho.conf
sudo ln -s ../conf.avail/65-fonts-ipa-pgothic.conf
sudo ln -s ../conf.avail/65-fonts-monospace.conf

実行

# sh /zzz/font_set/font_set.sh

moOde audioのbash環境ではuim設定をうまく読み込んでくれないようです。
tcshをインストール~/.cshrcに設定してxstartupスクリプトは#!/bin/cshにしています。

# apt install tcsh
~/.cshrc
setenv  LANG   ja_JP.UTF-8
setenv  XMODIFIERS @im=uim
setenv  GTK_IM_MODULE uim
setenv  QT_IM_MODULE uim

ファイルマネージャーranger その他

# apt install ranger highlight xbindkeys suckless-tools python3-tk ncmpcpp

rangerの画像表示はbusterになってからうまく表示できなくなりました。
dwmのデフォルトメニューdmenuは少し使いにくいですね。xbindkeysとdmenuを利用したdmenu_mainでこれまで作成したpython menuを利用しやすくなります。

再起動する前に~/.vnc/passwdをコピー、クライアント(Pi3)の~/.vncに適当なファイル名(moode)で保存します。(パスワードが同じなら他のマシンで作成したpasswdをそのまま利用できます)
再起動したらPi3のtigervncviewerからmoodeへアクセス(名前解決できている)
ホスト名はmoodezに変更しています。

$ vncviewer -passwd /home/pi/.vnc/moode moodez:1


rangerなどの設定ファイルはほかのマシンからコピーしています。

Simul Radio

moOde playerはmpd mpcを利用しています。Xを起動したのでpython3-tkをインストールすることで作成したsimul.pyを動かすことができます。

mpdの設定はmoode audioの設定をそのまま利用します。
シングルコアのZeroはpythonなどの起動には多少時間がかかりますが起動後はほとんどストレス無く動作が可能です。
pythonプログラムやラジオ局リストはコピーして同じように配置します。(若干の修正が必要)


moOde playerはPi3のsurfブラウザからアクセス
simulラジオを再生するとmoOde playerに反映されます。
moode audioのmpdで再生することはmoOde playerで再生していることになります。
再生開始時の音量はsimul.pyでは独自に設定しているのでmoOde playerの表示とズレがあります。
ncmpcppはリアルタイムに取得します。moOde playerで音量を変更した時表示した値が適用されます。


ncmpcppにはmusic sourceなどmpdの基本情報は全て反映されています。(数字キーの1〜8)
simulラジオの音質はmoode audioの独自にbuildしたmpdでダイレクトに再生することでpulseaudioを経由するよりずいぶん良くなっていると思います。
(ラジオ局の機材、運用次第)


mpdはcpu使用率も少なく安定しています。


当サイトのmoode audioは音声関係の中心になります。
pulseaudioの導入は多少クセがありますがまた次回で。