DAWで再生していると、ときどき「プチッ」と小さな音が混じる。録音したテイクを聴き返すと、一瞬だけ音が途切れている。Windowsの制作PCでこの症状が出たとき、手当たり次第に設定をいじると、何が効いたのか分からないまま時間だけが過ぎていく。以前の自分がまさにそうで、電源設定を変え、ドライバを入れ直し、バッファを上げ下げして、結局どれが原因だったのか覚えていなかった。

同じことを繰り返さないように、疑う順番を決めて手順にしておく。音切れの原因は、大きく分けて3つの層のどこかにある。アプリがどのドライバ方式で音を出しているか、そのドライバに渡しているバッファの大きさ、そしてWindowsの奥でほかのドライバが処理を長く占有していないか、の3つだ。上の層から順に確かめていけば、どこで詰まっているかはたいてい絞り込める。最後の層を見るには、Resplendence社の無料ツールLatencyMonを使う。

音切れは3つの層のどこかで起きている

オーディオ機器の背面にある、USB端子と同軸デジタル入力、光デジタル入力の3つの端子
USB端子の向こうでは、ドライバが一定の間隔で音のデータを受け渡しているPhoto: Musicproducer / CC BY-SA 4.0

パソコンの音は、決まった量のデータをまとめて、決まった間隔で機器へ渡す仕組みで流れている。このひとまとまりがバッファで、次のバッファが渡されるまでに音のデータを作り終えていないと、その瞬間に音が欠ける。プチノイズや音切れの正体は、ほとんどがこの「間に合わなかった」という出来事だ。

間に合わない理由は、層ごとに違う。1つめはドライバ方式の層で、Windowsのミキサーを通る方式では、ほかのアプリの音と混ぜたり、サンプリング周波数を変換したりする処理が間に入る。2つめはバッファの層で、バッファを小さくすれば反応は速くなるが、1回あたりに使える時間が短くなり、少しの遅れで間に合わなくなる。3つめはDPCの層で、ネットワークやグラフィックス、電源管理などのドライバが割り込み処理を長く握ると、音を作る処理の順番が回ってこなくなる。

この3つは、上から順に確かめるのが近道だと思う。ドライバ方式とバッファはDAWの設定画面で数分あれば変えられるが、DPCの原因を探すにはドライバを1つずつ止めて測り直す必要があり、手間がかかる。手軽な層から片付けて、それでも残ったときに初めて奥の層に進む、という順番にしておくと、無駄な作業が減る。

MMEとWASAPIとASIO、音が通る道の違い

白い円形のUSB接続の5.1チャンネル音声アダプターと、小型のUSBサウンドアダプター
安価なUSB音声アダプターはWindows標準のドライバで動き、ASIOドライバを持たないことが多いPhoto: Itu / CC BY-SA 3.0

DAWのオーディオ設定には、MME、DirectSound、WASAPI、ASIOといった名前が並ぶ。どれを選ぶかで、音のデータがWindowsの中をどう通るかが変わる。最初に確かめるのは、いま自分のDAWがどれで動いているか、という点だ。意外と、インストール直後の既定のままMMEで動いていた、ということがある。

MMEはWindowsの最も古い方式で、Windowsのオーディオエンジンを通り、ほかのアプリの音と混ぜられてから機器へ届く。手軽で互換性は高いが、遅延は数十ミリ秒になることが多く、鍵盤を弾いてから音が出るまでのずれがはっきり分かる。DirectSoundも、いまのWindowsでは内部でオーディオエンジンを経由する古い方式で、制作用に選ぶ理由はほとんどない。

WASAPIはWindows Vista以降の標準の方式で、共有モードと排他モードの2つがある。共有モードはオーディオエンジンのミキサーを通るので、ブラウザやチャットの音と同時に鳴らせる。代わりに、混ぜる処理と、機器の形式に合わせるサンプリング周波数の変換が入る。Microsoftの資料では、Windows 10以降でオーディオエンジン自体の遅延は1.3ミリ秒まで縮み、標準の音声ドライバでもアプリが対応していれば48kHzで128サンプル(2.66ミリ秒)から480サンプル(10ミリ秒)までのバッファを選べるようになった。従来の既定はおよそ10ミリ秒のバッファだった。排他モードはミキサーを通らずに機器を1つのアプリが専有する方式で、遅延はさらに短くなるが、そのあいだはほかのアプリの音が出なくなる。

