VRアンサンブル研究会 成果報告
VRの中でアンサンブルをしたい。多くの先達がすでにいろいろと知見を集めて下さっていますので、それらを参考に前に進んでいます。ここでは私たちの成果報告をしたいと思います。
VRアンサンブル研究会とは
2020年9月に私はVRでヴァイオリンとヴィオラを弾くまぁちゃん(@bissochan)さんと初めてアンサンブルをしました。300 msの遅延の中では音出しをしたに過ぎません。それ以来、なんとかアンサンブルにならないかとかなりもがきました。最初は遅延研究会と称して、遅延対策をしていました。そのうちマイクが手に入ると音質向上研究会と名前を変えて、音質の向上を目指しました。そしてアバターの改造、ワールドの製作と進んで行きました。私たちはVR世界でのアンサンブルを研究しています。
遅延研究会
遅延の下げ方:VRChatではかなり遅延が激しいので、そのまま楽器を弾いて合せることはできません。結局YAMAHAのSYNCROOMを使うことになります。またきちんとしたASIOでないと遅延が小さくなりませんので、オーディオインターフェースが必要です。そうするとUSBで接続するマイクではなくてきちんとしたマイクを接続します。つまり以下です。
・SYNCROOMをつかう
・オーディオインターフェースを使いASIOを使う
これで片道の遅延が100 msより小さくなります。まぁちゃんさんと私はかなり距離的には離れているようですが、50 ms程度で繋がります。
その結果、下記の様な成果が得られています。「遅延が仕事をしていない」と評価をいただきました。
遅延を乗り越える演奏の仕方:片道50 msの遅延は残っています。でもピッタリ演奏はあっています。これはまぁちゃんさんが遅延を計算して少し早めに演奏をしているからです。
さらにちょっと信じられませんが、まぁちゃんさんは10 msの遅延の揺らぎが分かる人です。ある日、いつものように演奏して録音を聴いていたら「今日は遅延が大きくないですか?」と言われます。たしかに60 msの日でした。
普通の人は遅延を計算して前のめり演奏するのは難しいです。その時には、伴奏を聴いて、他の楽器たちがそれぞれに伴奏に合わせて弾けばいいです。そして伴奏でない楽器のSYCROOMからVRChatに流し込みます。伴奏には結局100 msのずれで聞こえますから、他の楽器の演奏は無視します。それぞれの楽器たちも伴奏以外の音はかなり変に聞こえるはずなので、伴奏以外は無視します。一方で、VRChatで聴いている観客は伴奏に対して楽器が50 ms遅れて聞こえますが、アップテンポな曲でなければまず問題になりません。
失敗した事柄:ここではこの結論に至るまでの失敗談を記録で残しておきましょう。
・指揮者 りーふでさんに指揮をしてもらい、二人で演奏したことがあります。指揮者も大変です。振っているタイミングで音は返ってきません。演奏している方も、弾いているのとは違う、相手の演奏が聞こえます。これは1回で諦めました。
・ASIO4ALL 最初はUSB接続のマイクがあったので、とりあえずASIO4ALLを使って遅延を下げて、やっていました。二つの意味で難しいです。まずUSB接続のマイクの性能が低くて楽器の音を正しく捉えることができません。それからASIO4ALLでは遅延をある程度しか下げられません。
まぁちゃんさんと私。写真撮影は0-2さん
音質向上研究会
結局、音質向上はマイクやオーディオインターフェースの性能を上げること、ネットワークの負荷を下げることに尽きます。
マイク:音楽用のマイクを使いましょう。実況中継用のマイクぐらいだと人の声に特化していて、10 kHzを越える音が入ると破綻することがあります。まぁちゃんさんのバイオリンのF#は強烈でいつも音が割れてダメだったのが、マイクを替えた途端にクリアに届くようになりました。きちんとしたマイクを使いましょう。
ネットワークの負荷を下げる:SYNCROOMを観察しているとかなりのパケットの送受信があります。ですから内外のネットワーク負荷を下げることが重要です。外向けには光回線でIPv6がいいとされています。内向きには動画を観るとか映像をやりとりするようなネットワーク負荷の高いことをやめます。具体的なことは失敗談で書いておきます。
音量の調整:VRChatはchatを目的にしています。つまり人の声がきちんと通ることに重点を置いています。そのためにローパスフィルタが入れてあります。ですから高音には弱いです。高音が通らないではなくて、妙なノイズを載せてしまいます。下の図は20 Hzから20 kHzの音を時間と共に変えながらVRChatに流し込んだときに、聴いたスペクトルです。横軸は時間で縦軸は周波数スペクトルとなっていて明るいところの音の周波数成分が多いことが分かります。時間と共に入力の音の周波数が上がっています。2 kHzを越えるあたりからぼやけてきます。そしてゴーストが出始めます。さらに10 kHzを越えると異様なノイズが入ります。その結果、音が破綻します。
ヴァイオリンやヴィオラはとても倍音の多い、豊かな音がでます。これをVRChat内に流すと、あっという間に破綻します。そこで結局、かなり音量を絞ってVRChat内に入れるようにしました。
FL Studioの役割:FL Studioはいろいろな役割を行なっています。
SYNCROOMをVSTを使って接続しているので、すべてのパートをばらばらに録音することができます。つまり後で音のバランスを作り替えて音を作り直すことができます。
リバーブやコンプレス、遅延などいろいろなエフェクトをかけることができます。
20 Hzの音の再生ができます。VRChatはノイズゲートがあり、ある程度小さい音になると、音がでなくなります。そこでこれを阻止するために20 Hzの音を流しておきます。ほとんど機器では20 Hzを再生できません。VRChatは音が流れていると判断して、音を出し続けるので小さい音で演奏しても演奏が途切れなくなります。
なお20 Hzの音は下記でも提供しています。SYNCROOMで再生させればOKです。
失敗した事項:ここでも失敗談を書いておきます。
・SYNCROOMは一つに PCがいくつかあったので、複数台で分担させて処理の負荷を下げることをやっていました。その時にSYNCROOMを複数台のPCにそれぞれ立ち上げていました。しかしSYNCROOMはかなりパケットの送受信が激しいです。内部でのネットワークの負荷を上げる原因となり、音質が悪くなります。SYNCROOMは一つにします。
・OBSを使わない VRChatの動画記録をOBSでやっていました。動画の記録は楽しいです。ある日、試しにOBSをやめてみました。そしたら、録音の途中ではいるノイズが無くなりました。
・Virtual DesktopをやめてOculus Linkに Virtual Desktopを使うと無線でQuestを使うことができて便利です。しかし画像をWifiに送るためにネットワークの負荷があがります。これをOculus Linkにすると、USBで画像を送るようになるので、ネットワークの負荷が下がります。
・リモートデスクトップを使わない 複数のPCを使うとリモートデスクトップを使ってコントロールすることが多いですが、リモートデスクトップもネットワークの負荷を上げる原因になります。使わないようにします。
・20 Hz重畳の仕方 boothにある20 Hzの音は10秒しかないので山谷を合せて10分くらいにして使っていました。しかしそれでもSYNCROOMでループ再生させると切れ目でノイズが乗ります。最終的にはFL Studioで20 Hzの音を直接再生するようにしました。
将来構想
現在、アンサンブル演奏するのにはSYNCROOMしか頼るものがありません。しかしどうしてもネットワークの不調で音が途切れてしまうことがあります。これを防ぐにはVoicemeeterを使って繋ぐことが考えられます。演奏者どうしをVPNで接続してVoicemeeterをバッファーを大きくしてからVBANで繋ぎます。これによって録音する音を守ります。SYNCROOMでは音が途切れるけど演奏には支障はないです。録音はVoicemeeterを使って遅れてでも品質を守ります。これを機会があったらやってみたいと考えています。
最後に
VR界隈にはとても豊かな人材がいて、ヘルプを出すとか解決することが多いです。アバターの改造、ワールドについては技術力のある方々に教えていただり製作をお願いしています。
たぶん、数年も経つとまるで違う環境になり、この記事もその当時の苦労した思い出の記録になると思います。その思い出になるためにも残しておきます。
2021年4月11日
litalita
参考となる記事
いつか参考になる記事を載せておきます。
この記事が気に入ったらサポートをしてみませんか?