Native Client - Audio再生サンプル(XMPlayer)を作ってみる(2)

公開:2011-03-25 12:16
更新:2020-02-15 04:36
カテゴリ:web,nacl,xm player,javascript

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を用いても低レイテンシー・ビットパーフェクトなオーディオ再生は望めないようである。