ASIOはSteinberg社が定めた方式で、機器のメーカーが配布するASIOドライバに、アプリが直接データを渡す。Windowsのミキサーを通らず、機器の側もこの方式に合わせて作られているので、小さなバッファでも安定しやすい。オーディオインターフェースを使っているなら、まずメーカー純正のASIOドライバを選ぶのが基本になる。

方式Windowsのミキサーほかのアプリの音遅延の傾向向いている場面
MME通る同時に鳴る大きい(数十ミリ秒)互換性の確認
DirectSound通る同時に鳴るMMEに近い古いアプリ
WASAPI 共有通る同時に鳴る中くらい内蔵音源で聴くだけのとき
WASAPI 排他通らない止まる小さいASIOの無い機器での録音
ASIO(メーカー純正)通らない機器による小さい録音・打ち込みの本番

注意したいのは、ASIO4ALLやFlexASIOのような汎用のASIOドライバだ。これらはASIOの窓口を用意して、その裏でWindows側の仕組みを使って音を出す。ASIOの無い内蔵音源でもDAWを動かせるので便利だが、ASIO4ALLは基本的に1つのアプリからしか使えず、FlexASIOは入力と出力でサンプリング周波数が違うと開けない。さらに、汎用のASIOドライバを複数入れていると、起動のたびに機器の取り合いが起きて不安定になることがある。オーディオインターフェースの純正ASIOドライバがあるなら、汎用ドライバは使わないほうがいいし、使わないならアンインストールしておくほうが切り分けが楽になる。

この層の確かめ方は単純だ。DAWの設定でドライバをメーカー純正のASIOに切り替え、同じ曲を同じバッファで再生して、症状が変わるかを見る。MMEやWASAPI共有で鳴っていたなら、これだけで直ることも多い。純正ASIOでも症状が残るなら、次のバッファの層へ進む。

バッファサイズとレイテンシの計算

バッファの長さは、サンプル数をサンプリング周波数で割れば時間に直せる。48kHzで256サンプルなら、256を48,000で割って約5.33ミリ秒になる。DAWの設定画面に出る数字の意味が分かると、どこまで下げてよいかの見当がつく。

バッファ44.1kHz48kHz96kHz
64サンプル1.45ミリ秒1.33ミリ秒0.67ミリ秒
128サンプル2.90ミリ秒2.67ミリ秒1.33ミリ秒
256サンプル5.80ミリ秒5.33ミリ秒2.67ミリ秒
512サンプル11.61ミリ秒10.67ミリ秒5.33ミリ秒
1024サンプル23.22ミリ秒21.33ミリ秒10.67ミリ秒

表の値は片道ぶんだ。マイクで歌いながらDAWを通した音をヘッドホンで聴く場合は、入力のバッファと出力のバッファが両方かかるので、少なくとも2倍になる。さらにAD/DA変換や、ドライバが安全のために足す余裕の分が加わるので、DAWが表示する往復のレイテンシは、この表の2倍より数ミリ秒長くなるのが普通だ。

もう1つ覚えておきたいのは、同じサンプル数でも、サンプリング周波数を上げると1回あたりの時間が短くなることだ。96kHzで256サンプルは、48kHzの128サンプルと同じ2.67ミリ秒になる。つまり、96kHzのプロジェクトでは48kHzのときより処理に余裕が無くなる。音切れが出たプロジェクトだけ周波数が高い、ということもあるので、確かめておく。

この層の確かめ方は、バッファを1段ずつ大きくして症状が消えるところを探すことだ。256で出ていた音切れが512で消えるなら、処理の重さとバッファの長さの釣り合いの問題で、プラグインを減らす、トラックをフリーズする、録音中だけバッファを下げてミックスでは上げる、といった運用で対処できる。逆に、1024まで上げても数分おきにプチッと鳴るなら、バッファの長さとは別のところで処理が止められている可能性が高い。ここから先がDPCの層になる。

