S.F. Page

Programming,Music,etc...

Windows 10におけるオーディオ機能

ちょっと前から気になっていたこと。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でネイティブ・モジュールという手もありそうだけど、難しそうだなぁ。