音声圧縮フォーマットにはほとんど詳しくないのだけど、Ogg Vorvisフォーマットには、音声のループ情報を、LOOPSTART, LOOPLENGTHとして、ヘッダ部分に保持しておくことができる。Falcomのゲームなど、この機能を利用して、oggファイルをそのままBGM再生に利用している商用のものもある。これらのoggファイルは、そのゲームの外で再生しても、これらのヘッダ情報を解釈できる再生ソフトであれば、期待通りにループできそうだ。
ものによっては、個別のゲーム専用として作られた再生アプリケーションがあるのだけど(たぶん実際にはそれなりに汎用的)、Linux版wineではこれがうまいこと動作していた。しかしWindows/Linux機が使えなくなってしまって、仕方なくMacを使っているのだけど、MacのwineはまだLinux版wineほど完成していないようで、これが上手く動作しない。
それなら、代わりのプレイヤーを探してくれば良いのではないかと思ったのだけど、これが案外見つからない。vlcのループ再生も、audacityのループ再生も、先頭から末尾までの再生になってしまった。
そんな時にふと思いついてandroidのMediaPlayerのAPIを眺めてみたら、setLooping(boolean)などというメンバーが存在している。これはもしかして使えるのではないか、と思って、ひさしぶりにAndroidアプリを作ってみることにした。といってもファイルを選択してこのフラグを設定して再生するだけの簡単なお仕事だけど。
作ったコードは、以前作ったjmdspの使い回しで小一時間で書いたものだけど、初めてAndroidのUIをmain.xmlで作るということをやったのが新鮮な体験だった。これまではSurfaceViewを直接叩くアプリを作っただけだったため...何だか順番がおかしい気はしなくもない。
それは余談で、結局のところ、このフラグも単に先頭から末尾までループするだけのものだった。というわけで、未だにoggファイルをMacやAndroidで永久ループ再生する仕組みはまだ見つかっていない。気が向いたらもう少し探してみようと思う。