音楽再生スレッドのリアルタイム性能について | Phile-webコミュニティ.
Windowsにおけるリアルタイム音声再生の留意点。再生アプリであれば今のところこの記事の内容でほぼ網羅されているのではないかなと思う。
レイテンシ(≒バッファサイズ)はDAWなんかではもっとシビアだ。再生アプリではバッファを短くするとブチブチ鳴る確率が高くなるので、再生アプリではできる限りバッファを大きくとる設計でよいと思う。しかしDAWでレイテンシを200msとか取るとキーボードを弾いてから発音までに明らかに遅れを感じる。私のような鈍感な素人でも、5ms位から遅れを感じるようになる。理想は1msくらいかなとか勝手に思っている。なので相当パフォーマンスに配慮した設計が必要になってくる。
WASAPIが出るまではWindows標準で低レイテンシな再生を行うのはカーネルストリーミングという手法しかなくて、それもちょっと裏技的な感じのするものだった。あとは3rdベンダーのASIOを使うかだが、これは対応するハードウェアが限られていた。WASAPIの登場によって低レイテンシなサウンド再生が可能になったのだが、対応しているソフトウェアでもレイテンシを1-3msで設定するとブチブチなるものがある。高性能なハードウェアが安価で利用できる現在にあってもリアルタイム音声処理はソフトウェアの最適化が品質に大きく影響する世界である。
Windows 8 CPではMetro StyleでのWASAPI排他モードでのサウンド再生がサポートされてないようだ。ひょっとすると私のハードの問題だけかもしれないが。なので1-3msの低レイテンシなサウンド再生は現状だと厳しくて、これがRTMでもそうならMetro StyleでDAW的なソフトを作るのはできないことはないが、その品質はある程度以下のものしか望めないことになる。