アジシオとワサビは便利な調味料として、台所に常備しておきたいものですね。

ではなく。

PCでオーディオを扱う際に利用すると、音を良くしてくれるかもしれない「ASIO」と「WASAPI」についてのお話です。

ASIOロゴ

現時点(2014年10月現在)では、Macをお使いの方には既に同等の機能が標準Core Audioと言うらしいで備わっているようなので、こちらの記事は原則Windowsユーザーのみが対象となります。Linuxとかさらに他のOSの場合はごめんなさい。

まず「ASIO」ですが、現在はヤマハの傘下となっているドイツのスタインバーグ社が自社のオーディオ編集ソフトで利用するために開発されたもので、それまでのサウンドドライバでは「キーボードのキーを押してから実際の音が鳴るまでに遅延が大きく、打ち込みのタイミングが合わせられずに作業が困難である」との問題を解決する手法として、遅延=レイテンシの少ない「キーを押したら(ほぼ)同時に音が鳴り、打ち込みが記録される」サウンドドライバを開発したことによります。実際にはサウンドドライバという表現は正確では無いようで、正しくはアプリケーションプログラミングインタフェース(API)のようですが。
All AboutのASIOを解説する記事は2002年と、今から干支が一周するほど前に掲載されているので、技術としては最近のものではなく、Windows XPが登場する頃にはもう業界ではデファクトスタンダードとなっていたようです。

一般に「音楽を楽しむ」のは、パソコンにつなげたキーボードから楽曲を弾いて――なんて、そっちのキーボードなんてつなげてないよって人が多いでしょう。はい、既に楽曲が音楽ファイルとしてパソコン内に保存されていて、プレイヤーで再生して聴く人がほとんどだと思います。
ですので、キーを押してから音が鳴る遅延を無くす技術は、プレイヤーで音楽を楽しむぶんには関係無いように思えますよね。
はい、関係ありません。例え鳴り始めが遅くても、その遅れはスタート位置だけであって、その先ずっと一定して流し続けてくれれば全く支障がないからです。例えばプレイヤーの再生ボタンを押してから実際に音が出力され始めるまで1秒の遅れがあったとしても、時間表示と一致していないと嫌だと言わない限りは、ずっと1秒のズレを維持したまま曲の終わりまで再生してくれれば結果として聴こえた音は全く同じで実用上の問題は無いと言えます。
むしろ、その1秒のズレを保ち続けるために、1秒間の音が処理されるまでそのデータを一時保持しておくバッファのほうがずっと重要ですね。
ベルたそがんばれ。(※ベルたそはバッファじゃなくバファですが)

プレイヤーの再生でもASIOドライバを利用する確たるメリットは、Windowsのオーディオミキサーを通さない点です。Windowsのオーディオミキサーとは、タスクバーのスピーカー形状のアイコンを押すと出てくる音量バーだと思ってもらえれば相違ないはずです。
オーディオミキサーはさらに厳密な名称で言うと「カーネルミキサー」となり、決して白いひげを蓄えたメガネのおじさまがフライドチキンを鍋に入れて煮込みながら撹拌しているようなものではなく、WindowsのOSが動いている中核に存在する、複数のサウンド情報を統合して処理するプロセスのことです。
複数のソフトウェアから発せられる様々な音が、ひとつのスピーカーから同時に出せるのは、ミキサーのおかげです。
というのはミキサーの恩恵なのですが、残念ながら恩恵ばかりでは無いようで、Windowsのカーネルミキサーはノイズの発生源としても活動してしまっているようで、こちらを通った音のデータはノイズが重畳され出力されるため、音質が損なわれて聴こえてしまうようなのです。
そうなると、パソコンで良い音を聴きたい人にとっては大迷惑な存在と認識してしまいますよね、カーネルミキサーさんのこと。来年のクリスマスまでは会いたくないよと思ってしまうかもしれません。
カーネルミキサーさんの、本人は良かれと思ってやっているのでしょうが、結果として高音質な音楽再生を阻害している厄介な挙動として、ミキシングする際に音をいじっている(リサンプリング)のです。そのいじり方に少々クセがあるらしく、音質劣化を招く所業を仕込んでいるようなのですね。

