Volumioという名前のLinuxディストリビューションがあります。 オーディオ再生に特化したディストリビューションです。 ここでは、Volumioに関して簡単な情報発信をします。
2016年12月14日現在、webmasterがいじっているのはvolumio-2.004-2016-10-14-x86.imgです。
2021年12月22日現在、某オーディオメーカーに依頼されてRaspberry−Pi向けのVolumio ver.2のフォントを変更しました。 その話も後ろに書きます。
Volumioは、普通のLinuxとはファイル配置が違います。 普通のLinuxは、補助記憶装置(HDDとかSSDなど)にファイルシステムを作ります。 Volumioの補助記憶装置には、ディスクイメージが格納されています。 ブート用のファイルは、普通に格納されています。 どういうことかというと、Live CD-ROM(DVD-ROM)の様にファイルシステム全体が1個の塊として存在し、起動後にメモリ上に展開されて動作しています。
この方法を取ると、工場出荷設定に戻すことや、誤って書き換えてしまったファイル変更をなかったことにできます。
起動時に毎回ディスクイメージを読み込むということは、ディスクイメージが変わらない限り毎回同じ起動状態になります。
実際には、起動中に書き換えたファイル変更は次回起動時にも保存されています。 これを実現するために、Volumioはファイル書き換えがあると、シャットダウン直前に現在の状態を新しいディスクイメージとして保存し、次回の起動には新しいイメージを使用します。
Volumioを最初に起動した時、パソコンのディスプレイにはGUIの操作画面が出ますし、SSHでリモートからログインすることができません。 どうやって、ファイルを書き換えればよいのでしょうか?
方法は2つあります。
大抵のLinuxは、コンソールの切替機能を持っています。 CTRL、ALTとファンクションキーの3つを同時に押すと、コンソールが切り替わります。 ファンクションキーはF1、F2、...がそれぞれ別画面に対応します。 Linux起動後の画面がどのファンクションキーに対応しているかは、ディストリビューションの設定で変わるので、ログインのCUI画面に切り替わるまでファンクションキーを変えて試します。
一旦コンソールが切り替われば、大抵のLinuxではログインのCUI画面になります。
ディスクイメージの書き換えは、Volumioの起動ディスクを外して、他のLinuxマシンにつなぎ、loopデバイスとしてマウントすることになります。 こちらはLinux上級者向けで、説明は割愛します。
今どきのLinuxのGnomeは、Volumioの起動イメージを見つけると、アイコンで表示します。 この表示をクリックするだけで、loopデバイスとしてマウントできてしまいます。 楽になりましたね。
IntelパソコンにVolumioを入れてみて、いろいろいじっているところです。 とりあえず、こんな改良はいかがでしょうか。
ファイル /volumio/app/platformSpecific.js の中を以下のように変更します。
Webmasterの環境では、漢字コードのディレクトリ名がUTF8のコード順にソートされてしまいました。 できればJISコード順に並んでくれると慣れているのですが、以下の変更でもしないよりマシな状態になりました。 ファイル /volumio/node_modules/sort-on/index.js の中を以下のように変更します。
y.localeCompare(x) : x.localeCompare(y)
y.localeCompare(x,"ja-JP") : x.localeCompare(y,"ja-JP")
以下の手順で日本語フォントデータをインストールしましょう。
deb http://ftp.jp.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.jp.debian.org/debian/ jessie main contrib non-free
2021年12月22日に、Raspberry−Pi向けのVolumio ver.2カスタマイズ依頼を受けました。 「コンソールで文字化けするフォントをなんとかしてほしい」とのことだったので、Takaoフォントをインストールしました。 以下手順です。
国際文字コードであるunicodeに、日本語向けのフォントを割り当てるので、中国語や韓国語を表示させるとおかしくなります。
Raspberry-Pi モデル3Bに 800x480ドット 5インチタッチパネル を接続してVolumio3を動かしてみました。 このタッチパネルは、画面表示もタッチセンスもフラットケーブル経由で行います。 GPIOもHDMI端子も使わないので、便利でした。 ただし、フラットケーブルの端子面をどちら向きに接続するかで悩みました。
Volumio3が起動したら、ネットワーク経由でHTMLブラウザ画面を開き、タッチパネルのプラグインをインストールします。 ただインストールしただけでは、5インチタッチパネルが有効にならないので、 ITでこぼこ日記 を参考に設定ファイルを書きました。 /boot/userconfig.txt に以下の記述を加えます。
/boot/config.txtではなくて/boot/userconfig.txtを書き換えるところが重要です。 コメントによれば、/boot/config.txtはモジュール更新で書き換えられる可能性があるので、ホスト独自の設定は/boot/userconfig.txtに書くように指示されています。
Volumio3にsshでログインして、以下のコマンドを実行します。
ネットの説明では fonts-ipafont をインストールする例が多いですが、takaoフォントにしてみました。 ipaフォントとtakaoフォントの違いは、Wikipediaに記述されています。
デフォルト設定では、数分で5インチタッチパネルのコンソール表示がブラックアウトします。
Volumio3の画面ではスクロールバーの幅が狭すぎて、5インチタッチパネルでは操作が困難です。 結局リモートマシンのHTMLブラウザから操作してます。
日本語のソートがJISコード順ではないので、不便です。
Raspberry-PiにインストールしたVolumio3を使ってみたのですが、非常に使いにくいです。 音声ファイルのメタデータからインデックスを作りに行くのですが、これがメチャクチャ時間をかけます。 Webmaster宅ではSamba上に1万3千くらいの音声ファイルがあります。 全部のスキャンに1,2時間ではすみません。 しかもスキャン中は、再生操作ができません。
Volumioで楽曲再生していると、曲の開始からの時間をカウントします。 このカウントが、5分ほどの曲で終わる頃には数秒ずれています。
ずれの量はクリスタルの精度よりずっと悪いです。 Webmasterの想像になりますが、再生開始する時にカウントアップする時間をもらって、ブラウザ側のJavaScriptでカウントしているのではないでしょうか。 JavaScriptのタイマーを使用すれば、このくらいの誤差は出るでしょう。
DateインスタンスのgetSeconds()で、現在時刻-再生開始時刻を計算すればいいんじゃないでしょうかね。
ちなみに、webmasterはVolumio相当の再生アプリをCGIで作っています。 RaspberryPiを使ったヘッドフォンPDAはこの自作CGIシステムです。 再生時刻を取得するために、毎秒1回Wi-Fi通信でブラウザがPDA側の再生時刻を取りに行く仕様にしてあります。 CDアルバム1枚再生すると、毎秒1回のWi-Fi通信のせいで中古スマートフォンの電池が半分くらい減ってしまいます。 毎秒1回のWi-Fiアクセスはやめたほうがいいです。 Volumioがブラウザ側でカウントアップするのは、毎秒1回のアクセスをさせないためでしょう。
内容の移動 2016年12月14日
追記 2023年3月28日