DiscordでDTM配信をする for Windows

はじめに

Discordのサーバーにはボイスチャンネル(=ボイスチャットを行うチャンネル)が存在し、またそこでは画面共有を使った配信が出来るとのこと。元々ゲーム配信用に設計されているのでゲームのキャプチャは楽々に出来るのだが、これをDTMのツールであるDAWを表示して作曲配信を行うのはコツがいるようで、その方法を整理してみた。

条件

  • 配信先はDiscordで行うことを目的とする
  • DAWの設定は極力変更しない
    • 配信をする度にDAW側の出力先変更するのは手間
    • 設定変えたまま作業を行い、トラブルの原因になるのを防ぐ
  • 使うオーディオデバイスは最小限しかない
    • マイクはない、勿論ヘッドセットもない
    • PC本体の内蔵オーディオデバイスは使っていない
    • DTM専用のUSBオーディオインターフェースはある
    • DTM専用のUSBオーディオインターフェースはモニタースピーカー/ヘッドホンへの出力のみに使っている
  • Loopbackが非対応のオーディオデバイスを使っている
  • LoopbackをするとASIOエラーが起きるオーディオデバイスを使っている

対象は、最低限の環境でDTMを行っているがDiscordでDTMの様子を配信したいと言う人に向けている。


必要な物

  • オーディオインターフェース、及びそのASIOドライバ
  • OBS-Studio
  • obs-asio plugin
  • VoiceMeeter Banana
  • DAW(今回のケースでは相談を受けたFL Studio 20で実施)

出来上がる配線図

結果的には、LoopbackをVoiceMeeterを使って実現する。
DiscordはOBSをキャプチャした際、プレビュー映像出力とモニタリングデバイスから出力されるモニター出力を自動的にキャプチャーする。音が出ないなどのトラブルが起きた場合は大体このモニタリングデバイスへの音声出力設定の場合が多い。

初期セットアップ

オーディオインターフェースとASIOドライバ

ASIOドライバは、オーディオインターフェースの付属、またはサポートから対応する最新版がダウンロード出来ると思われる。今回の検証では YAMAHA AG03 を利用したので、公式サポートよりASIOドライバをダウンロードし、インストールと動作確認を行った。

なお、ASIOドライバがなくても出来るとは思うので、細かい部分は割愛する。

OBS-Studio

今回使う配信ツール、要の1つ目。
最新版をインストールすれば問題ない。また、インストール後に必要なツール・ライブラリが足りないと指示された場合はその指示に従ってインストールを行えば良い。

https://obsproject.com/ja

OBSのインストール方法についての記事は大量にあるので、ここも割愛する。

obs-asio plugin

OBS-StudioでASIOドライバを使うためのプラグイン、要の2つ目。
OBS-Studioのインストール後に、以下のサイトより最新版をダウンロードする。

Github – Andersama / obs-asio release

上記のページ内の注意書きにも書いてあるが、https://www.un4seen.com/download.php?bassasio14 より64bit版の bassasio.dll のダウンロードと導入が必要。注意書きを適当に日本語訳すると以下の手順となる。

  1. https://www.un4seen.com/download.php?bassasio14 から bassasio14.zip をDL
  2. ZIPを解凍し、中のフォルダで x64 フォルダを見つける
  3. x64 フォルダの中に入っている bassasio.dll C:¥Program Files¥obs-studio¥obs-plugin¥64bit の中に入れる

間違えて32bit版(解凍フォルダ直下のヤツ)の bassasio.dll を入れてしまう、またはそもそも入れ忘れるとエラーダイアログが出現する。ダイアログ中でも「bassasio.dllが見つからないよ!ダウンロードしてx64版をOBSプラグインフォルダに入れてね!」と書かれている。

親切なダイアログだと思ったけれど、ビビる。

フォルダじゃなくて名前で分けて欲しかったと思う。

VoiceMeeter Banana

仮想オーディオインターフェース、要の3つ目。

https://vb-audio.com/Voicemeeter/banana.htm

オーディオインターフェースが1つしかない、チャンネル数が少ない(2in2out)の場合、ドライバが排他的処理のためDAW側にエラーを引き起こす場合がある。これを避けるため、オーディオルーティングを包括的に管理する仮想ミキサーの役割として導入する。

なお、VoiceMeeter Bananaはこの初期セットアップの中では最後に行うこと。
インストール時にドライバ認識のため再起動を促されるため、設定やデータを保存していないと悲惨なことになる。くれぐれも注意すること。

セッティング

使っているDAWの確認

今回は相談を受けたFL Studioを中心に説明する。

FL Studioのオーディオ設定は OPTIONS Audio SettingsInput/Output で確認出来る。初期状態まま設定していない場合、デバイスが「プライマリー サウンド ドライバー」になっていると思われる。

