藤本健のDigital Audio Laboratory

862回

高性能にASIO化できる? 万能仮想ミキサー「VoiceMeeter Banana」のASIO出力を検証

VoiceMeeter Banana

以前、非常に便利で万能な仮想ミキサーとして紹介した、ドネーションウェアの「VoiceMeeter Banana」(第852回参照)。

記事を公開した後、SNSなどを通じて複数の方から、「非ASIO対応のオーディオインターフェイスやサウンド機能をASIO化する上で、ASIO4ALLより高性能だ」といった情報がよせられ、気になっていた。実際のところはどうなのか、お盆休み中にASIO4ALLなどとも比較しながら試してみたので、紹介してみよう。

Windowsのオーディオドライバ問題

オーディオドライバの状況について簡単に説明しておくと、MacはCoreAudioが標準だが、Windowsは同じオーディオインターフェイス、同じサウンドデバイスであっても、複数の種類のドライバが存在する。

具体的には……

  • MME
  • WDM/KS
  • Direct Sound
  • WASAPI
  • ASIO

……などが存在しており、過去にはGSIF(GigaSampler Interface)といったものもあった。

それぞれ同じレイヤーにいるわけではなく、Direct SoundやWASAPIはドライバというよりAPIの一つであるため、状況によって使えるもの、使えないものがある。またWASAPIには排他モードと共有モードがあり、どちらのモードであるかによって、動作も異なる。しかもソフトによってはWASAPIのことをWDMと表現することがあるなど、とにかく分かりにくいのがWindowsのオーディオドライバなのだ。

Digital Audio Laboratoryにおいて、過去に何度も「問題である」と指摘してきたカーネルミキサー(現在の正式名称はAudio Engine)。カーネルミキサーとは、Windowsの内部ミキサーのことだが、このカーネルミキサーを通すことで音質劣化が生じる。

Windows標準のドライバであるMME、Direct Sound、WASAPI(共有モード)においては必ずカーネルミキサーを経由して音が出るため、音が劣化するのはWindowsの大きな欠点といってもいいだろう。どう劣化するのかについては過去記事で何度も取り上げているので、そちらを参照いただきたいが、音量が最大値の0dBに近づいたときに勝手にリミッターが掛かるので、音が変質してしまうという問題がある。

この問題を避けるために登場したのが、Steinbergが提唱したASIOというドライバ。まあ、カーネルミキサーを避けるため、という表現は語弊があるかもしれない。ASIOはマルチチャンネルのオーディオインターフェイスとスムーズにやりとりできるようにするために作られた規格であり、その際カーネルミキサーは経由せず直接データのやりとりを可能にしたもの。結果として、ASIOドライバを使うことで、音質劣化を避けることができるわけだ。

ASIOと同様に、カーネルミキサーを介さず音を出力できるようにする仕組みをマイクロソフトも打ち出したのが、WASAPIの排他モード。ただしWindows標準のWindows Media PlayerやミュージックはWASAPI排他モードに対応していないため、foober 2000などの特殊なプレイヤーを入手しないと使えないというのが実情だ。

一方、CubaseやStudio One、FL Studio、Ableton LiveといったDAWが標準として使うのがASIO。シンプルで使いやすいことが大きなメリットであり、レイテンシーを小さく抑えられるのも重要なポイントとなっている。

以上のように、ASIOはさまざまなメリットがあるが、最大のデメリットは「Windows標準ではないため、メーカーがASIOドライバを用意する必要がある」という点。つまりオンボードのサウンド機能であったり、USBオーディオインターフェイスやUSB-DACにおいては、メーカーがASIOドライバを用意しない限り使えないのだ。

それを解決する手段として登場したのが、すべてのオーディオデバイスでASIOが使えるようになるフリーウェアの「ASIO4ALL」だ。MMEに被せるような形でASIO化することで、カーネルミキサーのバイパスを実現。バッファサイズも変更できるので、レイテンシーを調整することができる。

ASIO4ALL

しかし、個人的にはASIO4ALLが好きではない。うまく設定できなかったり、落ちてしまったり、動作が不安定になるなど、気持ちよく使えないケースが多いためだ。ただ最近は、DAWメーカーなどがASIO4ALLに相当するものを作るようになってきた。具体的にはSteinbergのCubaseなどをインストールすると自動的に入ってくる「Generic Low Latancy ASIO」や、FL Studioをインストールする際に入ってくる「FL Studio ASIO」などだ。

Generic Low Latancy ASIO

Generic Low Latency ASIOは、WASAPIをASIOに見せかけるためのツールでCubase内でしか使えないが、FL Studio ASIOであれば、ほかのソフトでも利用できる汎用的なツールだ。ASIO4ALLと比較すると設定項目は少ないが、安定して動作してくれるという印象を持っている。FL Studio ASIOで設定するのは入出力ポートに何を使うか? バッファサイズをいくつにするか? というだけのシンプルな内容になっている。

