Rekordbox DJでオンラインB2Bを実現する

離れたところにいるDJ同士でB2Bをすることができます.
Rekordbox内のライブラリ・エクスポート済のUSBメモリを使用することができるため,Virtual DJでの手法より手軽に始めることができます.

※この記事は,DJ&VJ Advent Calendar 2021 18日目の記事です.

オンラインB2Bのメリット

この手法を用いると,理論上はDJ同士がどこにいてもB2Bができるので,

  • VRDJ等,顔合わせの難しい環境でのハイクオリティなB2Bパフォーマンス
  • 簡単なB2Bの事前打ち合わせ
  • B2Bの練習

を実現することが可能です.

オンラインB2Bのデメリット

安定性の高いネットワーク,オーディオ等の知識,事前仕込みが必要になるため

導入の敷居がかなり高いです.

B2Bやろうぜ!のノリで構築開始するには向いていません.

構造

1つのPCに両方のDDJ-400のMIDI信号を集約して,1つのDJコントローラとして認識させる手法です.
ホスト側にDJコントローラを接続するとなぜかうまく行かないのでPCを分けています.

Demo

デモ機の動作環境

GCPで適当に立てました.余ってるPCがなかったので…

  • OS: Windows Server 2019 Datacenter
  • CPU: Intel Xeon(R)(詳細不明)
  • RAM: 16GB
  • Graphics: NVIDIA Tesla T4(詳細不明)
  • DJ Software: Pioneer Rekordbox Ver.5.8.6
  • DJ Controller: Pioneer DJ DDJ-400 ×2

前提条件

  • VDSL以上の安定したインターネットアクセス
  • それなりの性能を持ったWindows 10がインストールされたPC

必要なソフトウェア

共通(ホスト1,参加)

ホスト1側

ホスト2側

  • rtpMIDI
  • VoiceMeeter Banana

参加側

各ソフトウェアの役割

VoiceMeeter Banana

仮想ミキサー.
DJソフトの音声をネットワーク経由で伝送するために使用します.

rtpMIDI

MIDI信号をネットワーク経由で伝送するソフトウェア.
DJコントローラのMIDI信号をネットワーク経由で伝送するために使用します.

Parsec

リモートデスクトップツール.
画面共有で使用します.

ZeroTier One

VPNソフト.
VoiceMeeter BananaやrtpMIDI,VirtualHere等のプライベートネットワーク用ソフトウェアを動作させるために使用します.

VirtualHere

USBメモリをネットワーク経由で参照できるソフトウェア.
USBメモリを使用しない場合は不要です.

各ツールのインストール

割愛します.
VoiceMeeter Bananaはインストール後,再起動する必要があります.

手順

括弧内のPCで操作してください.

ホスト1:DJソフトが入ってる
ホスト2:DJコントローラが接続されています(LAN内)
参加:DJコントローラが接続されています(LAN外)

1. ZeroTier OneでVPNを作成する(ホスト)

ZeroTierのページ内 BUILD YOUR NETWORKをクリックし,アカウント作成・ログインをします.
ログイン後,画面上部のCreate A Networkをクリックし,ネットワークを作成します.

Nameを分かりやすい名前に変更します.

2. VPNに接続する(ホスト1,ホスト2,参加)

1で作成したネットワークのNetwork IDをZeroTier One(クライアント)に入力してください.
ホスト2側が同一ネットワーク上にいるのであれば,ホスト2ではやらなくていいです.
通知領域→ZeroTier One→Open Control Panelで設定画面を出します.画面下部のテキストボックスにNetwork IDを入力し,Join networkをクリックしてください

ホスト側はZeroTier One(Web)に戻り,Membersの(Short-name)に名前を割り当ててください.接続人数が増えたらどれがどれなのかわからなくなります.

Access ControlをPrivateに設定しているときは,Auth?のチェックボックスにチェックを入れてください.その後接続が完了します.

