12/21 記事の内容を大幅に修正しました.
01/13 音声伝送周りを修正しました
01/23 未検証だった部分と文章がおかしい部分を一部修正しました
第二弾です
注意:当記事で紹介した方法がAniCloverさんの記事と同じような構成になっていました.
AniCloverさんの記事のほうがより詳細に書かれているのでそちらも是非…
https://github.com/aniclover/remote-dj-b2b
前回は,MIDI信号をホストPCに転送するだけだったので,MIDIの再アサインが必要でした.
単純に面倒くさいのでこの方法は現実的ではありません,他の方法を使うしかない.
USBに刺さったデバイスをそのまま転送することができれば便利だと思い,色々探したところ,

ありました
じゃあ,やろう
イメージ図

DEMO
ホスト側:Haru(香川県)
クライアント側:Napp(大阪府)
上の場合,だいたいこんな感じです.距離によって遅延が大きくなるのかもしれないですが,未検証なのでよくわかりません.
VIrtualDJだといきなり数値が変わることがないので良い
必要なもの
ハードウェアとか
- そこそこの性能を持ったPC(ホスト側)
- そこそこの速度と安定性のある回線
- DJコントローラ
- 4ch(Masterの2chとCueの2ch)出力に対応したオーディオインターフェース(クライアント側のみ必須)
ホスト側で入れるソフトウェアとか
- VB-Audio VoiceMeeter Banana
- ZeroTier
- VirtualHere Client
- DJコンを複数台認識できるDJソフト(現状はVirtualDJだけ?)
- Parsecなどの画面共有ツール
クライアント側で入れるソフトウェアとか
- VB-Audio VoiceMeeter Banana
- ZeroTier
- VirtualHere Server
- Parsecなどの画面共有ツール
入れるソフトの簡単な説明
VB-Audio VoiceMeeter Banana
DJ間の音声伝達で使います.
DJソフトの出力をこれに渡して,それをDJコントローラに流し込むような設定にします
VirtualHere
USBをネットワーク経由で転送するツールです.
ServerはそのPCのデバイスをネットワーク内に配信,ClientはサーバのUSBから使うものを選ぶ事ができます.
ZeroTier
P2PのVPNです.
VB-Audio VoiceMeeter BananaやVirtualHereが使用します.
Parsecなどの画面共有ツール
DJが選曲するときに使います.
マスターの音声をParsecで出すこともできます.
リモートデスクトップツールなど,遅延が少ないものなら何でもOK
インストール
割愛.ガイドに従ってやってください
ホスト側の人がやること
- DJソフトの音声出力先変更
- ZeroTierのアカウント作成→ネットワーク作成
- Voicemeeter Bananaの設定
- VirtualHere Clientでクライアントのコントローラと接続
1.DJソフトの音声出力先変更(VirtualDJの場合)

画面右上のSETTINGSから設定画面を開く

オーディオ設定に入り,マスターの出力をVoiceMeeter Virtual ASIOの1,2chに
ヘッドホンをVoiceMeeter Virtual ASIOの3,4chに設定
そして,ヘッドホンをVoiceMeeter AUX VAIOの1,2chに設定
配信に載せるなどのその他の設定はそちらの環境に合わせてお願いします.
2. ZeroTierのアカウント作成→ネットワーク作成
ここにとりあえずGoogleアカウントでログインすればOKです

Create A Networkをクリックし,ネットワークを作成
作成したら下にIDと名前が出てくるのでそのIDをクリック
下の画面に変わる

とくになにも設定しなくてOKだったはずです
プライベートに設定した場合,
未認証のPCを接続した際にWeb画面からAuthのチェックを入れないとIPアドレスが振られません.
MembersをクリックしてAuthにチェックを入れてください
DLしたクライアントにIDを入力し接続すると,

この画面が出てくることがあるので,はいを選択
これで接続完了
3. Voicemeeter Bananaの設定変更
入力側は特にいじらなくてOK
DJソフトで音声を再生したときにメータが振れていたら,それの出力をとりあえずA1とB1に出すようにする

