SBC(シングルボードコンピュータ)3選 Raspberry Pi Zero W

10$クラスのSBC(シングルボードコンピュータ)を3個集めてみました。
Raspberry Pi Zero W – Orange Pi Zero – ROCKPi S
Raspberry Pi Zero WとOrange Pi Zeroはだいぶ枯れてきた感がありますがROCKPi Sは2019年発売と比較的新しいボードになります。

ローカルのサブマシンとしてX環境(Vncサーバー)で運用する予定をしています。シングルコアのRaspberry Pi Zero(w)やPi1Bでは若干重く感じてしまいます。
Raspberry Pi Zero(w)にVncサーバー + dwm を構築、マルチコアのOrange Pi Zero – ROCKPi Sにも同じような環境を構築して比較してみたいと思います。

今回は比較の元となるRaspberry Pi Zero Wの環境を構築してみます。

Raspberry Pi Zero W


左 ROCKPi S
右 OrangePi Zero
前 Raspberry Pi Zero W
特徴はそれぞれですが電子工作ベースとしてのRaspberry Pi Zero Wは40PinのGPIOと情報の豊富さ、環境などで知名度は突出していると思います。

カード作成

DHCPでIPを取得、ssh接続インストール作業を行います。母艦はPi3
2020-05-27-raspios-buster-lite-armhf.imgをカードに書き込み
/media/boot マウント
sshを有効にするため空ファイル(ssh)を作成

$ touch ssh

wifiを有効(wpa_supplicant.conf)作成 psk(パスワード)は平文

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
  ssid="aterm-xxxxxx-g"
  psk="xxxxzzxxxxvv"
  proto=RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP
  group=CCMP
  priority=2
}

カードをセットして起動

hostnameで接続

$ ssh pi@raspberrypi

raspi-configでLocalisation設定

$ sudo raspi-config


Change Locale [*] ja_JP.UTF-8 UTF-8
Change Time Zone 東京

$ sudo apt update && sudo apt -y upgrade

apt update && apt upgradeして基本設定完了。アプリケーションインストール

いきなりですがvnc clientのPi3からraspberrypi(vnc server)に接続時はこんな感じ
個々の設定は過去記事に散らばっています
以下気がついたところを記載

テキストファイルを作成、一気にインストール

$ sudo sh setup.txt

setup.txt

#!/bin/sh
# default
apt -y install tcsh lv vim
echo "--- X11 ---"
apt -y install xserver-xorg x11-xserver-utils tigervnc-standalone-server tigervnc-common
apt -y install xfonts-100dpi xfonts-75dpi xfonts-scalable xterm xbindkeys suckless-tools
echo "--- jp ---"
sh /zzz/font_set/font_set.sh
echo "--- filer ---"
apt -y install ranger w3m-img highlight poppler-utils atool mediainfo ffmpegthumbnailer
echo "--- python ---"
apt -y install python3-tk
echo "--- udiskie ---"
apt -y install udiskie libblockdev-crypto2 libblockdev-mdraid2
echo "--- wiringpi ---"
apt -y install wiringpi
echo "--- nfs client ---"
apt -y install autofs
echo "--- dwm compile ---"
apt -y install dwm
apt -y install libx11-dev libxinerama-dev libxft-dev

日本語環境 (65-fonts* 過去記事参照)
/zzz/font_set/font_set.sh

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

vnc server
vnc serverはtigervncをインストール
/etc/init.d/vncbootのstartは以下

su $USER -c 'LD_PRELOAD=/lib/arm-linux-gnueabihf/libgcc_s.so.1 /usr/bin/vncserver :1'

# 有効

$ sudo systemctl enable vncboot

~/.vnc/vnc.conf

$geometry     = "1020x655";
$depth        = 24;
$desktopName  = "raspberrypi";
$localhost    = "no";

パスワードファイル(passwd)は$ vncserverで最初に作成
vnc clientはpasswdをコピー、適当にリネームして保存、raspberrypiにパスワードなしで接続

$ vncviewer -passwd /home/pi/.vnc/raspberrypi raspberrypi:1