FL Studio ASIO

やや前置きが長くなってしまったが、前述のASIO4ALLやFL Studio ASIOのようなことがVoiceMeeter Bananaでもできると聞き、今回試してみたわけだ。

VoiceMeeter Banana

VoiceMeeter Bananaでは3つのASIOドライバが選択可能

VoiceMeeter Bananaの細かい使い方は以前の記事に譲るが、同ソフトをインストールすると、プレイヤーソフトやDAWからは……

  • Voicemeeter Virtual ASIO
  • Voicemeeter AUX ASIO
  • Voicemeeter Insert Virtual ASIO

……という3つのASIOドライバが見えるようになる。

3種類のASIOドライバが確認できる

このうちVirtual ASIOとAUX ASIOはほぼ同等のもので、このドライバに対して送った信号はVoiceMeeter Bananaの仮想入力チャンネルと仮想入力AUXチャンネルに入ってくる。WindowsのHD Audioデバイスなどを想定しているものと思うが、いずれも8chの入出力になっているのがユニークな点だ。

8chの入出力に対応する

一方のInsert Virtual ASIOはさらに細かくルーティングできるようになっていて、22in/22outのドライバとして見えるようになっている。とはいえ2in/2outで使う上では、どれもほぼ同じ性能のものなので、ここではVoicemeeter Virtual ASIOを使うことにする。

Insert Virtual ASIOでは、22in/22outのドライバとして見える

なお、多くのオーディオインターフェイスのASIOは排他的になっており、1つのソフトで使うと別のソフトでは同時に使用できない。しかし、VoiceMeeter BananaのVirtual ASIOなどは、最大4つのソフトで同時に使うことができるため、ASIOをマルチクライアント化する上でも活用することができる。

プレイヤーソフトやDAWからは、Voicemeeter Virtual ASIOとして送り出した信号はVoiceMeeter BananaのVIRTUAL INPUTに入ってくるわけだが、その後その信号はA1、A2、A3およびB1、B2に出力できる仕組みになっている。

A1、A2、A3は物理出力であり、あらかじめHARDWARE OUTとして指定しておいたドライバへ送られる。一方、B1、B2は仮想ドライバとなっており、ソフト的に利用するバスとなっている。つまりHARDWARE OUTとしてはMMEを設定すれば、結果としてASIOドライバに対応していないオーディオインターフェイスをASIO化できる。

しかも、HARDWARE OUTにはMMEのほかに、WDM(=WASAPI)、KS(=Kernel Streaming)も設定できるので、どれを選ぶかによって、内部的に使うドライバ、設定できるバッファサイズ、レイテンシーが連動して変わってくるため、それらの変化をチェックしてみようというわけだ。

ASIO出力を試す。“ASIO4ALLより高性能”はホント?

実験には、Native InstrumentsのKOMPLETE AUDIO 2というUSB接続のオーディオインターフェイスを使った。

Native Instruments「KOMPLETE AUDIO 2」

KOMPLETE AUDIO 2には専用ドライバが用意されており、普通はASIO4ALLなどを使う必要はない。ただ、これ自体がUSBクラスコンプライアントなデバイスになっているため、ドライバをインストールしなくてもそのまま使えるので実験素材として使うことにした。

本機を接続した状態で、VoiceMeeter BananaのHARDWARE OUTを見てみると……

  • WDM:スピーカー(KompleteAudio 2)
  • MME:スピーカー(KompleteAudio 2)

……という2つが表示されている。

HARDWARE OUTを見ると「WDM:スピーカー」、「MME:スピーカー」が表示されている

なぜKSが見えないのか? その理由はハッキリわからなかったが、ここではWDM(=WASAPI)、およびMMEを使って試してみる。

最初に試してみたのはMME。DAWなどから音を出すと、問題なく音が出ているし、しっかりASIO経由での出力ができていることが確認できる。ただし、DAWから音を出し、ソフトウェア音源などを弾いてみると、大きなレイテンシーがあることに気づく。

System settingsという設定画面を見ると、デフォルトでのバッファサイズが1,024サンプルとなっているので、ここで大きな遅れが生じるのだ。

デフォルトのバッファサイズは1,024サンプルとなっている

計算上においては……

1÷44.1kHz×1,024=23.2ms

……というレイテンシーだが、いつも使っているCentranceのASIO Latency Test Utilityで測定してみたところ、46.46msと表示され、ちょうど倍の数字となった。入力と出力それぞれでバッファを通すので、この数値になったのだと思うが、理論通りの結果になっているのはちょっと驚いた。