デスクトップ音声に流す場合,WDMを選ぶとVoiceMeeterが専有し,他のアプリケーションの音声が流れなくなります.MMEを選択すると,遅延は増えるものの,この問題は解消します.
DJコントローラに流すなら,WDM: DJコントローラとなっている物を選ぶと,そこにマスターとCUEの音が流れます.
そして,Voicemeeter AUXの音声をB2に出力します


VBANをクリックし,下の画面を出す.
Vbanをオンにして,Outgoing StreamのどれかをONにする.
ここで,CH数は4CHにしておくこと
VBANをクリックし,以下の画面を出す.

Outgoing StreamとIncoming StreamのStream Nameは対応しています.ここでは,Stream1にマスターを流し,Stream2にCUE音声を流します.
IP Address To:には受信側のIPを入れる.(ZeroTierに接続してから実行すること)

最終的にこうするとOK
送信されているのにクライアント側でストリームが来ない場合

送信側のStream Nameと受信側のStream Nameは同一である必要があります.
確認してください
4. VirtualHere Clientでクライアントのコントローラと接続
VirtualHere Clientの初回起動時はドライバのインストールが走ります.
待たされることもあるので気長に待ちましょう
ウィンドウが消えてしまうこともありますが,通知領域に常駐しているので,そこから開いてやってください

サーバ機に接続できたら,そこにつながっている機器が出てきます.
たぶん自動的に接続してくれます
DJコントローラを右クリック→Use this DeviceでクライアントPCに接続されます.


DJソフトにも認識されます.接続できないエラーが出た場合,サーバ側のPCでそのデバイスを抜き差ししてみてください
それでも改善しないようなら,VirtualHereが多重起動している可能性があります.taskmgrあたりで両方キルしてください
ホスト側の準備作業は以上です
クライアント側の人がやること
- ZeroTierでVPNに接続
- Voicemeeter Bananaの設定
- VirtualHere ServerでDJコントローラをネットワークで参照できるようにする
1. ZeroTierでVPNに接続
とくになにも設定しなくてOKだったはずです
DLしたクライアントにIDを入力し接続

この画面が出てくることがあるので,はいを選択
これで接続完了
2.Voicemeeter Bananaの設定
画面右上のVBANをクリックし,以下のウィンドウを出します

Incoming Streamsの設定をいじります
サーバ側のVPN内でのIPを教えてもらい,そこに入力.
また,どのストリームがマスターなのかCUEなのかを確認してください
入力先は重複していなければどこでも構いません
Onにする→左上のボタンからVBANをオンにする

IPの右が緑に光ればOK
入力先に指定したチャンネル(Virtual input1ならVirtual Inの左側)のメータが振れているか確認

それを任意の出力先に指定する
オーディオインターフェースなど,出力先が複数あると,マスターとCUEを別デバイスに流すことができます.
なお,DJコントローラはホスト側に専有されているため,使用できません

WDMはそのデバイスを専有します.同時にボイスチャットなどする場合,MMEデバイスを洗濯してください.

infoのランプが光らない場合
ファイアーウォールで破棄されている可能性があります.一時的に無効にしてください
ストリームが検知されているのに来ない場合

Stream Nameは一致していますか?
3. VirtualHere ServerでDJコントローラをネットワークで参照できるようにする
VirtualHere Serverを落とし開きます.
ファイアウォールからの警告が出ることがあるので,プライベートネットワークにチェックを入れ,アクセスを許可するようにしてください


このような表示になっていればOK
クライアントの準備は以上です
音源について
基本ホスト側の音源しか使えません.
VirtualHereの無料版ではUSBメモリなどを転送することは出来ないようなので,ライセンスを別途買う必要があります.
注意事項
VirtualDJが応答しなくなる

VirtualHereを使ってMIDIコンを接続した場合,VirtualDJは応答しなくなりますが,MIDIコンの操作は問題なく受け付けます.
応答なしのときはマウス操作を基本的に受け付けてくれません
性能によりますが,曲のロードも遅くなります.
遠隔で接続している側のMIDIコンが切断されると,MIDIコンの操作は受け付けますが,完全に応答しなくなり,次の曲も読み込めなくなります.その場合は強制終了してください
おわりに
この双方の準備が終わったらB2Bができます.
オンラインB2B配信をする上でWebカメラをネットワークで共有する必要がありますが,そのへんはまた別の記事で.