dwm compile
コンパイル済のdwmが無い場合は一旦パッケージからインストール
コンパイルしたらパッケージはremove

Input method(インプットメソッド)
uim-anthy uim-mozc 両方入れるのが吉 設定でuim-mozcをメイン
bash環境ではうまく認識できなかったので.cshrcから読み込んでいます。
xstartup #!/bin/csh
~/.cshrc

setenv  LANG ja_JP.UTF-8
setenv  XMODIFIERS @im=uim
setenv  GTK_IM_MODULE uim
setenv  QT_IM_MODULE uim

~/.uim – 変換中文字化け対策

(define uim-pref-suppress-dot-uim-warning-dialog? #t)
(define uim-xim-use-xft-font? #t)
(define uim-xim-xft-font-name "monospace")

udiskie – USBメモリ(カード)auto mount
/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla 新規作成

[udisks1]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach
ResultAny=yes

[udisks2]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks2.filesystem-mount;org.freedesktop.udisks2.encrypted-unlock;org.freedesktop.udisks2.eject-media;org.freedesktop.udisks2.power-off-drive;org.freedesktop.udisks2.filesystem-mount-system
ResultAny=yes

[udisks2-other-seat]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks2.filesystem-mount-other-seat;org.freedesktop.udisks2.filesystem-unmount-others;org.freedesktop.udisks2.encrypted-unlock-other-seat;org.freedesktop.udisks2.eject-media-other-seat;org.freedesktop.udisks2.power-off-drive-other-seat
ResultAny=yes

~/.Xresources

XTerm*utf8              : 1
XTerm*locale            : false
XTerm*faceName          : monospace
XTerm*faceSize          : 9
XTerm*fontDoublesize    : true
XTerm*saveLines         : 2000
XTerm*geometry          : 80x24
XTerm*charClass: 33:48,37:48,45-47:48,38:48,64:48

XTerm*background: #222222
XTerm*foreground: #DDDDDD
XTerm*color0:     #333333
XTerm*color1:     #A94952
XTerm*color2:     #83A949
XTerm*color3:     #A99F49
XTerm*color4:     #385A70
XTerm*color5:     #A94983
XTerm*color6:     #49A99F
XTerm*color7:     #AAAAAA
XTerm*color8:     #666666
XTerm*color9:     #ED6975
XTerm*color10:    #B8ED69
XTerm*color11:    #EDE169
XTerm*color12:    #69B8ED
XTerm*color13:    #ED69B8
XTerm*color14:    #69EDE1
XTerm*color15:    #DDDDDD

その他
xbindkeys
Altキー Ctrlキー Menuキー などを軸に使いやすいキーを設定
date.sh タイトルバー時刻 sleepは適当に(chmod 755 date.sh)

#!/bin/sh
# dwm title bar clock
while true; do
  xsetroot -name "$(date +" %R ")"
  sleep 5
done

~/.vnc/xstartup – 以上からxstartupはこんな感じ

#!/bin/csh
xrdb $HOME/.Xresources
xsetroot -solid gray3
xsetroot -cursor_name left_ptr
vncconfig nowin=1 &
udiskie -F -N &
~/bin/date.sh &
xbindkeys &
uim-xim &
xterm -e ranger ~/ &
dwm &
sleep 1
uim-toolbar-gtk &

/etc/dphys-swapfile
swapファイルは100MB設定されていますがコメントアウトすることで実メモリの2倍程度が割り当てられます。実際には遅いので使えないのですがハングアップ防止くらいには役立つと思います。

/etc/dphys-swapfile
#CONF_SWAPSIZE=100

$ sudo systemctl restart dphys-swapfile


python3 tkinterや軽量のアプリケーションは問題なく実行可能です。
Raspberry Pi3などと比べると描写の速度は遅いのですが実用範囲と思います。


wifi接続のZero W本体は電源を供給するだけなので電子工作の実験環境などには最適と思います。
タグ(ワークスペース)は自由に使えるので作業効率も良くなります。

radiko(ラジオ局)のロゴ画像を表示する

moOde audioのラジオ局登録機能によってサイマルラジオの殆どがロゴ画像を表示できるようになったことでメジャーなラジオ局(radiko)が色褪せて聴こえるようになってしまいました。

2020年末Flashのサポート終了に伴っていつまでラジコスクリプトが使えるかわかりませんがbrowserからは使いたくないのでそれまでは使っていこうと思います。

moOde playerにradikoのロゴ画像を表示させることはできないのでpulseaudioコントロール(pulse.php)でロゴ画像を表示してみたいと思います。

pulseaudioコントロール

web browserからpulseaudioをコントロールするためにはmoOde audioのwww-dataにホームディレクトリ、各権限を設定cssを導入する必要があります。(過去記事参照)

moOde audioはMPDモードで起動します。
moOdeボタンでPlay Listに登録があれば再生を開始
Play Listが空の場合はpulse.phpのdefault play listをaddして再生
以降はmpc pause mpc playのトグル
MPD再生中はこのロゴ画像

ロゴ

ロゴ画像は300×60サイズのjpg画像を用意、ディレクトリ作成(/var/www/html/img)
pulse.phpはラジオ局の接続IDを取得するのでファイル名は各ラジオ局(ID.jpg)とします
ex FMT.jpg BAYFM78.jpg moode.jpg pulse.jpg
参考 /var/www/html/pulse.php

<!-- Volume monitor -->
<?php
---
// radiko logo
    $station = shell_exec("ps ax | grep rtmpdump | grep -v grep | awk '{print substr($9,1)}' | tr -d /_definst_");
    if ($pulse == TRUE) {
        if ($station == NULL) {
            $station = ('pulse');
        }
    }else{
        $station = 'moode';
    }
?>

--- ボタン部の最後に
<a href="pulse.php?id=top"><img src="http://moodez/html/img/<?php print_r($station); ?>.jpg"></a>


pulseボタンまたは空白ボタンでmpc stop pulseaudio –start
radiko再生中はpulseボタンで停止
白ボタンはデフォルト値をセット
外部からの接続待ち


サイマルラジオからradiko再生開始
Refreshで設定した時間内に自動更新(60秒に設定適当に)
タイミングによってはもう1サイクルずれることあり
ロゴ画像をクリックすると更新するので使いやすい時間を設定

<!-- Refresh 60s -->
<meta http-equiv="Refresh" content="60;URL=pulse.php?id=top">


ボタン上のタイトル文字は以下で変更可

<!-- Volume monitor -->
$_SESSION['broad'] = "pulse raspberryPi Zero"; // pulseaudio
$_SESSION['broad'] = "pulse moOde audio"; // MPD

pulseaudio接続は再生が終了すると–killしてしまいます。明示的に–killする以外は–startを保持するためpavucontrolを起動しておきます。
raspberrypi zeroはスペック上厳しくなってきたので常時稼働のファイルサーバーでpavucontrolを起動しておくことにしました。
設定が正しければサイマルラジオからはmpd pulseaudioは自由に選局、再生可能のはずです。
音を出す前に十分確認、テストを実行するようにします
またサイマルラジオ以外からはpulseaudio系の音源は実行しないようにします


いい感じだと思います。使わないときは巻き上げるなりしておきます。

しばらく使えるといいのですが!

ロゴ画像はwebから拾ってGimpのキャンパスサイズの変更、拡大縮小で簡単に作成できると思います。
参考までに作成した関東エリアのロゴ画像を置いておきます。




 




Python3 tkinter - サイマルラジオ

サイマルラジオは機能本位ということで使いやすいよう適当にボタンを追加したり色を付けたりしている程度なのですが今回はリストボックスの見栄えを少し変更してみました。

変更点はListBoxの背景と文字色、Frameを弄っただけですが少し見栄えが改善したと思います。

Python3 Tkinter

設定例(環境によって変更)

mainにデフォルト設定を書き入れています。
Listboxはmainと実行部に2箇所あるので変数にしてデフォルト設定部で変更
背景色 bg_color 文字色 fg_color
ListboxのFrame1は少し引っ込み(sunken)を入れています

# --- main ----
if __name__ == '__main__':
    root = Tk()
    root.title('Simul Radio')
    root.configure(background='#333333') # Background color
    style = ttk.Style()
    style.theme_use('default') #('clam', 'alt', 'default', 'classic')
    #style.configure('TButton', background='#D9D9D9') # Button color
    # Listbox(color high-width)
    bg_color='#222222'; fg_color='#ffffff'; lb_h = 22; lb_w = 73
   
    # Listbox Font
    listfont = Font(family="Helvetica",size=10)
    root.option_add("*Listbox*Font", listfont)

    # Frame
    frame0 = ttk.Frame(root, padding=1)
    frame0.grid()
    frame1 = ttk.Frame(
        root,
        relief='sunken',
        borderwidth=1)
    frame1.grid()
    frame2 = ttk.Frame(root, padding=6)
    frame2.grid()
    frame3 = ttk.Frame(root, padding=6)
    frame3.grid()

    # Listbox
    with open(t, 'r') as f:
        proc = f.read()
        currencies = (proc)
        v1 = StringVar(value=currencies)
        lb = Listbox(frame1, listvariable=v1,background=bg_color,foreground=fg_color, height=lb_h,width=lb_w)
        lb.grid(row=0, column=0)


背景 白、文字 黒
background=’#ffffff’
foreground=’#222222′


背景 青、文字 白
background=’#1F4660′
foreground=’#ffffff’

参考

simul_20200815.py (ダウンロードで日本語表示)
moOde radioはファイル名変更(moode.list)
favorite1〜favorite5に変更
その他修正

moOde audio 671 – サイマルラジオ

moOde audio 670で100局位登録、正常にExport Importできたところで調子に乗って計210局登録
moOde audio 671を新規インストール、移行・・・見事Importに失敗してしまいました。
具体的な現象としてはImporting…のままImport completeにならない
やむを得ないので手作業でデータベースに追加してみることにします。

ラジオデータ復活

cfg_radio.csv
予め670からExportしたcfg_radio.csvから登録した500番以降のデータを取り出しておきます。(cfg_radio.csv.500)

$ cat cfg_radio.csv | awk -F "," '$1 >= 500 {print}' > cfg_radio.csv.500

新規インストールした671を起動、moode-sqlite3.dbのバックアップを取ってcfg_radio.csvをExport
/var/local/www/db/moode-sqlite3.db

# cd /var/local/www/db
# cp -p moode-sqlite3.db moode-sqlite3.db.671.def
# sqlite3 -csv moode-sqlite3.db "SELECT * from cfg_radio ;" > cfg_radio.csv

670で登録作成した500番以降のデータcfg_radio.csv.500のデータをデフォルトのcfg_radio.csvに追記

# cat cfg_radio.csv.500 >> cfg_radio.csv

追記したcfg_radio.csvをImport

# sqlite3 moode-sqlite3.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> .separator ,
sqlite> delete from cfg_radio;
sqlite> .mode csv
sqlite> .import cfg_radio.csv cfg_radio
sqlite> .exit

エラーメッセージが無ければ正常に読み込んでいるはずです。
インポートした内容を確認

# sqlite3 moode-sqlite3.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> .separator ,
sqlite> select * from cfg_radio;
sqlite> .exit

plsファイル 画像ファイル

670で作成された各ファイルはUSB経由でコピーするかカードを他のマシンに挿してコピーするかします。
plsファイル /var/lib/mpd/music/RADIO
画像ファイル /var/local/www/imagesw/radio-logos
画像ファイル(200×200) /var/local/www/imagesw/radio-logos/thumbs

以上で再起動するとブラウザのラジオリストにはデフォルトのラジオ局しか見えていませんがサイマルラジオからは正常に再生、moOde playerにも画像が表示されます。(サイマルラジオはcfg_radio.csvを読み込み)
ここで新規にラジオ局を登録するとインポート、登録したラジオ局がブラウザに全て見えてきます。
当サイトでは適当なラジオ1局を削除してcfg_radio.csvをImport、該当するplsファイルを削除して起動、再度削除したラジオ局を再登録することで同様に再現することができました。
新規登録及びExportは正常ですがやはりImportは失敗します。
原因は不明ですがImportの際Radio Managerから認識、書き込みできないラジオ局があるのかもしれません。

サイマルラジオ


登録したデータが戻ってきました。
手間としてはさほど変わらないので登録したデータが活きてくれれば取り敢えずいいことにします。
しばらく使ってみて原因を追求(?)、様子を見たいと思います。

登録してあるラジオ局はデフォルトを含め350前後となりmoOde playerのラジオリストからは見通しが悪くなります。
デフォルトのラジオ局をサイマルラジオのfavoriteボタンに登録することにします。
サイマルラジオからはcfg_radio.csvは~/radioに読み込みします。
リストfavorite3は~/radio/FAVORITE/simul-default/favorite3にあるものとします。任意(以下1行)

$ cat ~/radio/cfg_radio.csv | awk -F "," '$1 <= 192 { print $3,$2}' | tr -d '"' | sed 's/^/"/;s/$/"/' > FAVORITE/simul-default/favorite3


デフォルトは192まで登録されています。
awk カンマ区切り3項目、2項目を出力
tr ダブルクォートを削除
sed 再度両端にダブルクォート付け替え
画像のリストは少しだけ編集しています。
削除されたラジオ局のデータも少し残っています(DELETED)
BBC(320Kbps)などは接続不可(多分国別制限と思います)


よく聞くラジオ局は決まってくると思います。
ラジオリストでフォーカス(選択)するとコピーできます。
favorite6に再登録、Area Editで開く。xtermは中ボタンクリックでペースト、ダブルクォートを付け加えるだけでOK
サイマルラジオからの再生は mpc add url && mpc play
再生、画像表示も問題なく実行します。
音量はサイマルラジオで設定したデフォルト値を適用


CSRAのmms://関連はあまり音が良くないこと、画像も表示しないことからcsra8に纏めました。
九州、沖縄を統合しています。


moOde playerからPlayしたラジオやアルバムはON AIRボタンでタイトルバーに最低限の表示をします。
Play Listの先頭にある情報を検索します。
アルバムはアーティストのみ表示
moOde audio関連はブルーのタイトルバーにしています。


参考(暫定です*ダウンロードで日本語正常表示)
simul.py
simul-vol.py
killall.sh
default setは適宜変更
ラジオリスト、設置方法は過去記事


ナチュレボタンでmpdをリスタート

サイマルラジオ局(障害)によっては極稀に接続状態のまま操作不可になることがあるようです。
/var/lib/mpd/stateを削除、mpdをリスタート
mpdのタイムアウトを待って実行するようでしばらく時間がかかることがあります。
stateファイルは再生開始時mpdが自動作成

# Button1001 nature
def nat1001():
    proc = messagebox.askokcancel('Confirmation', "mpd restart ?")
    if proc == True:
        subprocess.run("~/bin/killall.sh", shell=True)
        time.sleep(1)
        subprocess.run("sudo rm /var/lib/mpd/state && sudo systemctl restart mpd", shell=True)
icon1001 = PhotoImage(file=dir+'64x64/nature.png')
button1001 = ttk.Button(frame1,image=icon1001,command=nat1001)
button1001.grid(row=2,column=4)

moOde audio 670 - サイマルラジオ

moOde audio 6.7.0アップデートしています。カーネル更新が主のようです。

660で80局ほどラジオ局をmoOde audioに登録してみました。moOde audio 670の新規インストールにスムーズに再登録できるか試してみることにします。
ロゴ画像の有無は本来のラジオ局としてはなにも変わるところは無いのですが印象はずいぶん違ってきます。
ということで暫定的ですが(常に暫定です)サイマルラジオからもmoOde playerにロゴ画像を表示できるよう対応してみました。
moOde playerで正常に登録再生、画像が表示できている必要があります。サイマルラジオから選局、ラジオ局ごとに音量設定します。従来のラジオリストなどそのまま利用します。

ラジオ局データ

登録したラジオ局データ(plsファイル、画像、cfg_radio.csv)はExportしてバックアップしておきます。
moOde audio 670をインストールが完了したらデフォルトのmoode-sqlite3.dbをExport、展開してバックアップしたplsファイル、画像ファイルを所定のディレクトリにコピー
cfg_radio.csvは500番以降を纏めています。(cfg_radio.csv.bak)
デフォルトのcfg_radio.csvに追記

$ cat cfg_radio.csv.bak >> cfg_radio.csv

編集が完了したらzipで圧縮(ファイル名は適当)

$ zip -r stations670 var

moOde audioのRadio MnagerからImport stations670.zip
ブラウザを再読込 問題なくデータが復活しました。

サイマルラジオ

サイマルラジオはリストボックスからラジオ局(url)を選択して再生を開始します。

$ mpc add url

moOde playerはplsファイルを選択、プレイリストに登録します。

$ mpc load xxx.pls

いずれも実際にアクセスするのはurlを使用することからサイマルラジオは/var/local/www/db/moode-sqlite3.dbから取得したcfg_radio.csvのurlを照合、station nameを取得してラジオ局.plsをmpc loadします。
”mpc load” “mpc play”することでmoOde playerと全く同じ動作をすることになりJCBAもサイマルラジオからmoOde playerにロゴ画像が表示可能になります。
moOde playerに未登録の場合はテキストのラジオリストからmpc addすることで今までどおりの動作で再生します。

サイマルラジオとmoOde playerを連携させるためにはサイマルラジオのラジオリストに登録してあるラジオ局名でmoOde playerに登録します。
ラジオ局の登録は画像ファイルを用意、手順が慣れてくるとstation name、URI、画像を選択で間違いなく登録できます。URIはhttp://でOK

参考 simul.py simul-vol.py

simul.py
simul-vol.py

cfg_radio.csvの取得

サイマルラジオにはcfg_radio.csvを取得するボタンを追加しています。
moOde playerに登録したらサイマルラジオから読めるよう最新の情報を取得(設定しているradioディレクトリに保存)

$ sqlite3 -csv /var/local/www/db/moode-sqlite3.db 'SELECT * from cfg_radio ;' > ~/radio/cfg_radio.csv


CSRA(ListenRadio)はロゴ画像を表示するのですがPlaylistタイトルはurlの末尾になります。
cfg_radioボタンをクリックするとmoode-sqlite3.dbからcfg_radio.csvを取得
urlを検索、照合して*.plsをload


再度Play
plsファイルをloadできていればPlaylistタイトルは*.plsに記載されているラジオ局になります。
Emptyボタンはcfg_radio.csvを空にします。(確認、実験用)
上記のように従来の動作をします。

moOde playerで正常に画像表示、サイマルラジオから画像表示などしない場合は登録したラジオ局名とラジオリストの登録名称に違いがある可能性があります。


JCBAもサイマルラジオから画像表示できるようになりました。
こんなロゴ画像だと内容はともかく取り敢えず聞き入ってしまいます(イメージは大切です)
サイマルラジオのタイトルーバーは色を変更しています。
起動時、停止 黒
CSRA NHK 赤
JCBA radiko 緑


サイマルラジオのタイトルーバーもラジオ局名からタイトル用リストを検索しています。
従来のリストは少々間違いや食い違いがあります。
今回気がついたところ
CSRA 正 FMおとくに – 誤 レディオ湘南 大きな間違い
JCBA FMふくろう FM サルース 表記違い


サイマルラジオは局間の音量差が大きいのでvolリストを作成してコントロールしています。
mpc volumeの正しい値はncmpcppにリアルタイムに表示します。
もちろんmoOde Playerからもコントロールできますがサイマルラジオなど外部から変更した値はリアルタイムに追従しません。
今回plsファイル用にsimul-vol.pyを書き換えています。
当サイトの環境では動作を確認していますが設定の違いにより意図したとおり動くとは限らないため音を出す前にncmpcppの値を見ながら充分確認、チェックが必要です。
サイマルラジオのvol-defボタンはsimul-vol.pyを実行します。volリストを作成したらその値が適用されます。±はpulseaudioがスタートしていればpulseaudioをその以外はmpc volumeを適用します。

Top