9 やっぱりMatlabで組みます

Javaで多チャンネル再生ができるのは、WindowsLinuxJava 1.5以降のみということが判明。しかも、どんなオーディオ・カードでも使えるわけじゃなくて、動作確認が取れているのはほんのわずかだそうな。さらに追い打ちをかけるような制約があることも明らかになりました。たとえばオーディオ・カードが8チャンネルの再生に対応していたとしても、Java側から「1インターフェースに8チャンネル搭載されている」と認識されるのではなく、「2インターフェースに2チャンネルずつ搭載されている」というふうにしか扱えないのだそうです。インターフェースが二機以上搭載されたマシンの場合の動作は不定だとか。そのステレオ・ペアどうしがサンプル単位で同期が取れているかも怪しいものです。もともとJavaSoundAPIは正当な扱いを受けていなかったAPIで、Java 1.3のころから開発者がどんどん減らされていたのです。Java 1.4リリース後には最後の一人がSunを離れ、現在はその人がフリーランスのような形で契約を受け、有志たちとともに開発をしているのです。

そんなわけで、作ろうとしていたGUIMatlabで組み、子プロセスとして「オーディオ・ファイルを読み込んでCoreAudioで再生する」というコマンドライン・プログラムを呼び出すような仕組みで行きたいと思います。音声のリアルタイム処理がしたかったけれど、それはちょっと無理っぽいですね。