西川和久の不定期コラム
「手持ちのサウンドデバイスで手軽にASIO!!」
ASIO4ALL - Universal ASIO Driver for WDM Audio



ASIO4ALL

 気が付けば、2003年はここで一文字も原稿を書いていない。いくら不定期連載とは言え、これはマズ過ぎる。写真ばかり撮っていたら一年経ってしまったと言うのがその真相ではあるものの、今年は心を入れ替え原稿も書かねば!

 復活第一弾は『手持ちのサウンドデバイスを手軽にASIO対応できるASIO4ALL』の紹介だ。但し、Windows 9x系は、後述するKernel streamingに対応していないので、このASIO4ALLは作動しない。予めご了承いただきたい。

Text by Kazuhisa Nishikawa


●ASIOって何!?

 DTM系の記事や広告などを見ていると、よくASIOという言葉が出てくる。

 これはSteinbergというドイツのメーカが作ったオーディオ用ドライバの規格であり、正確には"Audio Stream Input Output"訳してASIO(アジオ)と呼ばれている。つまり、Microsoftが作ったMMEやDirectSoundとは別のものなのだ。

 では何故このASIOがDTM用として広がったのか?一番の理由は“レイテンシー(遅延)を低くできる”から。一般的にMMEは100msec以上、DirectSoundで50msec以上のレイテンシーがあると言われている。流石にこれだけあると、例えばパソコンでソフトシンセを動かした場合、キーボードを押してから実際音が出るまで明らかに遅れてしまう。しかしASIOを使うと普通で10msec以下、低いものだと1msec以下のレイテンシーしか発生しない。なるほど、DTMで流行るのも納得。

 レイテンシーが低くなる理由は、MMEやDirectSoundと違ってWindowsのKernel Mixerなど余計なルートを経由せず、アプリケーションから直接ドライバへ信号を流せるからだ。

 余談になるが、Mac OS XではCore Audioと呼ばれる仕掛けがはじめからシステムで用意され、ASIOと同じレベルの超低レイテンシーを誇っている。このあたりの考え方がMicrosoftとAppleとの根本的な違いを現していて面白い。

 さて、今回は「ASIOを使ってソフトシンセを快適に弾こう!」と言う趣旨の記事ではない。ASIOの持つ特性、Kernel Mixerを通らない(つまり音が良い)に加え、実はこのレイテンシーを低く抑えることによって、デジタルオーディオの天敵、ジッターも減らすことができ、ダブル効果で『パソコンでの音楽再生が高音質に!』を狙うのだ。ただ、ドライバの仕掛け上、そのハードウェア専用のASIOドライバが必要になり、ASIO対応のハードウェアへ交換しなければならない。どうしようかな!?と悩んでいたところに、この汎用ASIOドライバとも呼べるASIO4ALL(Michael Tippach氏作/Free)が登場した。

●ASIO4ALLの仕掛け

 ドライバと直結する形で作られているASIO、これをどうやって汎用版にするのか!? キーワードは冒頭に書いたKernel streamingだ。Microsoftのドキュメントとサンプルアプリケーションはここにあるが(但し英文)、DirectKSと呼ばれるテクニックを使っている。

 大雑把に書くと、レイテンシーの高いWindowsのAPIを通さず、このKernel streamingを使って直接WDMドライバとやり取りし、レイテンシーを低くできるのだ。言葉で書けば安易そうだが、実はASIO2KSやAX-ASIOなどKernel streamingを使った汎用ASIOドライバはかなり前から存在していた。しかし、安定性の問題や仕様がInt16/LSBまでなど、αもしくはβ版のレベル。あくまでも実験的なものであった。そこへ今回のASIO4ALLが登場し、一気に解決したというわけだ。

 とは言え、このASIO4ALLも簡単に出来上がったのでなく、現在のバージョン 1.5に落ち着くまでは日替わりで変化していった。ただこのKernel streamingは、Windows 2000とWindows XPのみの対応であり、Windows 9.x系では機能しない。更に、WDMドライバそのものの作りが悪いと、その中でレイテンシーが発生し、正式にASIO対応したハードウェア程効果は出にくい可能性はある。

●ASIO4ALLの実験

 では、実際に筆者の手持ちの機材で試した結果をレポートしよう。インストール自体は簡単で、ここからドライバをダウンロードし、SetupA4A.exeを実行するだけだ。

IO DATA DDVOX
USB AudioのIO DATAのDDVOX。OpticalのIN/OUT、CoaxialのIN/OUTを持つ。ASIO4ALLが登場するまではこれを主に使っていた。理由は単純で、安価な割りにCoaxial対応だったからだ。一般的にS/PDIFはOpticalで接続するより、Coaxialの方が音が良いとされている。ただ、仕様からわかるようにに、出力は48KHz/16ビットのみ。

YAMAHA DP-U50
同じくUSB AudioのYAMAHA DP-U50。24ビットで32/44.1/48/96KHzに対応する。単にサウンドデバイスとして機能するだけでなく、DSPを内蔵しサウンドプロセッサ的な使い方ができる。一時期DDVOXにその座を奪われていたが、ASIO4ALLによって蘇ってしまった。ただ残念なのは、S/PDIF出力はOpticalのみになることだ。

