玄箱でmp3ジュークボックス
(サウンドセットの日本語対応)

我家の長男もいろいろなことに興味を持つようになってきました。血筋は争えないもので、特に機械ものには強い興味を示します。音楽を聴くのにもCDを入れたり出したりするのが大好きな状態です。いろいろなものに興味を持つのは良いことなのですが、CDは傷だらけ、時にはチョコレートがベットリとかなり悲惨な状態になってきました。

そこで、音楽は全て玄箱に格納し、リビングからCDをなくしてしまうことにしました。リモコン操作のみで音楽が聴けるようになればCDが傷だらけになることはありません。CDから音楽をリッピングしてmp3化し、玄箱に格納するのは簡単ですが、それだけではパソコンが無いと聴くことができません。我家のリビングには常設のパソコンは無く、使用する場合はノートPCを利用している状態です。音楽を聴くためにわざわざノートPCを持ち出すのは不便ですし、なによりノートPCのスピーカーではまともな音質は期待できません。

この問題を解決するためには、玄箱に音楽再生のためのデバイスを接続する必要があります。もともと玄箱には音楽再生機能は無いのですが、USBオーディオデバイスを接続することにより、再生機能を持たすことができます。幸いなことにUSBデバイスは標準化が進んでおり、多くのデバイスがLinuxの標準ドライバに対応しています。

私は以下の装置を購入しました。

    Sound Blaster Digital Music LXを楽天で検索         

PC関係のサウンドデバイスの老舗であるCREATIVE社の製品で、シンプルなものになります。
シンプルといっても光デジタル出力端子を備えているので、今回の目的には十分なものになります。 (写真の左にでいるのがUSBケーブル、上部に出ているのが光オーディオケーブル)

  DHT-FS5を楽天で検索

この商品は高価なのですが、コンパクトな割には音質も良く、光デジタル入力2系統、同軸デジタル入力1系統をもっているので無劣化で玄箱からつなげることができます。

標準の玄箱のOSであるMontaVista Linuxに対応したサウンドセット(ドライバと再生操作の為のperlスクリプト)が玄箱の本に収録されているので、それを導入します。デバイスを認識する際に/var/log/messagesを見ていると少しエラーが出ていたのですが、試験的にmp3を再生してみるとあっさり音が出たので、気にしないことにします。

しかし、いざCDから作成したmp3を大量に玄箱に登録し、Webインターフェースから再生しようとするとそのままでは実用にならないことが分かりました。それは、フォルダ名やファイル名に日本語が含まれていたり、半角スペースなどが含まれていると一切表示されないという問題です。アルバム名や曲名を格納しているCDDBに登録されている情報は日本語や半角スペースを含んでいるので、今のままでは自分でアルバム名、曲名を修正する必要があり、現実的ではありません。

早速、根本的な対策を考えます。まず日本語については玄箱の標準Webサーバであるthttpdやperlは日本語を処理できるはずでなので、解決できそうな気がします。(同じ仕組みを利用している玄箱の管理画面では日本語が使用されています。)

いろいろと調べてみると、PCからのファイル共有に使用しているsambaの設定で、玄箱内部で使用するコードがシフトJISになっていることが分かりました。MontaVista Linuxの標準の文字コードはEUCなので、この設定ではperlスクリプトが正しく処理できません。そこで設定を以下のように変更して玄箱を再起動します。

/etc/samba/smb.confを以下のように修正

修正前:coding system = 932
修正後:coding system = euc

標準の玄箱の設定で内部コードが932(シフトJIS)になっていたのは誤りではなく、意図的なものだと思います。それはシフトJISとEUCに完全な相互変換性が無いためで、最も標準的な使用方法であるWindowsからのファイル共有サーバとしての玄箱としては内部コードもシフトJISしたほうが良い と判断したのでしょう。

これでジュークボックスに日本語のアルバム名や曲名が正しく表示されるようになったのですが、まだ完璧ではありません。相変わらず、半角スペースや半角の<>などの文字は正確に表示されません。これを正しく表示するには、それらの文字を特殊な表記に変換して表示し、mp3ファイルを再生する際に戻す操作が必要になります。このロジックを追加するのは面倒なので、ファイル名を変換してしまうことにしました。探してみるとフリーソフトのFlexible Renamerというソフトが見つかりました。このソフトは

・下部のディレクトリも含めて変換できる
・正規表現が利用できる

という点で大変優れており、今回の目的に合致しています。以下のように設定して、問題を起こしそうな半角文字を全てアンダースコア"_"に変換してしまいます。これは厳密に調査したわけではないのですが、私が持っている数百のファイルではこれで動作したので、多くの場合は大丈夫でしょう。(表示されないものがあれば適宜追加すればOK)

検索(実際は全て半角で投入):[¥(¥)¥[¥]¥+¥$¥&¥^¥s’]
置換: _

以上で、我家の玄箱ジュークボックスは実用状態となりました。
いまではREGZAのブラウザ機能を利用して、学習リモコン操作で好きな音楽を良い音質で聴くことできます。

もちろん音楽ファイルは玄箱で家庭内LAN共有されているので、別の部屋に設置しているPCや無線LAN接続のノートPCでも再生可能です。

今回導入したサウンドセットはperlで書かれているので、好みに合うように改造することができます。私はプレイリストの表示からディレクトリ部分を削除し、現在演奏中の曲が選択された状態で表示されるように改造しました。
サイトのトップへ戻る