オーディオエンジンを避けて、ドライバーに直結
当時の試行錯誤については省くが、マイクロソフトもこのデメリットは認識していた。そこで2006年リリースの「Windows Vista」で、新しい世代のオーディオシステムであるWASAPIを導入した。記事のテーマである排他モードも、このタイミングで用意されたものとなる。
上の図において、ミキサーの役割を果たすのが、オーディオエンジン(Audio Engine)という右側の中央付近にあるプロセスである。共有モード(Shared mode)で動作する際には従来通り、このオーディオエンジンを経由する。ただし、Windows XP時代とは異なりサンプリングレートとビット数は可変で対応できるようになった。
排他モード(Exclusive mode)については、図を見ていただくと分かるが、オーディオエンジンのブロックをバイパスする経路でドライバー(Audio Driver)に直結している。
その結果、排他モードではレイテンシーが最小化され、計算負荷が減り、音質もより向上する。また、オーディオエンジンが扱えるのはPCMだけだが、オーディオエンジンを介さない排他モードでは、DSDなどPCM以外のフォーマットも通すことができる。
いくつかの混同しやすいポイントを整理
さて、Windows環境でPCオーディオをする際には、排他モードに似た概念を持つ「ASIO」がよく取り上げられるが、ASIOはサードパーティー製ドライバーに用いられる規格であり、マイクロソフトがOSの一部として提供するWASAPIとは意味合いが異なる。
また、アップルはmacOSのオーディオシステムを“Core Audio”と呼称するが、実はオーディオシステム自体をCore Audioと呼称する点は、Windowsでも同じだ。WASAPIは、そのCore Audioに含まれる下位概念である。アプリケーションが、Windowsのオーディオ機能を利用する際に呼び出す各種APIのうち、共有モード/排他モードの切り替えを制御するものがWASAPIであり、よく言われる「MacのCore Audio=WindowsのWASAPI」という理解は正しくない。
ちなみに、Windowsのミキサー機能は、Windows XPにおいては、OSカーネルと一体化していたため“カーネルミキサー”という名称だった。しかし、Windows VistaでWASAPIが導入されてからはミキサー機能がカーネル空間の外に出た。保護されているという特権はあるが、扱いは一般プロセスと同じになったのだ(上の図でもKernel Modeではなく、User Modeの位置に置かれている)。そのため現在のWindowsでは“カーネルミキサー”とは呼ばずに、単に一般名称の“ミキサー”、あるいは“オーディオエンジン”と呼ばれている。
これはWindows Vista以降にMicrosoftが進めた、肥大化したOSカーネルを軽量化する流れ(マイクロカーネル化)に沿ったものである。そして、スマホ時代に入って、この流れは逆行するのだが、それはまた別の話、別の機会に。
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります