About me : Audio : Music : Contact : Home
ASIOに関するコンテンツの評判がいいようですので,あえて独立したコンテンツにしてみました。
Windowsにおけるのオーディオ事情
 PCの性能が向上し,お手軽なオーディオを扱うのに十分なところまで来ています。ところが,オーソドックスなピュアオーディオの世界ではこの素晴らしい文明の利器が往々にして無視されるきらいがあります。でも,これを利用しないテはないと思っています。
 ということで,最近のOSにおけるオーディオの扱いがどうなっているのかを少し調べてみました。その結果得られた想像図(苦笑)がこれです。ドライバーまわりを重点的に書いています。

 かなり想像の部分が含まれているため,間違いがあれば教えていただけると助かります。ここで,それぞれのOSの世代によってドライバのモデルが VXD → SYS → WDM と変遷してきています。で,現在たいていのWDMドライバが受け付けられるフォーマットは MME と DirectSound です。この二つは悪名高い(?) kernel mixer を通っています。
カーネルミキサー
  カーネルミキサーは,サンプリング周波数の違いの吸収や複数のアプリケーションのミックス,音量調節等を引き受けて,プレイヤーソフト側の負担を減らしています。実際,通常PCから出る音の全てがこのカーネルミキサーを通過しています。そのおかげで,サンプリングレートの差異を気にせずに音楽を楽しんだり,ボリュームひとつで全ての音量が調整できたりします。
 ところが,オーディオ的にはこのカーネルミキサーが邪魔者になってしまいます。実際,カーネルミキサーのサンプリングレートコンバーターの性能の悪さが,PCの音の悪さの原因のひとつといわれています。さらには,カーネルミキサーがPCM信号を前提に処理を行っているため,DVDで使われるマルチチャンネルの信号(AC-3,DTS等)がうまく処理されないという事態も起こります。
 そこで利用されるのが kernel stream という仕組みです。このカーネルストリームは信号を一切処理せずに直接オーディオデバイスに供給します。そのため,DVDのマルチチャンネル信号もうまく扱えるようになって来ています。
ASIO
 一方,DTMの世界ではドライバ部分でのレイテンシ(遅延)が問題となってきます。MMEやDirectSoundといったドライバフォーマットを利用すると,どうしてもWindowsが持っているレイテンシの壁を超えられません。そこで,ASIO(Audio Stream Input Output)なるドライバフォーマットが普及しているようです。このASIOは,ドイツのソフトメーカであるSteinbergが開発したもので,信号をそのままオーディオデバイスに提供することでレイテンシを抑えているようです。
 このように,レイテンシを抑えるために処理を極端に簡素化しているため,サンプリングレートの変換やボリュームの調整等は一切できません。また,ASIOが一旦オーディオデバイスを利用し始めると,他のソフトウェアはオーディオデバイスを利用できなくなるようです(排他的に利用することになる)。
 このASIOに対応したオーディオデバイスは比較的高価なものが多いようです。そこで,ASIOに対応していないオーディオデバイスでも,カーネルストリーミング機能を利用して半ば強引にASIO対応にしてしまおうというソフトウェアが現れました(下図ではASIO2KSがそのソフトウェアに該当)。
音をよくするためにASIOを利用する
 オーディオの世界においてもPCの存在は無視できないものになっていますが,その際問題になるもののひとつが上述したカーネルミキサーです。カーネルミキサーのクオリティがどの程度のものかは分かりませんが,ソースに手を加えることに抵抗のあるユーザも多いはずです。実際,デジタル出力のバイナリ一致が執拗に求められたりします。WDMドライバの実装方法やオーディオデバイスの性能(挙動)によって,バイナリ一致が得られるかどうかが変わってきます。
 そのような状況の中現れたのがカーネルストリームです。カーネルストリームはカーネルミキサーをバイパスできるため,バイナリ一致を得やすくなります。ですが,カーネルストリームをサポートするソフトウェアは限られているようです。そこで,ASIOに対応したオーディオデバイスが注目されています。ですが,上述したようにASIO対応したオーディオデバイスは高価なことが多い上に,手軽に入手できるとはいえない状況です。それがもしソフトウェアの追加で手持ちの機器がASIO対応になるなら試さない手はありません。
ASIO2KS / ASIO4ALL
 ということで,カーネルストリームを利用してASIOを実現するソフトウェアを2つ紹介しておきます。

ASIO2KS 半年以上開発が止まっていますが,デバグモードが便利
ASIO4ALL 精力的に開発が進んでいます。

 もちろん,これらのソフトウェアを利用してもバイナリ一致が保障されているわけではありませんので注意が必要です。特にWDMドライバの実装やオーディオデバイスの挙動に依存するものと思われます。
 ASIO2KSは環境によって一定時間間隔でビープ音が入るようです。
ASIOに対応した再生ソフトウェア
 代表的なものを紹介しておきます。

WINAMP
 定番の地位を得ています。日本語化はT-Matsuo氏作成の日本語化キットにて可能。おたちゃん氏作成のASIO出力プラグインを組み合わせて使うことでASIOに対応。out_ks.dllというカーネルストリームを利用するoutputプラグインもあるようですが,利用したことはありません。
 WINAMPでWMAのロスレスコーデックを利用するため,Lilithのプラグインを利用するラッパーin_vssを使っています。

Lilith
Northern Verse氏が開発している。元々日本語で開発されているので安心感があります。0.991よりネイティブでASIO対応。

foobar2000
精力的に開発が進んでいます。日本語化はこちらのパッチで可能。おたちゃん氏作成のASIO出力プラグインを組み合わせて使うことでASIOに対応。

 これ以外にも多数のソフトがあると思います。もしいいものをご存知でしたら是非教えていただけると助かります。
YAMAHA / DP-U50 を使ってASIO体験
 現在,PCとオーディオシステムの橋渡しをしているのは YAMAHA / DP-U50 です。USB1.1経由で16/24bitの48KHzまでのデジタル信号を扱えます。これを使ってASIO体験をしてみることに。結果的にきちんとASIO2KS経由で音を出すことができました。肝心の音のほうなのですが,鮮度や音の細かい部分,空間の広さ等が若干異なるかな?といったところです。ブラインドでは聞き分けられるかどうか自信はありません。ですが,まずは基準となる土台が作れたという気はしています。
YAMAHA / DP-U50 のバイナリ一致について
 一応,バイナリ一致についても確認してみました。利用したソフトウェアは下記のようなもの。

ASIO2KS 私の環境ではこちらのほうが対応状況がよさそうなので。
SoundEngine 音楽WAVの最初と最後に無音部分を追加するのに利用させていただきました。
WaveSpectra  ASIO経由での録音機能(1.3以降)を利用させていただきました。
WaveCompare 元WAVファイルと録音したWAVファイルの比較に利用させていただきました。

結果として,44.1kHz,48kHzのいずれにおいてもバイナリ一致を確認できました(16bit)。
今後の動向について
 閉塞感が強いオーディオの業界において,PCは大きな存在になる要素を秘めています。また,DTMの世界もオーディオの世界に訴求し始めています。今回のASIOもそのような流れのひとつという気がします。
 ASIOはその存在理由から言ってとにかくデータをいじらず,レイテンシが少なければそれで事足ります。従って,サポートするオーディオデバイスを増やすといった方向性への進化が続くと思われます。
 いずれにしても,少なくともひとつはバイナリ一致するパスを保有することは,PCにおいてオーディオを扱ううえで最低条件になる日も近いと思っています。
To the Home