オーディオブラウザの拡張機能を作成することを期待して、NaClの調査を開始しました。ドキュメントには正弦波のデモが含まれているため、シンセサイザーを作成するのは簡単なようです。
リアルタイムの効果を適用できるように、出力される前にブラウザのオーディオストリームをキャプチャできるかどうかを知りたいです。これは可能ですか?
オーディオブラウザの拡張機能を作成することを期待して、NaClの調査を開始しました。ドキュメントには正弦波のデモが含まれているため、シンセサイザーを作成するのは簡単なようです。
リアルタイムの効果を適用できるように、出力される前にブラウザのオーディオストリームをキャプチャできるかどうかを知りたいです。これは可能ですか?
それが可能であるだけではありません。私はそれをしました。onaudioprocessコールバックがinputbufferを受け取り、postMessageを介して待機中のNaClモジュールに渡すScriptProcessorNodeを作成します。NaClモジュールの処理が完了すると、postMessageを介してJavaScriptに送り返します。ScriptProcessorNodeは何かを出力する必要があるため、1フレームの遅延が発生し、ScriptProcessorNodeはNaClから受信した最新の処理済み出力をコピーします。
フローは次のようになります。
ScriptProcessorNode->NaClへのpostMessage入力バッファ
ScriptProcessorNode->NaClから受信した最新のバッファーを出力バッファーにコピーします。
NaCl->オーディオサンプルバッファを受信し、処理してポストバックします。
コードをGitHubに投稿するか、他に質問がある場合はお知らせください。
HTH、ジョン