このバッファサイズはVoiceMeeter Bananaの設定画面で変更可能になっている。

1,024という数字をクリックすると、いちいちアラートが表示されるのが、ちょっと面倒なところだが、最小で480サンプルまで設定できる。480にしても問題なく動作し、音が途切れるようなこともない。この状態で再度テストしてみると、43.56msという結果であって、1,024時と大きく変わらない。ここがMMEを使うボトルネックなのかもしれない。

サンプル数字をクリックすると、アラートを表示
480サンプルの場合

では、WDMに切り替えるとどうなるか? こちらはデフォルトで512サンプルとなっており、理論値的には1,024の半分の11.6msという計算だが、これを測定してみた結果は先ほどのMMEの場合とほぼ同じ46.46msとなった。

512サンプル時のレイテンシーは、46.46ms

なぜこうなるのかはわからないが、WDMではバッファサイズをもっと小さくできるので、これも試してみた。少しずつ小さくしていき160サンプルでは、14.54msというところまで縮めることができた。が、なぜか128サンプルを選んでも、1,024サンプルが設定されてしまい160サンプルが限界。これがレイテンシーにおいてはVoiceMeeter Bananaの最小値ということのようだった。

160サンプル時のレイテンシーは、14.54ms

では、これをASIO4ALL、FL Studio ASIOでどうなるのか、同じ44.1kHzで実験してみた。

まずASIO4ALLだが、デフォルトでのバッファサイズは512サンプルとなっており、詳細画面を見てみるとWaveRTなどほかにもさまざまな設定項目がある。この状態でレイテンシーをテストしてみると46.67msとなった。

デフォルトでのバッファサイズは512サンプル
詳細画面
512サンプル時のレイテンシーは、46.67ms

右側のパラメーターは今回動かさないが、バッファサイズを縮めることができる。これを128サンプルまで縮めると31.72msとなったものの、さらに下げていくと、うまく動作しないのか64サンプルでは72.24msになってしまった。

128サンプル時のレイテンシーは、31.72ms
64サンプル時のレイテンシーは、72.24ms

もう一つ試してみたのがFL Studio ASIO。こちらもデフォルトでは512サンプルとなっていたので、そのまま測定してみると11.66msとなった。そこそこいい値で動いているし、この状態でDAWを使っても音が途切れるようなこともなかった。

FL Studio ASIOで試す
512サンプル時のレイテンシーは、11.66ms

では、このバッファサイズを下げるとどうなるか? 256サンプルというものがあったので、実験してみたが、なぜかほぼ同じ数字になった。やはり不可解なところはあるが、条件によって設定できるバッファサイズと設定できないバッファサイズがある、ということなのかもしれない。

256サンプル時のレイテンシーは、11.75ms

最後に使用したのは、Native Instrumentsが出しているKomplete Audio 2用のメーカー純正ドライバだ。

デフォルトの512サンプルでテストしてみると、レイテンシーは35.12ms。しかし、設定を最初で8サンプルまでにできるので、これで実行してみると、5.69msという結果を得ることができた。8サンプルで音切れなどが起きないか、念のためStudio Oneで試してみたところ大丈夫だし、レイテンシーはまったく感じない。さすがメーカー製といったところだろう。

512サンプル時のレイテンシーは、35.12ms
8サンプルまで設定可能
8サンプル時のレイテンシーは、5.69ms
8サンプル状態でも、Studio Oneで問題なく使用できた

以上、いろいろと検証してみたが、いかがだっただろうか。VoiceMeeter Bananaは非常に柔軟なシステムではあるけれど、バッファサイズを縮めるという意味では、そこまで大きな威力はないのでは、という印象だ。

一方でほとんど使ったことのなかったFL Studio ASIOは、オーディオインターフェイスによってはASIO4ALLよりもいい結果となる可能性もありそう。やはりメーカーが用意してくれるASIOドライバを使うのがベストなのは間違いないが、もしない場合はいくつか試してみて一番相性のいいものを選ぶのがいいのかもしれない。

藤本健

 リクルートに15年勤務した後、2004年に有限会社フラクタル・デザインを設立。リクルート在籍時代からMIDI、オーディオ、レコーディング関連の記事を中心に執筆している。以前にはシーケンスソフトの開発やMIDIインターフェイス、パソコン用音源の開発に携わったこともあるため、現在でも、システム周りの知識は深い。  著書に「コンプリートDTMガイドブック」(リットーミュージック)、「できる初音ミク&鏡音リン・レン 」(インプレスジャパン)、「MASTER OF SONAR」(BNN新社)などがある。またブログ型ニュースサイトDTMステーションを運営するほか、All AboutではDTM・デジタルレコーディング担当ガイドも務めている。Twitterは@kenfujimoto