Windowsのオーディオシステムと紛らわしいVB-Audio Voicemeeterの用語

VB-Audio Voicemeeter Banana (PDFマニュアル) を使う上で、Windowsのオーディオシステムをある程度理解する必要があったが、Voicemeeterでの用語が紛らわしく(というか不適切と言い切っていいくらい)てかなり混乱したのでここに整理しておく。

Understanding The Windows Sound System | Podcast Promo Institute“にざっくりとした説明がある。

Which One Should I Use?
For the best performance, you should use: ASIO if available, then WDM/KS, then DirectSound, and only use MME if there is no other option. WASAPI isn’t offered in most audio software and doesn’t bring much that WDM/KS doesn’t, so I can’t recommend using it.

In addition, it (=WASAPI) doesn’t provide sample rate conversion, so it requires all audio streams to use the same sample rate as the audio hardware (same as Ardour and JACK under Linux) which can either be a confusing pain the ass, or give a hit in audio quality because an application has poor conversion code.

ただし、これは古い記事で内容が不正確。特にWASAPI(Wikipedia)についての上の記述は、排他的(exclusive)モードのことを指していると思われる。結論も、ASIOが最初の選択なのはいいとして、次はWASAPI、というのが現在の常識ではないだろうか(”ASIO / WASAPI , Windows10 : headphones“ではWASAPIの方がいいとする意見がある。この辺はもう素人の自分には判断できない)。WASAPIはいまだによくわからないのだが、自分なりのまとめを”WASAPIってようわからん“に書いた。

楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要 – Windows Multimedia Hacks“はWindows 7のオーディオシステムについての記事であるが、WASAPIのもう一つのモード、すなわち共有(shared)モードの上に、それ以前のオーディオシステム(例えばDirectSound)が実装されているであろうことが読み取れる。

次に、VB-Audio Voicemeeter Bananaの用語であるが、そのPDFマニュアルを見ると以下のような記載がある(p. 7)。

VoiceMeeterにおけるWindowsサウンドシステムの用語

VoicemeeterにおけるWindowsサウンドシステムの用語

これをよく読むと、Voicemeeterでいうところの”WDM”というのが通常”WASAPI”と呼ばれているものであり、”KS”というのが通常”WDM/KS”と呼ばれているものであるということがわかる。

VoicemeeterでのWASAPIの扱いについては、”Understanding Windows Audio System by using Voicemeeter“に以下のように説明されている。

What is Exclusive Mode? Best audio performances are given when using audio device in exclusive mode. This is what Voicemeeter does when selecting WDM (WASAPI) audio output devices (or KS). In this case, no other application might be able to use the same audio device, and then might need to be connected to Voicemeeter virtual input instead. Voicemeeter is intended to become you (sic) Central Audio Hub (as a mixing console does in real life). Note Voicemeeter uses WDM input device in share mode per default.

つまり、出力デバイスを(Voicemeeterの用語での)WDMシステムを介して指定すると、WASAPIの排他的モードが適用され、入力デバイスを(Voicemeeterの用語での)WDMシステムを介して指定すると、WASAPIの共有モードが適用されるということ。入力デバイスの方は問題ないとして、出力デバイスの1つはスピーカであろうから、これが排他的モードで利用されるということは留意する必要がある。なぜなら、他のアプリケーションソフトウェアからスピーカに(Voicemeeterを介さず直接)出力することができないから。

それが困る場合はどうするか。2つ考えられる。

  • 上の引用にあるように、仮想インプットデバイス(Voicemeeter内蔵のか、同じ作者によるVB-Audio Virtual Audio Cablesを利用)に出力させ、それをさらにスピーカに回す。
  • スピーカに、自動的に排他的モードが選択されるWDMではなくMMEなどを指定して出力する。

前者がいわば公式の対処方法。後者が楽といえば楽だが想定外の問題が起きるかも。

ここで不思議なことが。VoicemeeterがWASAPI排他的モードでスピーカを使用しているとする。特に個別に指定しない限り、他のアプリケーションソフトウェアはデフォルトのオーディオ出力デバイスに出力しようとする。それがスピーカになっている場合、オーディオがスピーカから再生されない、という結果になるはずである。実際、Windows Media PlayerやFirefoxなどではそうなる(前者ではエラーが起こる。”Unknown error”としか知らされないので、わかってないと原因に気づきにくい。後者ではエラーは起こらないが音が出力されない)。しかし、Chromeブラウザは、スピーカーではなく、デフォルトの通信用オーディオ出力デバイスに現在設定している仮想オーディオデバイスに出力するようだ。たまたま現在の自分のVoiceMeeter内の設定で、それは最終的にスピーカーに出力されるようになっているので、結果的にスピーカから問題なく音が出る。オーディオ出力デバイスに出力できない場合、自動的に次善策としてデフォルトの通信用オーディオ出力デバイスを利用するのだろうか。Windowsのシステム・サウンドも同様に処理されている模様。

スピーカから音が聞こえる、という点ではこれでいいが、デフォルトの通信用オーディオ出力デバイスに繋がっているということは、Skype等通信アプリを使用中、ブラウザが音を出力するとそれが相手側にも聞かれてしまう。

広告

Windowsのオーディオシステムと紛らわしいVB-Audio Voicemeeterの用語」への2件のフィードバック

  1. ピンバック: WASAPIってようわからん | あくまで暫定措置としてのブログ
  2. ピンバック: Pt.1 Overview—Injecting Audio into Skype Calls And Recording Them Using VB-Audio Voicemeeter Banana | あくまで暫定措置としてのブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中