LatencyMonは何を測っているのか

キーボードの横に置かれた、大きなダイヤルと表示画面を持つ銀色のUSBオーディオインターフェース
オーディオインターフェースの性能が十分でも、ほかのドライバが処理を握ると音は途切れるPhoto: Matt Vanacoro / CC BY 2.0

Windowsでは、機器から割り込みが来ると、まずISR(割り込みサービスルーチン)という短い処理が走り、残りの仕事はDPC(遅延プロシージャ呼び出し)として後回しにされる。DPCは普通のアプリの処理より優先されるので、どこかのドライバのDPCが長く居座ると、そのあいだはDAWも音声ドライバも待たされる。バッファがいくら大きくても、数ミリ秒の割り込みが不定期に入れば、その瞬間に音は欠ける。

LatencyMonは、このISRとDPCの実行時間、ハードページフォールト(メモリの内容をディスクから読み直す処理)、そして割り込みが起きてからアプリ側の処理が動き出すまでの時間を測り、ドライバごとに集計するツールだ。家庭での利用は無料で、現行版は7.31になる。起動して「Start」を押すと計測が始まり、止めるまで記録を続ける。

画面の上部には、計測結果に基づく判定が出る。判定の基準は、計測中に見つかったISRとDPCの最長の実行時間で、すべてが2,000マイクロ秒(2ミリ秒)未満なら、リアルタイムの音声処理に「向いている(suitable)」、2,000から4,000マイクロ秒のものがあれば「疑わしい(doubtful)」、4,000マイクロ秒を超えるものがあれば「向いていない(unsuitable)」となる。判定の文字が赤くなっても慌てなくていい。大事なのは、どのドライバがその数字を出したかのほうだ。

タブは5つある。「Main」は判定と要約、「Stats」は詳しい数値のレポート、「Processes」はハードページフォールトを起こしたプロセスの一覧、「Drivers」はドライバごとのISRとDPCの回数と最長実行時間、「CPUs」はコアごとの集計になっている。切り分けで主に見るのは「Drivers」タブで、「Highest execution」の列で並べ替えると、処理を長く握っているドライバが上に来る。

LatencyMonで切り分ける手順

計測のしかたにはいくつか注意がある。何もしていないときに測っても、問題のドライバが動かなければ数字は出ない。音切れが起きる状況をできるだけ再現しながら測るのがこつだ。手順は次のとおりにしている。

  1. DAWを閉じ、ブラウザや同期ソフトなど常駐しているアプリもできるだけ終了してから、LatencyMonを起動して「Start」を押す。
  2. そのまま10分ほど、普段の作業に近い操作をする。ネット経由のプラグイン認証やクラウド同期、Wi-Fiの通信、画面の再描画など、音切れのときに裏で動いていそうなことは、あえて一緒に動かしておく。
  3. 「Stop」を押し、「Main」タブの判定と、「Drivers」タブで最長実行時間の大きいドライバを控える。ファイル名と数値、計測した時刻と状況を1行ずつメモに残す。
  4. 疑わしいドライバに対応する機器を、デバイスマネージャーで一時的に無効にするか、関係する設定を1つだけ変える。変えるのは必ず1つだけにする。
  5. 再起動してから、同じ条件で再び10分測る。数値が下がれば、その機器か設定が原因だと分かる。下がらなければ元に戻して、次の候補に移る。
  6. 原因が分かったら、無効にした機器を戻し、ドライバの更新や設定の見直しで恒久的に対処する。対処したあとにもう一度測り、記録をメモに追記する。

ここで大切なのは、1回に変えるものを1つにすることだ。電源設定とドライバの更新を同時にやると、直ったとしてもどちらが効いたのか分からず、次に同じことが起きたときにまた手探りになる。面倒でも、測る、1つ変える、測るの繰り返しにしておくと、手元の記録がそのまま自分のPC専用の対処表になる。

もう1つ、LatencyMonの判定が「向いている」なのに音切れが続く場合は、DPCの層ではなく、CPUの処理が単純に追いついていないか、ディスクの読み込みが間に合っていない可能性が高い。その場合はDAWのCPUメーターやディスクメーターを見ながら、もう一度バッファの層に戻って考えるほうが早い。

