見出し画像

VoiceMeeterとCantabileでオサレな疑似ラジオ環境を作る

ほら、BGM流しながらオンライン会議したいじゃないですか。


というわけで、以下のような疑似ラジオ環境を作りました。

- OS: Windows10 Pro x64 ※Homeでも良いはず
- 仮想ミキサー: VoiceMeeter 3 (Potato) ※解説は2 Bananaでします
- VSTホスト: Cantabile 3 Lite
- 配信: 何でもいけますが今回はDiscordを例に挙げます

疑似ラジオとしてのゴールは 色んな人が話せる & BGMを流せる にします。

僕自身、オンライン上の勉強会でBGMを流しながら発表したことがあります。当時はVoiceMeeter Bananaだけで頑張っていましたが、本稿はそれの発展版です。


解決したい問題

Discordの説明は省略しますが、既に色んな人が話せるので問題ないと思います。話したいときだけマイクをオンにできますし、なんなら入退室も自由にできます。凄く……カフェです。

あとは本稿の要でもあるBGMです。流すだけなら小細工は不要ですが、マイクやスピーカーの音量ズレが問題になります。
これはまさに僕の環境で起きた問題で、以下のつらみがあります。

- マイクが拾う音量、小さい
- 僕のボイスの音量、小さい
- アプリから流れるBGMの音量がクソデカ (マイクの声がかき消される)

実は、マイク側の音を大きくする部分はWindows標準の設定だと限界があります。もう大声出すしか手がないです。

BGMの音量はアプリの音量を限界まで下げれば良いという話ではありますが、今度は通話相手の声に対してBGMが小さくなりすぎて自分が流しているBGMを自分が聴けないんですよね。

 Discordにmusic再生botを導入しろという話でもありますが、bot操作権限や音量調整の手軽さなどを考えるとチョットつらみがあります。

これらの問題を解決するために、やりたいことの概観はこうです。

画像1

- マイクは超ブーストして相手に送る
- BGMは一方では超減衰して相手に送り、他方ではチョット減衰して自分に送る
- 相手からの音は、そのまま自分に送る (コンプレッサはお好み)

こんな感じです。


まず、オーディオデバイスの概要

オーディオデバイスを色々頑張るために、いわゆるPC内のオーディオデバイスと物理的なマイク・ヘッドフォンの雑な関係を把握しておきます。

画像2

PCに外部デバイス (マイクやヘッドフォン)を繋ぎますよね
これはPC内の物理的なオーディオデバイス (表示名はマイクやスピーカー)に接続しています。基本的に1個か2個だと思います。オンボードとかサウンドカードの話はしません。

PC内でアプリから音楽を流しますよね。この音はPC内のオーディオデバイス「スピーカー」を通して外部デバイス「ヘッドフォン」に送り込まれます。なので音楽を聴けます。

逆にマイクで話したりもしますよね。これは外部デバイス「マイク」から送り込まれた音声がPC内のオーディオデバイス「マイク」に流され、インターネットを介して相手に送信されています。

オーディオデバイスは inputoutput の2種類の口を持っています。たとえばアプリから流された音楽がスピーカーのinputに入り、outputから出てきてヘッドフォンに送り込まれる、というイメージです。

これから紹介する方法では、PC内に仮想的なオーディオデバイスを作り出し、inputとoutputを繋ぎ変えます。イメージとしてはこうです。

画像3

マイク音声の流し先は「マイク」だけです。
その「マイク」のoutputから出てくる音声の向き先を、作り出した仮想オーディオデバイスのinputに繋ぎ変えます。

ふつうはマイクのoutputから出た音声の向き先が、直接Discordなどへの入力となります。規定の入出力設定を弄ることがないので、普段は意識しない部分です

繋ぎ変えた先で様々な音声処理を施し、最終的に仮想デバイスのoutputから出た音声の向き先を、改めてDiscordなど通信アプリの入力とします。


VoiceMeeterとCantabileによる全体構成

VoiceMeeter BananaCantabile Liteを使って、最初に述べた問題を解決します。概観イメージはこうです。

画像13

要点は以下です。

- VoiceMeeterを経由し、仮想デバイスでマイクやBGMの入力を受け取る
- VoiceMeeterのPatch Insert機能を経由し、Cantabile Liteで入力を奪い取る
- Cantabile LiteでVSTプラグインによる音声処理を施し、VoiceMeeterの入力に戻す
- VoiceMeeterによって、仮想デバイスからの音声出力を振り分ける
- Discordなどアプリ側の設定で、入出力に使うデバイスを合わせる (今回はDiscordへの入力をAUX output、Discordからの出力をAUX inputとする)

簡単とは言いませんが、やり方さえわかってしまえば作業可能な操作です。

以下から、VoiceMeeterとCantabileそれぞれの詳細を解説します。


仮想ミキサー VoiceMeeter (Banana / Potato)

先に注意事項ですが、VoiceMeeterが起動している間はPC側のデバイス「スピーカー」をVoiceMeeterが奪い取っているのでデフォルトでは音が聞こえません

