ちょっと前から気になっていたこと。Windows 10のオーディオ機能は果たして今どうなっているのかということ。
Windows 10ではWASAPIも地味だがグレードアップしており、共有モードでのレイテンシーが改善されているらしい。Store アプリは基本的には共有モードでの使用が前提だから、この改善はまあ妥当かなと思う。 具体的にはIAudioClient3インターフェースが新たに追加されており、このインターフェースは次の3つのメソッドを持つ。
GetCurrentSharedModeEnginePeriod
現在の共有モードのフォーマットと、周期(フレーム数)を取得する。周期とはオーディオ・エンジンが一度に処理するフレームの長さである。GetSharedModeEnginePeriod
オーディオ・エンジンの基本フォーマットと、既定の周期、既定の周期の単位、指定可能な周期の上限・下限を取得する。周期のサイズは可変だが、既定の周期の単位で割り切れる数でなければならない。InitializeSharedAudioStream
指定した周期で共有モードストリームを初期化する。
で、このAPIを使って10ms以下の低レイテンシーな再生が可能になるようだ。ただドライバのサポートが必要そうだ。私のオーディオ・インターフェースはもう販売終了してしまっているから、もう対応してくれないだろうなー。
あとAudio Graphというものもある。これはWeb Audio APIに相当するもの。ゲームアプリとかはこのAPIを叩いてBGMや効果音を再生するようになるのだろうね。どのようなノードを有しているかはこれから調べてみようかなと思う。
こういうAPIを見るとUWPを使ってアプリを作ってみたくなってくるね。JSで作ってみようかな。もしくはC++でね。Electronでネイティブ・モジュールという手もありそうだけど、難しそうだなぁ。