EPIA-M1000
VIA C3/EDENを搭載したMini-ITXのマザーボードEPIA-M1000。部屋で使うマシンは静音マシンがいい。オンボードにVIA VT1616 6 channel AC'97 Codecを搭載し、TV Outと排他ながらもCoaxialのS/PDIF出力が可能である。初期のASIO4ALLでは48KHzだけしか動かなかったが、バージョンが1.5になって44.1KHzも可能になった。

DDVOXの結果
後述するASIO Capsを使ってASIO4ALLのパネルを開く。見事ASIO対応にはなったものの、DDVOXの仕様通り、48KHzしか選択できない状態になっている。44.1KHzから48KHzへのアップサンプリングを行なえば音が出る事は確認したが、筆者の思惑とは合わず没となった。とは言え、一年以上使ったので元は取ったか!?

DP-U50の結果
DP-U50がASIO対応になった!!Sample Rateも44.1KHzと48KHzが選べる様になっている。ASIO4ALLのドキュメントによると、標準のUSB Audio DriverのBUGにより、Direct DMA Buffer I/Oは使えないと書かれている。どの様なBUGか!?筆者は知らないが、このドライバけっこう古いので、BUGも仕様の内なのか!?

EPIA-M1000の結果
VIA AC'97 AudioもASIO化OK!!ただ、Direct DMA Buffer I/Oを試したところ、音切れ(プチプチとノイズが乗る)するので、この様な設定になっている。ASIO4ALLの設定は、このノイズが乗らない範囲で各数値を最小に調整する。他のマシンではDirect DMA Buffer I/O(128/2/2)で問題無く動いている。CPUパワーやチップセットに依存するのだろう。

各対応するASIOファンクション
左がDP-U50、右がVIA AC'97 Audio。どちらも44.1KHzと48KHzに対応するものの、DP-U50はInt32LSB/2チャンネル、VIA AC'97 AudioはInt16LSB/6チャンネルになっていることがわかる。このソフトはASIO Caps。ドライバが対応しているファンクションを調べる他に、ASIOコントロールパネルを開くこともできる。

筆者の使っているDACなど
日頃ネットラジオなどを聞いている機器。DP-U50のS/PDIF出力をいったん、AUDIO Alchemyの DTIと言うD/Dコンバータを通し、DACのOdeon-Liteへ接続している。下のCDPはKENWOOD DPF-7002。このCDPにはS/PDIF入力があり、DACとしても使える優れものだ。ただ現在は、S/PDIF出力を同じくAUDIO AlchemyのDTIへ接続し、PC系とCDPはD/Dコンバータの入力を切り替えることによって行なっている。SPはBOSE 111AD。レンジの広いSPではMP3など圧縮系の荒が目立つので、この程度が無難かも!?

WINAMP5
何かASIO対応のアプリケーションを持っていれば、その効果は直ぐ解るものの、何も無い時は、WINAMP5でチェックすればいいだろう。但し、別途ここからASIO出力用のプラグインを用意する。非SSE/SSE/SSE2対応と三つタイプがあり、使っているCPUにあわせて選択すればよい。インストールは簡単で、ZIPからWINAMPのpluginsフォルダへEXEとDLLを一本ずつコピーするだけである。残念ながら定番のWindows Media PlayerやiTunesのASIOに対応するプラグインは筆者の知る限り存在しない。

ASIO plug-in
Options→Preferences→Outputで、このパネルを開く。無事、ASIOプラグインがインストールされれば、一番上に「ASIO output plug-in (exe version)」が表示される。

ASIO plug-inの設定
Configureでこのプラグインの設定を行なう。通常はこのパターンで問題はないだろう。「Convert 1channel to 2channels」は、64K/Monoのネットラジオなど、モノラルの時、片チャンネルしか音が出ないのを防ぐ。

in_mpg123 plug-inへ入れ替え
ついでに、MP3のデコーダも標準プラグインより高音質&高機能のプラグインへ入れ替える。「おたちゃんのMIDI/Audioソフト」にはお世話になりっぱなしだ。この場を借りてお礼を述べたい。


●総論

 手持ちのサウンドデバイスをソフトウェアだけでASIO対応するASIO4ALLは、筆者にとって非常にありがたい存在だ。ネットラジオやリッピングした音楽を再生すると効果抜群!立ち上がりが良くなり、透明度アップ、音の密度も濃くなってくる。特にAC'97 Audioの音質向上は著しい。「今まで聞いてた音は何だったの!?」という状態だ。全てのサウンドデバイスに100%対応できるか!?は不明であるものの、是非、読者の皆さんも実験して欲しい。うまく動けば、同じハードウェアなのにいい意味で違うサウンドになるハズだ。

 なお、ASIO4ALLのバージョンアップは続いており、脱稿後の2月2日にはVersion1.6になっている。

バックナンバー

(2004年2月4日)

[Text by 西川和久]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2004 Impress Corporation All rights reserved.