2017/03/26

サウンド系API事情02 Windows系API

Windowsは古くからゲームなどエンターテイメント筐体に採用されてきたため、複数のAPIが存在する。
デスクトップ環境としては最も使用されてきたOSであることもあり、求められる水準も高かったことだろう。
今回は、Windows環境のサウンドAPIについて説明する。


Windows Multimedia Extensions (MME)


MMEはWindows3.0の時代から提供されているサウンドAPIで、Windows3.1から標準にサポートされた。
このMMEの登場によってWindowsでは標準的にサウンド再生がサポートされたわけだが、なんとこれ、現在の最新のWindowsでも全然動く。
ただ、レイテンシが比較的大きいことで知られていて、サウンド関連の機能も少なめになっている。

俗にWaveOut系APIと呼ばれ、waveOut〇〇といった関数名になっている。(録音はwaveIn〇〇)


Direct Sound


Microsoftでは以前よりゲーム系のAPIに力をいれていて、その象徴的なものがDirectXと呼ばれるAPI群となっている。
そのDirectXに含まれるサウンド系APIがDirect Sound。
MMEよりレイテンシなどを少なくし、音質の向上を図っているとのこと。
また、エフェクトなど再生以外にも多機能なものと成っている。

ただ、カーネルでミキシングを行っているので、レイテンシがすごく少ないわけではないし、MMEとほぼ同様の音質だったと思う。

ちなみにDirect SoundにはDirectSound3Dと呼ばれていた3D音源シミュレーションの機能も備わっている、が、OpenALのような高度なシミュレーションではなく、あくまでも簡易的計算に基づく音像となっている。

Windows Audio Session API (WASAPI)


Windows Vistaよりオーディオ関連のOS機能が大幅に改変された結果、新しいサウンドAPIとして現れたのがこのWASAPI。
そもそもWIndows Vistaではドライバ関連がかなり見直されていて、例えば以前のOSではサウンドドライバはOSの核の部分で動作しているので、サウンド処理でクラッシュしたらOSに影響を与えていた(ブルースクリーンなど)が、Vistaではサウンド系のサービスをOSの処理と切り離しているので、クラッシュしてもサウンド系のサービスが終了するだけで、OSには致命的な影響を与えないよう設計されている。

そこも大事だが、動作モードを2つに分けたことも大きな特徴となっている。
  • 共有モード
    様々なアプリケーションの音声をソフトウェアミキシングして再生する方法。従来と同様の構造のため、レイテンシが比較的大きく、音質もあまり良くない。
  • 排他モード
    Windowsのミキシングなどを通さず直接サウンドドライバに音声データを渡せるため、レイテンシが少なく音質もいい。
共有モードは、多種のアプリの音声を合成して鳴らすためには必要な仕組みで、従来のMMEやDirect Soundもこのモード上でエミュレーションされている。
ただDTMなどではレイテンシを極力少なくしたいため、排他モードが存在する。これは念願であった人も多いだろう。


XAudio


時代的にWASAPIと前後するかもしれないが、XAudioはMSがWindowsとXBoxのサウンドAPIを統一するべく用意したゲーム系サウンドAPIとなっている。
中身はOSによってDirect SoundやWASAPIで実装されているため、ここに並べるべきか微妙だが、多機能なAPIとなっている。
各種エフェクトや3D空間音像シミュレーション機能などが追加されていて、近年のゲームにも使用されている。


番外:ASIO


番外とするのがためらわれるほどサウンドインターフェース業界に影響を与えたAPI。WindowsとMacのドライバを配布している。
歴史が長く、昔はサウンド系の仕事をPCでやっている場合、このASIOは必須だった。
Windowsが全ての音声を並行して再生する方針だったため、DTMで使用するにはレイテンシ、音質などに問題があったため、民間で実装されていたものとなる。
機能としては、WASAPIの排他モードのようなもの。むしろWASAPIも含めて業界全体がこのASIOを参考にしたと言っても過言ではない。
絶賛開発中。


WindowsのサウンドAPIはよく使われてきたせいか、一般的な機能とDTM寄りの機能の両面で進化していった姿を見て取れる。
また、実際に使用しているとコールバックが標準だったりと、アプリケーション作成者側にも実装しやすいよう配慮されていることがわかる。
あと、Windows Vistaは革新的だったんだなと思う。すぐ落ちるとか批判してすみません。

次回はMacやLinuxのサウンドAPIについて説明する予定。

0 件のコメント:

コメントを投稿