ASIOを利用した場合には、そんな有難迷惑なお節介おじいさん、もしくはフレスコ画修復のおばあちゃんのイメージに染まってしまったカーネルミキサーさんを華麗にスルーして、直接音の信号をサウンドボードなどの実際に音を鳴らしてくれるデバイスのドライバに渡してくれるので、OS内での音の劣化が最小限になるよ、ってのが、プレイヤーを使う際のメリットです。

ASIOは前述のとおり、Windowsを開発したマイクロソフト社ではなく、サードパーティーのスタインバーグ社が開発した技術ですが、これと同様の仕組みをマイクロソフト社も開発し、Vista以降にも搭載しました。これが「WASAPI」です。鼻にツンと来そうな名前ですが、Windows Audio SessionのAPIなので、すりおろして刺身に添えることはできません。 しかし、この技術を導入することで、貴方のオーディオライフが刺激的なものに変貌するかもしれません。いえ、言ってみただけです。

「ASIO」は対応するサウンドデバイスでなければ原則として使えません。例外的ですが多く使われているらしいのが、カーネルミキサーを通さず、代わりに「カーネルストリーミング」を通して同様の劣化を防ぐ「ASIO4ALL」というドライバで、プレイヤーからは通常のASIOドライバとして認識させてASIOの信号を出力させ、受け取った信号をASIO4ALLは直接デバイスドライバに渡すことはできないのでカーネルストリーミングに渡し、実質的にネイティブなASIOドライバに近似した結果にしているようです。
「WASAPI」はWindows Vista以降であれば標準で搭載しているため、ASIOのように追加でドライバをインストールする必要がなく使えます。ただし、WASAPIはASIO同様にミキサーを通さない「排他モード」だけでなく、ミキサーを通す「共有モード」もあるため、ASIOと同様の効果を得るために利用する場合は「排他モード」を選びましょう。

ここまではミキサーを通すことのデメリットばかり書いてきましたが、逆に、ミキサーを通さないことによるデメリットを明確に書きましょう。
それは、他のソフトウェアからの音が鳴らなくなるということです。ミキサーを通さないんですから、考えてみれば当然ですよね。
ただし、例えばヘッドフォンやDACなどのオーディオ機器がUSB接続で、それ単体がサウンドデバイスとして認識している場合、パソコンのヘッドフォン端子に接続した別のスピーカーをASIOやWASAPI排他モードで鳴らした場合は、スピーカーからそれ以外の音を鳴らすことは可能です。ASIOやWASAPIはサウンドデバイスとソフトウェアごとに割り当てられるものなので、システム音が別のサウンドデバイスに割り当てられているのであればそちらから鳴ります。決して全てのサウンドデバイスが専有されるわけではありません。ですので、どうしても両立させたいならば複数のサウンドデバイスを用意しましょう。

今回の特集は文章ばかりで今まで以上に理解しづらかったかもしれませんが、それは筆者のまとめる技術不足ということでご勘弁ください。ちょっとこれは画像に置き換えるのがややこしい技術だったので。
画像付きは、解説のプロの方にお任せします。ということで、上記したAll Aboutの記事の筆者である藤本氏がその10年後に解説された記事をご参照ください。文章の構成力も高いので、ワタクシが記事を作るまでもなくこちらを最初から紹介するだけで済んだのではと思われてしまいそうですがそれはさておき、下の方に図が乗っているので、理解がしやすいでしょう。

最後に、ASIOやWASAPIでの再生に対応しているフリーソフトのプレイヤーも紹介します。これらの対応プレイヤーでなければそもそもASIOやWASAPIに出力信号を送れません。出力先の設定もお忘れなく。