小ネタ ... ネットワークから(しか)使用できないMP3プレーヤ


jukebox.png
曲を登録中
(ってKonquerorでファイルをコピーしてるだけだけど…)

これは、

での実行例です。こんなスペックでも十分実用になっています。
インストール後のシステムサイズは40MBをちょっと切るくらいで、 それを差し引いたHDDの空き容量にMP3ファイルを格納できます。 1GBのHDDだと大体300曲くらい入るようです。
現役引退マシンの活用方法としていかがですか?

概要

インストール

インストールの手順は、通常のOpenBSDのインストール手順とほぼ同じで、 現在、kaw.ath.cxからHTTPによるネットワークインストールが可能です。

  1. インストール用のブートメディアを作成し、そのメディアで起動。
    • 通常のOpenBSD 3.7の配布物に含まれているものからFDやCD-ROMなどを作成。
  2. 通常の手順に従ってインストール。ただし、手順の一部は以下の内容を指定して下さい;
    • パッケージの取得方法 ... http
    • サーバ名 ... kaw.ath.cx
    • サーバ上のパス ... dl/pub/OpenBSD/jukebox
    • インストールするパッケージ ... メニューに表れたbsd, base37.tgz, site37.tgz を全て指定(allと入力)する。
    • タイムゾーン ... 必ず Japan を指定(それ以外は削除されているため)。
    • インストールの最後でMP3 Playerのパスワードの設定を要求されるので、入力する。
  3. インストール後、リブートして再立ち上げする。Wizard of OS が聞こえてくればOK。

使用方法

システムを起動すると、ジュークボックスは自動的に再生状態になります。

演奏したい曲を登録するには、インストール時にパスワードを登録した mp3playユーザで行います。

FTPやscpなどを用いて以下に説明するディレクトリ下にコンテンツや URLリストをを転送します。 また、sshでログインし、シェルによる操作を行うこともできます。

曲の登録

ユーザmp3playのホームディレクトリの下は次の図のようになっています。

/home/
  |--mp3play/
      |--jukebox/
          |--attic/     データの一時退避や作業用
          |--ctrl/      演奏の制御のためのファイルを格納
          |--oneshot/   一回だけ演奏するコンテンツを格納
          |--oneshot_finished/
          |             oneshotで演奏済みのコンテンツを格納
          |--spool0     繰り返し演奏するコンテンツ格納用
          |--spool1     spool0と同じ
          |--playlist-> spool0あるいはspoo1へのシンボリックリンク
          |            (現在演奏している方)
          |--play.sh    演奏の制御スクリプト

演奏するコンテンツには以下の2種類があります;

MP3ファイル
MP3形式の音声ファイルそのもの。ファイル名が .mp3で終わる。
URLファイル
MP3ファイルのURLが列挙されたファイル。ファイル名は .urlで終わる。

このようなファイルを spool0, spool1あるいはoneshot以下にコピーすると そのファイルが再生されます。URLファイルの場合は、FTPあるいはHTTPで ネットワーク経由でファイルの取得を行いながら再生を行います。

playlist以下にサブディレクトリがあってもOKです。その場合はサブディレクトリを再帰的にたどって再生されます。

spool0あるいは、spool1にコンテンツを置いた場合は、それらは繰り返して 演奏されます。 最初、spool0に置いてあるコンテンツを順に演奏し、終わったものからspool1 に移動します。spool0にある全部を演奏し終わると、今度は逆にspool1からspool0 にファイルを移動しつつ演奏します。以下それを無限に繰り返します。 ファイルの移動にあたってはディレクトリ構造も保存されます。

oneshotは、文字どおり一回だけ演奏したいファイルを格納しておきます。 演奏が終わったファイルはoneshot_finishedに退避されます。

再生は、繰り返し演奏より一回だけの演奏の方が優先されます。 よって、繰り返し演奏を行っている最中にoneshotに曲を登録すると、 それらを割り込んで演奏することができます。

再生の制御

動作を制御したい場合はctrlディレクトリ以下にファイルを作成します。

以下のファイルはファイルが存在するかどうかで制御を 行います。ファイルの内容は見ないので、空ファイルでOKです。

ctrl/rescan
コンテンツファイルを再スキャンします。FTPなどでファイルを登録した場合は、現在の曲が一巡しないと登録したファイルが再生されませんが、rescanを行うと、次曲以降の再生で反映されます。
ctrl/clean
コンテンツディレクトリ(spool0, spool1, oneshot, oneshot_finished)内の非コンテンツファイルや空のディレクトリを消去します。
ctrl/pause
このファイルが存在している間、演奏を停止します。
ctrl/exit
現在の曲演奏の終了後、演奏スクリプトを終了します(OSは停止しません)。
ctrl/restart
現在の曲演奏の終了後、演奏スクリプトを再起動します(スクリプトのデバッグ以外には使用しないでしょうが…)。
ctrl/reboot
現在の曲演奏の終了後、OSをリブートします。
ctrl/halt
現在の曲演奏の終了後、OSを停止します。ハードウェアが対応していれば、コンピュータの電源も切断されます。

以下のファイルはスクリプトの起動および終了時の処理を記述します。 スクリプト内で . コマンドを使用して読み込まれます。

ctrl/init
演奏スクリプト開始時にユーザが行う処理を記述します。音量の設定、ネットワーク取得時のプロキシの指定などです。
ctrl/finish
演奏スクリプト終了時にユーザが行う処理を記述します。
ctrl/mpg123opts
MP3再生ソフト mpg123 起動時に渡すコマンドラインオプションを記述します。

以下のファイルはスクリプト実行時に自動的に作成され、ユーザがいじることはできません。

ctrl/reverse
このファイルが存在するとき、再生方向がspool1 -> spool0であることを表します。
ctrl/playing
再生スクリプトが実行中に作成されるディレクトリです。スクリプトが多重に起動することを防止しています。

Tips

音が途切れるんだけど…
冒頭にあげた動作環境ではごくたまに音声が瞬断する現象が見られました。カーネルをGENERICから動作ハードウェアに合わせたものにconfigしなおして作成したカーネルでは瞬断はなくなりました。
(インストール内容には、コンパイラもカーネルソースもないため、カーネルの作成は別のシステムで行う必要があります)。

現行バージョンでの制限

TODO


FrontPage


Front page   New Page list Search Recent changes   Help   RSS of recent changes