Native Client SDKのsine_synthサンプルをベースに、XMFileのプレーヤーを作ってみている。
なんとか音が出たのでYouTubeに動画をアップした。曲は有名な「Sweet Dream」で、ファイルサイズは700kb位である。
今のところ、UI用のHTMLファイルと同じ場所にあるサンプルXMファイルを読み込み・再生するレベル。再生と停止はできる。
XMファイルの再生コードは元々のコードがよく出来ているので少しいじるだけで良かった。
Native Clientモジュールのデバッグだがかなりしょぼい。gdbは使えない(もともとgdbの使い方自体知らないが)。環境変数を設定するとMacやLinuxならJavaScript Consoleにデバッグ出力できるようだがWindowsはダメらしい。
http://code.google.com/intl/ja/chrome/nativeclient/docs/compiling.html#Debug
JavaScriptのメソッドが比較的簡単にC++側から呼べるので、UI画面にデバッグ出力して当面をしのぐことにする。
Pepper Audio APIによるサウンド再生は比較的簡単に行える。内容もコールバック関数が呼ばれたら必要な数の再生データを渡すだけである。
Chromeの開発版であるChromiumのAudio関連のソースコードを少し読んだがWindowsの実装は昔ながらのマルチメディアAPIを使用していた。おそらくすべてのWindowsで安定して動くということを考えるとそうなるのだろう。というわけで今のところWindows版のChromeにおいてはNative Clientを用いても低レイテンシー・ビットパーフェクトなオーディオ再生は望めないようである。