BGMライブラリ

音声の中でもBGM(データが大きい)ものについて。
圧縮形式でもいいんだろうけどデコードにCPUを食うよりはハードディスクを食った方が良いと判断。
10MB..100MBくらいを前提として、やはり全部メモリによむのはちょいと気が引ける。

Clipインターフェースは全部をメモリに読んで再生・停止・ループ再生・ループポイント設定すべて簡単。
が、全部読むらしい・・・。
ここをメモリマップトファイルにできればと思わずにはいられない。

ラインにバイト列を書き込んでいくのが小細工がきいていいんだろうけどInputStreamのリセットができない・・・。
AudioInputStreamはmark/reset対応とは書いてあるんだけどその内部のInputStreamが対応してないとだめな模様(当たり前だが)。
で、BufferedInputStreamでラップしたら内部バッファが増える増える。全部メモリにため込みやがる。ただシーケンシャルなデータ列が送られてくるとしか見なせないInputStreamにある位置に戻る機能をつけるんだから全データをとっておかないといけないのでこれまた当り前か・・・。
最後まで読みこむたびにストリームを開きなおすのは勝手にデータ形式の解析が入ってループポイントで音が切れたりするといやなんだよなあ。
RandomAccessFileでmark/resetサポートのInputStreamを実装してしまうのが一番かと思ってる。というか既にあったら教えてください。