管理がめんどくさくなるので,ネットワーク周りの知識がある人は各PCにStaticなIPを適当に振ってあげてもいいかもしれません.

Windowsからプライベートネットワークとして扱うか出てくるので,”はい”を選択します.

3. 音声出力先の変更(ホスト1)

設定からオーディオデバイス VoiceMeeter Virtual ASIO を選択してください.

4.1. VoiceMeeter Bananaの設定1(ホスト2,参加)

HARDWARE OUTのA1をクリックし,WDM: hoge (DDJ-400)を選択します.
ホスト1側ではVoiceMeeter VAIOの出力先をA1,B1,B2に変更してください.
ホスト側はRekordboxで音声を再生したときにVoiceMeeter VAIOのメータが振れるか確認してください.

4.2. VoiceMeeter Bananaの設定2(ホスト1)

右上のVBANをクリックし,VBAN設定画面を出します.

画面下部のOutgoing Streamsを設定します.

ここでは,Stream1を参加側,Stream2をホスト2側とします.
SourceをBUS B1に,Chを4に設定します.
SamplerRateは,音が途切れる場合に下げてください.下げるとその分音質が低下します.
Stream Nameは,参加側とホスト側で一致する必要があります.

Stream1のIP Address Toに参加PC(ZeroTier One),Stream2にホスト2のIPアドレスを入力してください.
設定した場所の左端にあるOnボタンをクリックします.

設定完了後,左上のVBAN is OFFをクリックします.

参加側に以下を通知してください.

  • ホストPCのIPアドレス
  • Stream Name

4.3. VoiceMeeter Bananaの設定2(ホスト2,参加)

注:ホスト側の設定が完了してから設定してください.

画面上部のIncoming Streamsを設定します.
まずはじめに,左上のVBAN is OFFをクリックしVBANをオンにします.Incoming Streamsに 1 Streams Detectedが表示されているか確認してください.

-None-と表示されている場合は,末尾のQ&Aセクションを参照してください.

Stream Nameにホスト側と同じStreamNameを,IP Address Fromにホスト側のIPアドレスを入力します.

DestinationをVirtual In #1に設定します.

設定した場所の左端にあるOnボタンをクリックし,IPアドレスを入力したテキストボックスに緑のバーが出てきたら接続成功です.

5.1. rtpMIDIの設定(ホスト2,参加)

My Sessionsの+ボタンを押し,Local nameとBonjour Nameを自由に設定します.
ex.)DDJ-400(Sanka)
ex.)DDJ-400(Host)

右下にあるLive Routingsを,DDJ-400に設定し,Enabledにチェックを入れます.

5.2. rtpMIDIの設定(ホスト)

注:このセクションではRekordboxを起動しないでください

My Sessionsの+ボタンを押し,Local nameとBonjour nameをDDJ-400に変更してください.
Local nameとBonjour nameは同じ文字列に設定すると分かりやすいです.

rtpMIDIで作成したDDJ-400を選択し,Directory内のホスト2(ここではDDJ-400(Host))と参加側(ここではDDJ-400(Sanka))を選択し,Connectボタンを押してください.

Enabledにチェックを入れます.

ここでRekordboxを起動し,両方のコントローラの操作が効くようになったら完了です.
Rekordboxがコントローラを認識した瞬間にDDJ-400がフリーズする時がある(音声が出ないなど)ので,両方のDDJ-400を再接続,VoiceMeeterのメニューからRestart Audio Engineをすると動くと思います.

6. RekordboxのMIDIマッピングを調整する

初期設定のままだとheadphone mix周りの挙動が滅茶苦茶になるので,MIDI設定を調整します.

MIXER内のHeadphonesMixとHeadphonesVolume,MasterLevelを削除します.

7. 参加者のUSBメモリを接続する(ホスト1,参加)

参加側はVirtualHere USB Serverを立ち上げ,画像のようになっていればOKです.