VoiceMeeterのいずれかの仮想デバイスに音を流し込んで、その出力先をスピーカーに設定することで聞こえるようになります。
(PC側でも、規定のデバイスをスピーカーにします)

下の解説でも、それらの設定を出します。

VoiceMeeterには無印 (1.x)・Banana (2.x)・Potato (3.x)の順に3バージョンがあります。PotatoはBananaの上位互換なのでおすすめですが、仮想デバイスが多すぎて認知的負荷が高いので、今回はBananaで解説します。

まずVoiceMeeter 2.x Banana ではなく VoiceMeeter 3.x Potatoをインストールします。実は2.x Bananaも一緒に入るので、インストールしたらBananaのほうを起動します。(どうしても3.xをインストールしたくない場合は、VoiceMeeter 2.x Banana までをインストールすることもできます)

インストール後、PCの再起動が必要です。アプリを開くとこんな感じです。

画像5

Hardware Inputはなんとなくわかると思いますが、VAIOとAUXってどっちが何者だよと思うかもしれません。気になる方は↓のポエムをどうぞ。

 これは勘なので見なかったことにしてほしいんですが、どっちもVAIOという名前の仮想デバイスだと思います。Potatoには新たな仮想デバイスとしてVAIO 3という名前が加わるんですが、つまりVAIO1, VAIO2, VAIO3みたいな扱いです。AUXという呼び方はオーディオ界隈で "Auxiliary" (補助、予備)として知られているようです。
 また一方で、AUXデバイスは外部機器との接続に用いるという慣例もあるそうです。嘘をついているかもしれないので本気にしないでほしいんですが、本稿ではこれらの嘘かもしれない慣例に則って AUX = 外部との境界 とみなし、AUX input / outputをDiscordなどのアプリに対する入出力デバイスとして用います。

ひとまず、仮想デバイスのルーティング設定をしていきます。


1. まず画面右上の A1 をクリックして、出力先をデバイス「スピーカー」に設定します。


2. 次に、Hardware Input 1 をクリックして、デバイス「マイク」を設定します。PCによって「Front mic」とか色々ありますが、マイクっぽいデバイス名があるはずです。
このときオーディオドライバとしてWDMMMEの2種類 (あるいはもっと)あると思いますが、Windows10ではWDMのほうを選択します。ただし、もしASIOがあればそっちのほうが良さそうです。

Hardware Input 1 の下には、 A1, A2, A3, B1, B2 のようなボタンが並んでいます。これは出力先の一覧です。ボタンが光っているところに音が流し込まれます。

 A1, A2, A3は、PC側のデバイスを選択できます。B1, B2は何かというと、VoiceMeeterの仮想デバイスであるVAIOとAUXのoutputです。 (VAIOとAUXのinputはBanana画面の真ん中あたりに表示されているので、まるで別のデバイスみたいでわかりにくいですが)

たとえば、この時点でA1を光らせた場合、input 1 つまりマイクから拾った声がA1に送り込まれ、スピーカーから聞けます。
(現時点では喋ったそばから聞こえてしまうので、スピーカーから音が出ている実感はないかもしれません)

今回マイクからの音は相手に送りたいので、ここではHardware Input 1 の出力先をB2 (AUX output)にします


3. さらに、Hardware Input 3 は B2 (AUX output)だけを光らせます。ここにBGMを流し込んで、音量を下げてからB2経由で相手に送ります。なので、ここで音量バーも下げます。そのままだと -40dB くらいが丁度良かったですが、それぞれお好みです。


4. そして、VIRTUAL INPUTSのうち VoiceMeeter AUX (これがAUX inputです)はA1 (スピーカー)だけを光らせておきます。Discordから送られてくる音声をA1つまりスピーカーに流し込むためです。


5. 最後に、Patch Insertを有効化します。画面右上の Menu から System settings / Options... を選択し、ウィンドウ下部の PATCH INSERT を変えます。

画像7

画像の光っているinputが有効です。クリックで切り替えられます。

今回はひとまず、以下を有効にすればOKです。

- in1 Left & Right <= これが先程のHardware Input 1
- in2 Left & Right
- in3 Left & Right
- in4 Left & Right <=  これが先程のVAIO input
- in5 Left & Right <= これが先程のAUX input

Virtual Inputs (VAIO / AUX)は、inputの種類が多いので見分けやすいです。

Virtual Inputsのinputのうち、Leftが左耳でRightが右耳なのはわかりやすいと思いますが、では他のinputが何者なのかというと、おそらくマルチチャンネルコンフィギュレーションの項目と対応しています (たぶん)。
7.1chが、ちょうどPatch Insertと同じですね (C: Center, LFE: Low Frequency Effects, SL: Surround Left, SR: Surround Right, BL: Back Left, BR: Back Right)

上記のinputを光らせ、Patch Insertが有効になりました。Patch Insertが有効なinputは、入力の間に別の音声処理を差し込むことができます。つまり冒頭に述べたように 入力をVSTホストで奪い取ってVSTプラグインで処理してから何事もなかったかのようにしれっと戻す ことができます。