よく名前が挙がるドライバと、試す対処

Drivers タブの上位に出てくるドライバには、ある程度決まった顔ぶれがある。ファイル名から何の機器かが分かれば、どこを止めて試せばいいかの見当がつく。

ファイル名関係する機器試す対処
ndis.sys / nwifi.sys / tcpip.sys有線・無線のネットワークWi-FiやBluetoothのアダプターを一時的に無効にして測る。改善すれば、メーカー配布のドライバへの更新と、アダプターの省電力設定の見直し
nvlddmkm.sys / dxgkrnl.sysグラフィックスGPUドライバを更新するか、1つ前の版に戻す。入れ直すときは古いドライバを完全に消してから
ACPI.sys電源管理・バッテリー電源プランを高パフォーマンスにして測る。ノートPCではバッテリーの管理ドライバが原因になることがあり、BIOSとチップセットドライバの更新を試す
storport.sys / storahci.sysSSDやHDDの接続チップセットやストレージのドライバを更新する
USBXHCI.sys / usbport.sysUSBコントローラー電源オプションのUSBのセレクティブサスペンドを無効にする。オーディオインターフェースを別のUSBポートに挿し替える
Wdf01000.sysドライバの共通の枠組みこれ自体ではなく、その上で動くドライバが原因のことが多い。ほかの候補を先に当たる
HDAudBus.sys内蔵の音声デバイス使っていないなら、内蔵の音声デバイスを無効にして測る

ノートPCでよく見かけるのが、ACPI.sysが数ミリ秒の値を出すケースだ。これは電源管理の処理で、バッテリー残量の確認や、CPUの省電力状態の切り替えのたびに走る。電源につないだ状態で、Windowsの電源モードを「最適なパフォーマンス」に、電源プランを「高パフォーマンス」にしてから測り直すと、ここが落ち着くことがある。それでも残るなら、BIOSでCPUの省電力機能(C-StateやSpeedStepなど)を切る方法もあるが、発熱と消費電力が増えるので、制作中だけ切り替えるくらいがちょうどいいと思う。

ネットワーク系のドライバが上位に来たときは、まず有線LANに切り替えてWi-Fiを無効にし、測り直してみる。これで落ち着けば、Wi-Fiのアダプターの省電力設定を見直すか、録音中だけWi-Fiを切る運用にすればよい。グラフィックスのドライバは、更新で改善することもあれば、更新で悪化することもあるので、変える前に今の版の番号を控えておくと戻しやすい。

切り分けの記録と、普段の設定

最後に、普段の制作で守っている設定をまとめておく。どれも単独で劇的に効くものではないが、音切れが出にくい土台を作っておくと、問題が起きたときの切り分けも早くなる。

  • DAWのドライバは、オーディオインターフェースの純正ASIOに固定する。汎用ASIOドライバは入れないか、入れていても選ばない
  • 録音中はバッファを128〜256サンプル、ミックス中は512〜1024サンプルと、作業ごとに切り替える
  • プロジェクトのサンプリング周波数は、必要がなければ48kHzにしておく
  • 制作中は電源につなぎ、電源プランを高パフォーマンスにする
  • オーディオインターフェースはUSBハブを通さず、パソコン本体のポートに直接挿す
  • ドライバやBIOSを更新したら、LatencyMonで10分測って記録を残す

音切れは、起きる頻度が低いほど原因の特定が難しい。だからこそ、何も起きていないときに一度測っておいて、自分のPCの平常時の数字を知っておくと役に立つ。平常時の上位のドライバと最長実行時間を控えておけば、次に音切れが出たとき、何が変わったのかをすぐに比べられる。起動時のメモリやバックグラウンドの処理を減らす設定は、Windows 11 26H2で減った起動時メモリ、DAWの制作PCで効く設定と効かない設定にまとめている。録音に入るノイズがパソコンのファンの音の場合は、制作PCのファン音を録音に入れない、静音ケースより先に効く距離とマイクの向きのほうが近い。

関連記事