ネットチューナー なのか ウェブラジオ なのか一般的な呼び名が分かりませんが、最近では私の居る部屋で常に バックグラウンド ミュージック を流しっぱなしのサーバーが置かれています。これについてのメモを残しておきます。
かなり完成度の高いシステムで、 Volumio 2 と言うシステムが公開されていて、それを単純にダウンロードして micro SD にコピーして利用しています。他の書き込みでメモしている部分もあるようなので、重複しているものもあるかと思われますが、適当にメモとして記述しておきます。
夜に重宝するのが、極端な強弱を伴わない静かなサウンドトラック等を常時流してくれる局で、ゆっくり聞きながら眠りにつけるのでとても重宝しています。
volumio@volumio1:~$ gpio -v gpio version: 2.44 Copyright (c) 2012-2017 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details: Type: Pi 3, Revision: 02, Memory: 1024MB, Maker: Unknown * Device tree is enabled. *--> Raspberry Pi 3 Model B Rev 1.2 * This Raspberry Pi supports user-level GPIO access. volumio@volumio1:~$ gpio readall +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | ALT0 | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | ALT0 | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 1 | 37 || 38 | 0 | ALT0 | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | ALT0 | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
この Volumio と呼ばれるシステムは、バージョンが 2 となって公開されているシステムで、raspbian OS が基になっているようですが、基本的にセキュリティアップデートを対象としていないようで、過去に古いレビジョンの Volumio で利用していてシステム内から最新版に更新したことがありました。結果は今一つな感じで仕切り直して新しくクリーンインストールした経験を持ちます。
単純に最新版をクリーンインストールすると、過去に選択した局の情報が引き継げないので、吟味して選択しながらまとめた情報はもったいないのでバックアップしておき、インストール後に戻すのが良いと思われます。
$ ssh volumio@volumio1.local volumio@volumio1.local's password: ___ /\_ \ __ __ __ ___\//\ \ __ __ ___ ___ /\_\ ___ /\ \/\ \ / __`\\ \ \ /\ \/\ \ /' __` __`\/\ \ / __`\ \ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \ \ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/ \/__/ \/___/ \/____/ \/___/ \/_/\/_/\/_/\/_/\/___/ Free Audiophile Linux Music Player - Version 2.0 C 2015 Michelangelo Guarise - Volumio Team - Volumio.org Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. volumio@volumio1:~$
ssh でリモート接続して参照した一部の情報を次に示します。
volumio@volumio1:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 282.6M 0 loop /static mmcblk0 179:0 0 14.4G 0 disk |-mmcblk0p2 179:2 0 2.3G 0 part /imgpart |-mmcblk0p3 179:3 0 12.1G 0 part `-mmcblk0p1 179:1 0 61M 0 part /boot volumio@volumio1:~$ df Filesystem Size Used Avail Use% Mounted on /dev/mmcblk0p2 2.4G 673M 1.6G 31% /imgpart /dev/loop0 297M 297M 0 100% /static overlay 274M 220M 34M 87% / devtmpfs 497M 0 497M 0% /dev tmpfs 509M 0 509M 0% /dev/shm tmpfs 509M 35M 475M 7% /run tmpfs 5.3M 4.1k 5.3M 1% /run/lock tmpfs 509M 0 509M 0% /sys/fs/cgroup tmpfs 509M 25k 509M 1% /tmp tmpfs 509M 0 509M 0% /var/spool/cups tmpfs 21M 9.7M 12M 47% /var/log tmpfs 509M 0 509M 0% /var/spool/cups/tmp /dev/mmcblk0p1 63M 39M 25M 61% /boot //RPI1-DISK/共有/volumio 317G 175G 143G 56% /mnt/NAS/共有 tmpfs 102M 0 102M 0% /run/user/1000 volumio@volumio1:~$ sudo cat /etc/fstab [sudo] password for volumio: proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults,utf8,user,rw,umask=111,dmask=000 0 1 tmpfs /var/log tmpfs size=20M,nodev,uid=1000,mode=0777,gid=4, 0 0 tmpfs /var/spool/cups tmpfs defaults,noatime,mode=0755 0 0 tmpfs /var/spool/cups/tmp tmpfs defaults,noatime,mode=0755 0 0 tmpfs /tmp tmpfs defaults,noatime,mode=0755 0 0 tmpfs /dev/shm tmpfs defaults,nosuid,noexec,nodev 0 0 volumio@volumio1:~$ mount /dev/mmcblk0p2 on /imgpart type ext4 (rw,relatime,stripe=1024,data=ordered) /dev/loop0 on /static type squashfs (ro,relatime) overlay on / type overlay (rw,relatime,lowerdir=/mnt/static,upperdir=/mnt/ext/dyn,workdir=/mnt/ext/work) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=485032k,nr_inodes=121258,mode=755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct) mqueue on /dev/mqueue type mqueue (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) tmpfs on /tmp type tmpfs (rw,noatime,mode=755) tmpfs on /var/spool/cups type tmpfs (rw,noatime,mode=755) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) tmpfs on /var/log type tmpfs (rw,nodev,relatime,size=20480k,mode=777,uid=1000,gid=4) configfs on /sys/kernel/config type configfs (rw,relatime) tmpfs on /var/spool/cups/tmp type tmpfs (rw,noatime,mode=755) /dev/mmcblk0p1 on /boot type vfat (rw,nosuid,nodev,noexec,relatime,fmask=0111,dmask=0000,allow_utime=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro) rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime) //RPI1-DISK/共有/volumio on /mnt/NAS/共有 type cifs (ro,relatime,vers=default,cache=strict,username=sunao,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.11.23,file_mode=0666,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=99412k,mode=700,uid=1000,gid=1000)
各種データの格納先ディレクト
どこに何が格納されているのかは、はっきり言ってよく分かりません。また、どのようなフォーマットを必要としているのかも不明です。
ただ、選択したラジオ局のプレイリスト、演奏中や演奏待ちのキューは、 /data 下のディレクトリに集められているらしいので、コマンド tree をインストールしてディレクトリ部分だけをリストにしたものを次に示します。
volumio@volumio1:~$ tree -d /data /data |-- INTERNAL |-- albumart | |-- folder | |-- metadata | `-- web | |-- 1.FM%20-%20Bossa%20Nova%20Hits%20Radio | |-- 1.FM%20-%20Movie%20Soundtracks%20Hits%20Radio | |-- 1000%20HITS%2070s | |-- 1000%20HITS%20Oldies | |-- 181.FM%20Christmas%20Swing | |-- FeLove%20Cl%C3%A1sica | |-- J-Pop%20Powerplay%20-%20Kawaii | |-- J-Pop%20Sakura | |-- J1%20Gold%20-%20Japan%27s%20Oldies | |-- JamendoLounge | |-- Japan%20Hits%20-%20Asia%20DREAM%20Radio | |-- Johann%20Sebastian%20Bach | | `-- Goldberg%20Variations%20(feat.%20piano%3A%20Chen%20Pi-Hsien) | |-- Radio%20Caprice%20-%20Bossa%20Nova | |-- Radio%20Caprice%20-%20Swing | |-- Radio%20Caprice%20-%20Symphony | |-- Retro%20Oldies%20Radio | `-- Swinging%20Radio%20England |-- backgrounds |-- configuration | |-- audio_interface | | `-- alsa_controller | |-- miscellanea | | |-- alarm-clock | | |-- albumart | | |-- appearance | | |-- my_music | | `-- wizard | |-- music_service | | |-- lms | | |-- mpd | | |-- squeezelite | | |-- streaming_services | | | |-- services_configs | | | `-- services_tokens | | |-- upnp_browser | | `-- webradio | `-- system_controller | |-- i2s_dacs | |-- my_volumio | |-- network | |-- networkfs | |-- system | |-- volumio_command_line_client | `-- volumiodiscovery |-- favourites |-- playerstate |-- playlist `-- plugins |-- music_service | |-- lms | | |-- i18n | | `-- node_modules | | |-- balanced-match | | |-- brace-expansion | | | `-- node_modules | | | `-- balanced-match | | |-- concat-map | | | |-- example | | | `-- test | | |-- fs-extra | | | `-- lib | | | |-- copy | | | |-- copy-sync | | | |-- empty | | | |-- ensure | | | |-- json | | | |-- mkdirs | | | |-- move | | | |-- output | | | |-- remove | | | |-- util | | | `-- walk | | |-- fs.realpath | | |-- glob | | |-- graceful-fs | | |-- inflight | | |-- inherits | | |-- ip | | | |-- lib | | | `-- test | | |-- jsonfile | | |-- kew | | | `-- test | | |-- klaw | | | `-- src | | |-- minimatch | | |-- multimap | | | `-- test | | |-- once | | |-- path-is-absolute | | |-- rimraf | | |-- v-conf | | | `-- node_modules | | | |-- fs-extra | | | | `-- lib | | | | |-- copy | | | | |-- copy-sync | | | | |-- empty | | | | |-- ensure | | | | |-- json | | | | |-- mkdirs | | | | |-- move | | | | |-- output | | | | |-- remove | | | | |-- streams | | | | |-- util | | | | `-- walk | | | `-- multimap | | | `-- test | | |-- wireless-tools | | | `-- test | | `-- wrappy | `-- squeezelite | |-- i18n | |-- node_modules | | |-- balanced-match | | |-- brace-expansion | | | `-- node_modules | | | `-- balanced-match | | |-- concat-map | | | |-- example | | | `-- test | | |-- fs-extra | | | `-- lib | | | |-- copy | | | |-- copy-sync | | | |-- empty | | | |-- ensure | | | |-- json | | | |-- mkdirs | | | |-- move | | | |-- output | | | |-- remove | | | |-- util | | | `-- walk | | |-- fs.realpath | | |-- glob | | |-- graceful-fs | | |-- inflight | | |-- inherits | | |-- ip | | | |-- lib | | | `-- test | | |-- jsonfile | | |-- kew | | | `-- test | | |-- klaw | | | `-- src | | |-- minimatch | | |-- multimap | | | `-- test | | |-- once | | |-- path-is-absolute | | |-- rimraf | | |-- v-conf | | | `-- node_modules | | | |-- fs-extra | | | | `-- lib | | | | |-- copy | | | | |-- copy-sync | | | | |-- empty | | | | |-- ensure | | | | |-- json | | | | |-- mkdirs | | | | |-- move | | | | |-- output | | | | |-- remove | | | | |-- streams | | | | |-- util | | | | `-- walk | | | `-- multimap | | | `-- test | | |-- wireless-tools | | | `-- test | | `-- wrappy | `-- unit `-- system_controller `-- backup_restore |-- i18n `-- node_modules |-- balanced-match |-- brace-expansion |-- concat-map | |-- example | `-- test |-- fs-extra | `-- lib | |-- copy | |-- copy-sync | |-- empty | |-- ensure | |-- json | |-- mkdirs | |-- move | |-- output | |-- remove | |-- util | `-- walk |-- fs.realpath |-- glob |-- graceful-fs |-- imurmurhash |-- inflight |-- inherits |-- jsonfile |-- kew | `-- test |-- klaw | `-- src |-- minimatch |-- multimap | `-- test |-- once |-- path-is-absolute |-- rimraf |-- slide | `-- lib |-- v-conf | |-- node_modules | | `-- fs-extra | | |-- docs | | `-- lib | | |-- copy | | |-- copy-sync | | |-- empty | | |-- ensure | | |-- json | | |-- mkdirs | | |-- move | | |-- move-sync | | |-- output | | |-- remove | | `-- util | `-- test |-- wrappy `-- write-file-atomic 242 directories
作成したプレイリストの格納先
自分でカスタマイズしたり好みのリストを作れるプレイリストについて次に示します。
最初の画面の右側中の [プレイリスト] をクリックするとリストが出てきます。2番目の画面でリストの下に隠れている [日本歌謡・アイドル他] をクリックすると3番目の画面になります。
3番目の画面は、各放送局を選択する画面です。ここでクリックした局が選択され、キューにコピーされて放送の受信が始まります。クリックされる度にキューにコピーされるようです。
実際のデータ格納先は、 /data/playlist 以下のディレクトリに保存されるようです。ただ単純に ls コマンドで表示すると、 ls が持つ気配り(?)で日本語文字が、??? の並びで表示されてしまうようです。
volumio@volumio1:~$ ls /data/playlist/ Guitar & piano ??????????????????&?????????????????? Jazz ???????????????????????????&????????? Relax & Easy listening ???????????? & ??????????????? Retro 50s-80s & Beatles ?????????????????????????????? Solo ??????
回避策はコントロールキャラクタも表示させるオプションを指定するか、 cat でパイプして表示すれば漢字で表示できるようです。
volumio@volumio1:~$ ls --show-control-chars /data/playlist/ Guitar & piano Relax & Easy listening Solo ダンス系・スイング&タンゴ 日本歌謡・アイドル他 Jazz Retro 50s-80s & Beatles シンフォニー&クラッシック ボサノバ & シャンソン 映画
volumio@volumio1:~$ ls /data/playlist/ | cat Guitar & piano Jazz Relax & Easy listening Retro 50s-80s & Beatles Solo シンフォニー&クラッシック ダンス系・スイング&タンゴ ボサノバ & シャンソン 日本歌謡・アイドル他 映画
放送を受信しているラジオ局は、画面右の選択ボタンで表示しているキューにリストされています。
普段聞いている放送局ならここのキューにリストされているので、そこをクリックして選択するだけで簡単に放送局の切り替えができます。
左のアイコン上に薄緑の三角が表示されているのが、受信中の放送局ですが、一部をキューから削除したり、リストの順番を上下に移動したりすると表示位置の追従ができないようです。
プレイリストの生成
プレイリストを作成するには、前節で説明しているキューにリストされている放送局全体に新しいグループ名を付与して生成します。
注意点は、すでに作成されている下に並ぶ名称をクリックすると、一瞬で置換されます。
ウェブラジオからプレイリストの Jazz を作成
Volumio から、標準で提供されているウェブラジオの放送局があります。ここでは、お薦めや国別、ジャンル別等の色々な切り口からリストになっていて、選んでもエラーになって受信できないものや好みの合わないものも多数あります。
実際に聞いてみて自分の好みで選択して、必要なものをキューに残して、後で分かりやすいグループ名(今回は Jazz)を付与してプレイリストを作成します。
まずは、左のボタンで一覧表示にして、家のマークのホームボタンをクリックし、中からウェブラジオをクリックします。
ウェブラジオ内の項目を辿って、好みに合う放送局を探しながらキューに移します。
受信できない放送局も多数残るので、キューに移された放送局を個々に選びながら吟味して不要な放送局は、右の(☓)マークで削除しながら整理します。
好みの Jazz 放送局が集められたので、プレイリストにグループ名 Jazz で登録します。不要なプレイリストは右の点をクリックして削除可能です。