VSTホスト Cantabile Lite

CantabileはVSTホストの1つです。VSTによる音声処理をGUI上で操作できます。

1. まずCantabile Liteをインストールします。本稿の執筆時点ではCantabile 3が最新版で、これは64bit版 (x64)と32bit版 (x86)がセットでインストールされます。今回は64bit版を使います

アプリを立ち上げたら、以下の手順を踏んでこの画像のような状態になることを目指します。

画像6


2. 次にVSTプラグインをインストールします。実際に音声処理を行うためのプラグインです。インストール場所は任意ですが、たとえば C:\Program Files\VstPlugins ディレクトリにインストールするのが良いと思います。

今回はReaPlugsCharBoosterをインストールします。そして以下のプラグインを使います。

reacomp-standalone: コンプレッサ ※大きすぎる音量を抑えたりする
reafir-standalone: ノイズ除去フィルタ ※一定音量以下の音をカットする
readelay-standalone: 遅延 ※マイクで自分の声を確認するためなので任意
AXP CharBooster: 音量増幅 ※音を大きくする

これらのプラグインは (確かほとんど全部が)64bitプラグインです。Cantabile x86では使えないことにご注意ください。同様に、32bitプラグインであるKeroVeeRoVeeもCantabile x64では使えません。x64で32bitプラグインを動作させるためには、jBridgeなどを購入する必要があります。


3. そしてCantabileの設定をします。 Tools タブから Options... を開きます。

Audio Engine タブでは、Audio Driverを ASIO - Voicemeeter Banana (もしくは Potato) Insert Virtual ASIO にします。先程のPatch Insertです。

画像8

Audio Ports タブでは、先程Patch Insertを有効にした各種inputを登録していきます。下部の Add => Stereo Input Port または Stereo Output Port から新規追加できます。

画像9

上の画像だけBananaではなくPotatoの例になっています。すみません。Bananaでは in: in4 がVAIOで、 in: in5 がAUXですね。

nameはこのように、どれがVAIOなのか、どれがAUXなのかがわかりやすくしておくと良いと思います。いずれのinput / outputも、対応するLeftとRightを割り当てます。

 ちなみにinputやoutputと表示されますが、VoiceMeeterのinputを奪い取って戻しているので、どちらかというと input-input / input-output のイメージが近いと思います。Cantabile側としては、inputを奪い取ってくるほうの意味でinput、再びinputに戻すほうの意味でoutputです。紛らわしいですね。

Plugin Options タブでは、先程インストールしたVSTプラグインのディレクトリを指定します。

画像10

画像に出ているディレクトリ名がVstでなくVSTなのは、当時まだVst命名のほうが一般的だと知らなかったからです。。。。。

あとは設定ウィンドウを閉じて、 Tools タブから Scan Plugin Folders (Full) でプラグイン探索してくれます。Input PortsやOutput Portsも先程設定した項目が表示されていると思います。


ここで注意ですが、Cantabileを起動している間はPatch Insert有効なinputから音声を奪い取っているので、Cantabile上でinputとoutputを繋いであげないとVoiceMeeter側に音が戻ってきません (入力が奪われたまま闇に消える😇)

なので、一応同じ番号のinputとoutputは繋いでおくと無難です。片方をクリックしたままスッともう片方へドラッグすれば繋がります。

VSTプラグインを差し込むためには、画面内の適当な場所で右クリックから Insert Plugin... です。最初に出したこの画像のような状態になれば完成です。あとは各種プラグインの設定をすることで音声処理を行えます (初期設定のままでは、ほぼ何の処理もしていない)。

画像11

もうお気づきかもしれませんが、この画像のinputもPotatoの例なのでinputがずれています (すみません)。
Bananaであれば in4 がVAIO in5 がAUXですね。VAIOからはin3に繋ぎます。


さて、これでVoiceMeeter BananaとCantabileについては、最初に出したこの画像のような状態となりました。BGMはお好きなアプリから、出力先をVAIO inputに向ければ良いです。入出力の切り替えは、各アプリの設定Windows設定 => システム => サウンド から行えます。

画像13


Discord側の入出力設定

Discordでも入出力デバイスを調整します。個人設定の 音声・ビデオ タブから、入力デバイスを VoiceMeeter Aux Output に、出力デバイスを VoiceMeeter Aux Input にします。

画像13


これで完了です。疑似ラジオ環境をエンジョイしましょう🎉

音量調節の細かい話やミュートなどの話は載せていませんが、アプリの画面を見ているとなんとなくできてしまうと思います。


おわりに

- 皆が話せてBGMも流せる疑似ラジオ環境を作った
- 他の音声処理を入れたくなったら、VSTプラグインですぐに差し込める環境になった
- 音の入出力をルーティング機能で自在に操れる環境になった

なんか全体の文字数が7000を超えて研究報告も冷や汗の物量になっていた

この記事が気に入ったらサポートをしてみませんか?