これを「FL Studio ASIO」に変更する。

ASIOドライバを使うけど、音声はWindows標準を指定

「FL Studio ASIO」に変更後 Show ASIO Panel でASIOドライバの設定を確認する。標準設定であれば全て Default〜 となっている。これはWindowsの既定入出力デバイスを指定している状態なので、Windows側で使用するオーディオデバイスを変更すればそれに従う形となる。

以上でDAW側のオーディオ設定は終了。

Windowsの既定オーディオデバイスを変更

コントロールパネルよりWindowsの既定オーディオデバイスを以下に変更する。
変更の仕方は、それぞれを選択した状態で [既定値に設定]ボタン をクリックすれば良い。

[再生]タブでVoiceMeeter Input (VB-Audio VoiceMeeter VAIO)に設定

[録音]タブでVoiceMeeter Output (VB-Audio VoiceMeeter VAIO)に設定

この設定により、Windowsの音声全てがVoiceMeeterを介して管理する事が可能となる。

VoiceMeeter Bananaの設定

VoceMeeter上でLoopbackをさせるため、細かい説明を抜きにした必要最低限の手順。

  1. VoiceMeeter Bananaを起動
  2. 左から並ぶ Hardware Input 1〜3 は設定しない、そのままにしておく
  3. 画面右上の Hardware OutA1 に、使用中のオーディオインターフェースを指定
  4. Virtual InputsVoicemeeter VAIO 列にある A1B1 をクリックして点灯状態(=ON)にする

(3)のオーディオインターフェース選択は、可能であればインターフェースのASIOドライバを選択する事を推奨する。ない場合はオーディオインターフェースを指定する。

これでLoopbackが完成。

補足

VoiceMeeterがWindowsの音声を全て管理する形になっているので、常駐アプリとして登録設定を行っておくと良い。設定した環境を記憶して起動するので、再設定の手間は省ける。

  1. VoiceMeeter Bananaを起動
  2. 画面左上の Menu をクリック
  3. 出てきたサブメニューで以下の項目をクリックしてチェックを入れる
    • System Tray
    • Run on Windows Startup

OBS-Studioの設定

ここは細かい手順が多い。
設定画面は、画面右下の [設定]ボタン を押すか、画面左上の ファイル設定を押せば出現する。

画面解像度の設定

主に負荷対策として設定する。
Discordの配信画面は初期値は 1280x720 なので、それに合わせた設定にすることを推奨。

  1. 映像基本キャンバス解像度1280x720にする
  2. 映像出力解像度 1280x720 にする

音声の設定

画面の基本設定が終わったら、同じ設定画面内の 音声 より音声周りの設定を行う。

  1. グローバル音声デバイス を全て「無効」にする
  2. 詳細設定モニタリングデバイスVoiceMeeter Aux Input に変更

モニタリングデバイスはOBS-Studioが入力された音声全てをモニタリングする為に必要な設定項目。VoiceMeeter Aux Input にはデバイスとして存在はしており、かつ出力先として利用できるが、そのデバイスから先は未接続であるため、デスクトップ上では音が出てこない。

ここまで設定が終わった所で、OBS-Studioの設定画面を [OK]ボタン を押して閉じる。

ソースの追加

OBS-Studioから配信で使う映像・音声を追加していく。

  1. ソース内で右クリック → 追加 → 画面キャプチャ を追加
    1. DAWで使うメインモニタを選択
    2. カーソルをキャプチャ にチェックを入れる
    3. OKを押して追加後、キャプチャ範囲が画面外にはみ出るので 画面キャプチャ を右クリック → 変換画面に合わせる を選択して画面サイズに収める
  2. ソース内で右クリック → 追加 → ASIO Input 追加
    • Device: FL Studio ASIO
    • OBS Channel 1: FL Studio ASIO 0 in 1
    • OBS Channel 2: FL Studio ASIO 1 in 2
    • Sample Rate: 48000Hz
    • Bit depth: 32bit float (native)
    • Buffer: 256

今回はASIOでキャプチャをする設定をしたが、ASIOに拘らなくてもキャプチャはできる。それについては後述の補足事項を見て頂きたい。

オーディオのモニター設定

先述した通り、DiscordはOBS-Studioのモニタリングデバイスから出力される音声をキャプチャする。しかしOBS-Studioのデフォルト設定ではモニタリングデバイスからの出力はOFFになっているので、これをONに切り替える。

  1. 音量ミキサーに出現した ASIO input を右クリックして オーディオの詳細プロパティ を選択
  2. 音声モニタリングモニターと出力 に設定

これでOBS-Studioに入力された音声がモニタリングデバイス経由で出力されるので、Discord側が音声キャプチャ出来るようになる。結構ここで引っかかる人が多い。

Discordの音声設定

