open source Music firmware   2012/12/15 (Sat)  20:32  [iPod]

このエントリはLL/ML Advent Calendar #LLAdventJPの2012/12/18のエントリです。
sheLa による open source Music firmware ということで、Rockboxの紹介をしようと思います。


Rockbox は過去モデルの iPod を含む、いくつかの音楽プレーヤのファームウェアを置き換える音楽プレーヤ用ファームウェアで、オープンソースとして開発されています。2001年くらいからずっと継続して開発されていて、安定性も十分、音質も標準のファームウェアより良く(その分消費電力が増えますが、連続再生時間は十分実用的)、対応音楽フォーマットも多く(非可逆はもちろん *.ape, *.flac, *.tta といった可逆も)、プレーヤの見た目はスキンで変更でき、アルバムアートワークの表示も可能など、音楽プレーヤとして十分な機能を有しています。また、多国語対応していたり(ただし、Unicode 対応フォントファイルを用意する必要があります)、MPEG 再生ができたり、ちょっとしたアプリやゲームなどのプラグインが用意されています。特徴をざっくり眺めるには Wikipediaが便利かもしれません。

ファイルリスト 再生画面
※上の画像はシミュレータで取得したスクリーンショットです。スキンはカスタマイズしたものです。

ファームウェアを書き換えるというと、なんだか厄介な想像をしがちですが、そんなことはなく、例えば iPod Video (5G) にインストールするには、ブートローダを書き換えて実機にファイルをコピーするだけというお手軽なものです。また、iPod 標準の Apple OS でも起動できるため、併用することも可能です。
曲の追加も簡単で、適当なフォルダにファイルをコピーするだけと簡単なものです。

Rockbox は公式サイトでインストーラもしくは手動インストール用に zip ファイルで提供されていますが、自分でコンパイルしたい人は過去エントリを参照してください。現在はソース管理が Git に変わっていますが、それ以外は大きな変更はないので、大体そのまま適用できると思います。cygwin でコンパイルする場合は、クロスコンパイラの作成に滅茶苦茶時間がかかるので、それだけで丸1日かかる(決してマシンスペックが低いわけではありませんよ?)と思っていれば良いでしょう。

私は、iPod Video (5G)を買ってから大体1週間程度で Rockbox を入れてしまったわけですが、それ以来ずっと Rockbox を使用していたりします。もともと、Rockbox があったから iPod を買ったようなものだし、iTunes でライブラリ管理する必要もないので非常に気に入っています。
近年では、iPhone や Android などでも音楽を聴くことはできるし、Google Music 等でストリーミング再生することで、曲を持ち歩く必要もなかったりしますが、音楽専用プレーヤは連続再生時間の面で有利なのでまだまだ現役のままです。

Rockbox も最初はアートワークが表示できなかったり、スキンでできることが少なかったりして、有志によるパッチが作成されていましたが、少しずつ公式に取り込まれたりして随分良くなりました。特にスキン周りは、特定パッチ版でないと使用できないスキンがあったりして(上の画像のスキンもその1つです。)自分でビルドするのが必須になっていました。また、日本語に対応したフォントがあまりなく、海外のスキンで指定してあるフォントを変更すると表示位置がずれるため、自分で位置を微調整しながら使っていたものです。
現在は、アートワークも mp3 に埋め込まれたアートワークまで表示できるようになっていたり、フォントの問題は、bdf_tools を使って日本語文字を持たないフォントに文字を合成することで解決できるようになりました。スキン周りは何度か大きく変更があったため、過去のスキンは現在の記法に合わせて修正する必要がありますが、このあたりは好きなスキンを使うためにはしょうがない、といったところでしょうか。

時々思い出したようにソースコードを取得して、ビルドして、スキンを調整して、という感じで使ってきたソフトですが、多少手間はかかるものの、やはりハードウェアを非公式ファームウェアで動かすのは面白いものです。Rockbox かわいい。

Apple 社がもう開発対象から外したような古いモデルの iPod を持っている方は Rockbox をインストールしてみてはいかがでしょうか。

wikieditish message: Ready to edit this entry.