『MME、ASIO、WASAPIなんなのさ?』

はじめに

PCオーディオやDTMの話をしていると、必ずといっていいほどMMEやASIOといった話が出てくると思います。ただし、PCオーディオとDTMでは同じ機能を使っているものの目的はやや違います。ここでは、MMEやASIO、WASAPIなどについてまとめてみたいと思います。

MME

MMEはWindowsで音を鳴らすためのAPI(色々なアプリケーションでその機能を使えるようにするもの)です。ASIOやWASAPIなどとの比較のためダメっぽいような言われ方をしていますが実はコレすごいんです。なぜなら、これによってWindows標準で音が鳴らせるようになったからです(笑)。

Windows 3.0まではWindows標準ではビープ音(ピコッってやつ)以外に音を鳴らすことはできませんでした。そのWindows 3.0にマルチメディア機能を追加する機能として登場したのが『MultiMedia Extensions』こと『MME』です。

Windows 3.1で製品に取り込まれ、その後長らくWindowsのマルチメディア機能の基本として使われてきました。

余談ですが、CPUのマルチメディア拡張命令で同じ名称の『MultiMedia eXtensions』は『MMX』と言われ、AVXに統合されるまでサポート命令の中に書かれていました。

Direct Sound

MMEはWindows標準で音がなるようにした画期的な機能でしたが、動作速度があまり速くないのがゲームをWindowsで行う場合に問題でした。ワンテンポ遅れて音が鳴っていたのではやる気もでませんよね。このため、多くのアプリケーションがWindowsに移行した後も、速度が重要なゲームの多くがDOSに留まっていました。

そこで、動作速度を速くしたゲームのための専用APIが登場しました。これが『Direct Sound』です。とはいえ、『MME』が遅いのはそれなりの理由があったからで、『Direct Sound』は当初やや安定性や互換性に課題もあり、だからゲーム専用のAPIだったのです。(ないならMMEの動作速度を速くすれば良いだけですよね)

Direct Soundはその後、安定性や互換性などを高めながら、様々な機能が追加されてゲームだけでなくマルチメディアアプリケーション全般に利用されるAPIへ進化していきました。なお、MMEへのアドバンテージは基本的には動作速度で、音質面では同等のものと考えて良いと思います。

ちなみに、DOSで音を鳴らすためにはゲーム側がその機能を実装している必要があり、アプリケーションがハードウェア(サウンドカード)に依存した設計となっていました。特定のハードウェアに特化しているため動作速度は速いですが、DOSでゲームをするためにはSound Blasterかその互換カードが必要でした。

ASIO

Direct SoundはMMEに比べると動作速度が速いですが、それでもタイムラグはそれなりにあります。DTMの分野において、鍵盤をたたいてから音が鳴るまでタイムラグがあるようでは、せっかくのインスピレーションもどこへやらです。

そこで、DTMのアプリケーションなどを作っているドイツの『Steinberg』というメーカーが開発した独自のAPIがASIOです。『Audio Stream Input Output』の略で、アジオと読むようです。ASIOは余計な部分はすべてスルーして、タイムラグなく音を鳴らすように設計されており、再生する機器によりますがにDirect Soundよりもずっとタイムラグが短いです。

写真

独自のAPIですが優れた性能を持っており、SDK(ソフトなどを開発するためのもの)が公開されていたので、他のメーカーも含めてアプリケーションやサウンド機器で広く対応が行われました。今ではデファクトスタンダードのようになっています。

ASIOの目的はタイムラグのごく少ない動作速度でしたが、それを実現するために『カーネルミキサー』などの機構をすべてスルーして、音楽データが『生のまま』サウンドカードなどに送られるという利点があります。PCオーディオでは、ASIOのこの特長を活用して高音質な再生を実現させるのもテクニックの一つです。

カーネルミキサー

なお、『カーネルミキサー』は音質面ではさも悪い子の扱いですが、実際にはWindowsで色々な環境の様々な音楽データを難しい設定なしでサクっと再生できてしまっているのはコレのおかげでもあります。ちなみに、お馴染みのミキサーも機能の一つではありますが、それ以外にもいろいろな機能があります。

写真

ですから、それを通らないASIOを使うためには、再生する曲のサンプリングレートで設定を変えたり、安定性を見ながらバッファやレイテンシの調整をしたりする必要があります。また、ハードウェア(サウンドカードなど)も対応したものでなければ基本的には使えません。

ASIO4ALLというソフトで疑似的に非対応のハードウェアでもASIOっぽい動作をさせることができますが、これはあくまでWindows標準のKernel Streamingという機能を使ってエミュレートしているものでASIOに対応させているわけではありません。

WASAPI

Windows VistaではWindows 3.0のMME以来、まるで秘伝のタレのごとく継ぎ足しつぎたし使われてきたマルチメディア機能が抜本的に手を加えられて登場したのがWASAPIです。『Windows Audio Session API』の略でワサピと読むようです。WASAPIには、MME的な使い方をするための『共有モード』と、ASIO的な使い方をする『排他モード』の2つのモードがあります。

写真 写真

『共有モード』には今までのカーネルミキサーと同様の働きをする『オーディオエンジン』なるものがあり、音質やタイムラグもしっかり引き継いでいます(笑)。もちろん、これのメリットもちゃんと引き継がれています。

『排他モード』はASIOのWindows標準版のようなもので音質やタイムラグの特性もASIOと同等ですが、ASIOがハードウェアの対応を必要としたのに対して、WASAPIはWindowsの機能なのでWindowsで動作するハードウェアならば利用できるというアドバンテージがあります。ただし、アプリケーション側の対応は必要です。

もちろん、以前のアプリケーションで音がならなくなると困るので、MMEやDirect SoundのAPIも搭載していますが、それらはWASAPIの『共有モード』に送られるようになっています。つまり、アプリケーションは今まで通りMMEやDirect Soundを使っているつもりで、WASAPIの『共有モード』を使うように仕向けられるわけです。

余談ですが、これまでDirect Soundはドライバーに直接つながっていましたが、WASAPIの環境ではWASAPIの『共有モード』の上にあります。このため、Windows XP以前の環境ではDirect Soundでハードウェアに搭載した独自のエフェクトなどを利用できましたが、Windows Vista以降ではWASAPIが対応していないこれらの機能を利用できなくなりました。CreativeのEAXなどが有名で、ゲーマーがWindows Vistaを敬遠する理由の一つになってしまいました。

オススメはどれ?

WASAPIとASIOはだいたい同じような性能を持っていて、Direct SoundやMMEに比べて高音質でタイムラグの少ない再生ができます。なので、WASAPI、ASIOのどちらの場合でも使えるならば使うに越したことはないと思います。もしWASAPIとASIOの両方対応している贅沢な環境なのであれば、用途によって使い分けるとよいと思います。

DTM用途であれば、信頼と実績のASIOがオススメです。もともとASIOはDTMのために作られたAPIですし、歴史が古く、DTM系のアプリケーションであればまず対応しているというのもポイントです。PCオーディオの場合は、手軽で安定しているWASAPIの方がオススメだと思います。

いずれの用途にしても、両方ダメなら諦めてMMEやDirect Soundを使いましょう。DTMでのタイムラグはちょっと気になりますが、音質面ではASIOやWASAPIよりもサウンドカードやスピーカーの品質の方が気になるくらいで、そこまで神経質になるほどのこともないのではと私は思います。