ホスト側は,VirtualHere USB Clientを起動します.
参加側PCを探して自動で接続してくれます.
接続に成功すると,以下のようなウィンドウが出てくるので,OKを押します.
接続できない場合は末尾のQ&Aセクションを参照してください.

USBメモリをダブルクリックし,ホストPCに接続します.

接続が完了すると,DeviceName(In use by you)に変わります.これでRekordboxから参加側のUSBメモリにアクセスすることができます.

ただし,VPN越しにアクセスしている都合上,応答性が良くない上に帯域も狭いため,ファイルの読み込みに時間がかかります.
光でもアートワークや波形情報を表示するとかなりしんどいと思います.

NGN内で完結するようなVPN組んだほうが結構マシにはなると思いますが,自分の所有しているVPNルータの性能があんまり高くない上に,めっちゃめんどくさいと思うのでやりません

VirtualHere経由で接続したUSBメモリからの楽曲ロード

8. 終わる

rtpMIDIのLive Routingsを元に戻し,Enabledのチェックを外します.
USBメモリを接続した場合は,ホスト1側でアンマウントしてから切断してください
あとは使用したソフトをすべて終了すればOKです.

操作時の注意

2つのコントローラの信号を無理やり1つにまとめているので,EQノブやフェーダの値が変更された瞬間にその値に飛びます.
曲を繋いだあと,ノブをセンターに戻す,共通のポジションを決める,BPM Syncを使用する等,対策する必要があります.

おわりに

かなり手間がかかりますが,Rekordboxの解析情報やCUEポイントが使えるので,B2Bがかなりやりやすいです.(VirtualDJの機能も試したけどかなり微妙だった)

配信イベントでももっとやっていきたいんですが,B2B用のそれなりの性能を持ったPCが余っていないので,なかなかできていません…やりたい

Q&A

VoiceMeeter Banana

Incoming Streamsが-none-のまま

ファイアーウォールがパケットを破棄している可能性が考えられます.
一時的に参加者側のファイアーウォールを無効化して,接続できるか確認してください

音がブツブツ途切れる

VBAN転送時のサンプルレートを下げる,オーディオエンジンの再起動を試す.

VirtualHere

Server側に接続できない

ファイアーウォールがパケットを破棄している可能性が考えられます.
一時的に参加側,ホスト1側のファイアーウォールを無効化して,接続できるか確認してください

USBメモリを選択してもエラーが出て接続できない

SYSTEMがvhui64.exeを実行している可能性があります.動いてたらvhui64.exeを全部殺してからvhui64.exeを再度実行してください

USB 3.0で接続しているとエラーが出る可能性が高いです.USB 2.0で接続してください

rtpMIDI

Directoryに何も表示されない

スリープ等でrtpMIDIが不安定になっている可能性があります.rtpMIDIのサービスプロセス再起動で改善します.
わからない場合はPCを再起動したほうが早いと思います.

要検証な内容

B2Bのシームレスな転換

追加コントローラ参加時に全体のDDJ-400がフリーズする事象が発生しなければできると思います.

別種コントローラとの接続

DDJ-XXXシリーズのマッピングファイルをざっと見たところ,だいたい同じように見えるので,同じ機種でなくともMIDIさえまとめてしまえば問題なく操作できそうです.
DDJ-400しか持ってないので検証のしようがない.協力者募集中です.

Rekordboxのバージョンについて

Ver.5では問題なく動作しました.
Ver.6ではCoreプラン以上が前提になりそうです.

Freeプランでも,Hardware Unlockが通れば一応運用することができますが,何を判定基準にしているのか不明です.

CDJ,XDJとの接続

これも持っていないので検証のしようがありません.
MIDIモードならマッピングファイルをゴニョゴニョするといけると思いますが,どうなんでしょうか…

Related Posts:

コメントを残す

メールアドレスが公開されることはありません。