音声・ビデオチャット用の音声設定。
通知音などはWindowsの既定デバイスから再生されるので影響はない。

  1. 左下の 歯車マーク(ユーザー設定)音声・ビデオ を開く
  2. 入出力デバイスを以下に設定する
    • 入力デバイス: VoiceMeeter Aux Output
    • 出力デバイス: VoiceMeeter Aux Input

先述した通り、VoiceMeeter Aux Output/Input にはその先の入出力デバイスが設定されていないため、表面上に音は出ない。

動作確認

ここまでで配信の準備は整ったので、DAW側でプロジェクトを再生し、音がOBS-Studioで設定した ASIO input に入力されているされているかをインジケーターの動きで判断する。
音が乱れていないかを確認をしたい場合は、VoiceMeeter Banana側で以下の設定をする。

  1. Voicemeeter VAIOA1 をOFFにする
  2. Voicemeeter AUXA1 をONにする

先述したモニタリングデバイスの出力先は VoiceMeeter AUX Input を指定しているため、出力先を自分のオーディオインターフェースにすると音を聞く事が出来る。但し、Voicemeeter VAIO (VoiceMeeter Output) と同時に聞くと、AUX側が若干遅れているためディレイが掛かった音になって非常に苦痛なのでお勧めしない。

Discordで配信を行う

インストール・設定をしたアプリケーションが全て閉じている状態であれば、以下の順序で起動を行う。

  1. VoiceMeeter Bananaを起動
  2. DAWを起動
  3. Discordを起動
  4. OBS-Studioを起動

次に、Discordで配信を行う為、いつも使っているサーバーのボイスチャンネルに入る。

  1. Discordでサーバーを選択
  2. ボイスチャンネルに入る
  3. 念のためマイクをミュートにする(画面左下のマイクアイコンをクリック)
  4. [画面ボタン]を押してOBS-Studioを選択
  5. ボイスチャンネルに参加している自分のアイコンの右隣に ライブ と表示されれば完了

DiscordがOBS-Studioを認識し、OBS-Studioのプレビュー画面を配信画面として自動的に設定してくれる。なので、OBS-Studioで [配信ボタン] をクリックする必要は無い。

補足事項

注意!画面を共有しているので全てが映る

OBS-Studioのソースで 画面キャプチャ を選んでいるため、指定した画面=ディスプレイのデスクトップが全て映る。うっかり機密情報などを表示しよう物なら大惨事になるので、くれぐれも表示するアプリ・内容には注意すること。

ASIOドライバが無い場合は「音声入力キャプチャ」で代用可能

今回のケースではobs-asioプラグインを用いているが、VoiceMeeter BananaによるLoopbackは出来上がっているので、OBS-Studio内蔵の 音声入力キャプチャ を用いても同じことは出来る。音声入力キャプチャ を選択した場合はキャプチャ対象となるオーディオデバイスを VoiceMeeter Output にすれば良い。

OBS-Studioのモニタリングデバイス設定はVoiceMeeterじゃなくてもOK

Discordは選択した画面・アプリケーションから出力される音声をキャプチャする。OBSの場合は モニタリングデバイスVoicemeeter AUX Input に指定している為、表面上では音声は出力されていないが、内部的に出力はされている状態となるのでキャプチャが可能となる。

つまり、使っていないオーディオデバイスを モニタリングデバイス に指定すれば良い話。今回は Voicemeeter AUX Input を利用したが、内蔵のオーディオデバイスに適当なイヤホンを接続してデバイスを有効化させ、そのデバイスをOBS-Studioの モニタリングデバイス に指定すれば解決する。

この設定のままTwitchやYoutube Liveなどへの配信、ローカルへの録画も可能

詳細は省くが、TwitchやYoutube Liveなどのストリーミングサービスへの配信設定をOBS-Studioに行えば、この画面と音声設定でそのままウェブ配信も出来る。Discord以外で配信をしたい場合は配信先への諸設定を行った上で [配信開始]ボタン をクリックすれば配信される。配信内容は トランジションボタン をクリックして プレビュー画面 の内容が 番組 に映ればOK。

「配信はしないが録画はしたい」と言う場合は配信と同じ手順だが、クリックするボタンが [録画開始]ボタン になる。


以上がOBS-Studioを使ったDiscord上でのDTM配信を行うための設定である。
自分はDTMをまだやった事がないのだけれども、最低限のオーディオルーティング程度であればVoiceMeeterで事足りる。とは言え…VoiceMeeterのルーティングはクセが強いので、パッと理解できるかと言われたらそうでもないと思う。

それなりのチャンネル数を持ったオーディオインターフェースを買ってLoopbackをするのが一番ベストなのかもしれない。金額もそれなりになるから遠い夢の話になってしまうのだろうけれども。