始めまして!すばらしいアプリを作っていただきありがとうございます。 より良いものになるためにいくつか調査させていただきましたため、長くなってしまいましたがご確認いただけますと幸いです。
⏬️⏬️⏬️
1.使用機材
Roland Rubix 22(ハードウェア側でループバックあり&ループバックをOBS等で受け取れるデバイスはなし) バッファの設定値は2(144smp)
PCスペックはRyzen5 5600x RTX3060ti GTX1660ti 32GB RAM(DDR4)
2.ASIOのみを使用した動作確認
・アプリの入出力デバイス設定で、RubixをASIOモードで接続
・判定の遅延は10msほどで問題なく動作確認
・ただしこの状態でもマイク音量で調整できるループバックには多少の遅延を確認した(エコーのみだと気にならないレベル)
3.ASIOのみを使用した場合における問題点
・配信向けのアプリケーションでありながら、特定のASIOでしか配信に音を乗せられない
・デバイス側でループバック出力用の仮想オーディオデバイスが利用できる製品(Studio 24c等)を使えば、聞いている音をそのままOBSに流すことができる
・ただし、非対応のデバイスにおけるセットアップが致命的なほどに難解
4.上の解決手段として他社が用いている方法
他社製品である「SYNCROOM」というアプリケーションでは、インストール時に仮想オーディオデバイスがインストールされる。
この仮想オーディオデバイスがループバック機能を持っており、SYNCROOMから出力されるすべての音が入力されているため、ASIOがアプリケーション側で排他制御になっていてもOBSで簡単に音を受け取ることができる。
5.音ズレがひどいと言われる要因
「接続しているデバイスがASIOかどうかアプリケーション側からどうかわからない問題」
→おそらくこれがとても大きいと思います。接続先デバイスの中に、ASIOの場合はそれがASIOとわかる何かしらが必要&「ASIOじゃない場合は遅延しやすい」という説明書きが必要です。 多分詳しくない人は「AIF使ってるのに遅延している!(ただしASIO接続してない)」のパターンがあるはずです。
「OBSに配信を乗せるためにASIOを使用できない問題」
→厳密に言えば、外部アプリケーションを用いれば回避することができます(後述)。 ただし、比較的複雑な知識が必要になるため、ユーザーフレンドリーではありません。
そのため、アプリケーション側のマイクループバックの遅延をより少ないものにする必要があります。
また前述した「マイク入力のループバックやカラオケ音源などがすべて流れる、ループバック用の仮想デバイス」を用意するか、「NDIなどのプロトコルを使用して音を直接OBSにわたすための手段」を用意する必要があります。
6.ASIOを使用しつつ、ループバックがないA/IFでもOBSに音を乗せる方法
画像のような仮想ASIOを使用します。
これは他社製品(ドネーションウェア)の「VB-Audio Matrix」というものですが、ルーティンググリッド(→のもの)というものを使用して、ルーティングデバイスを決めることができるアプリケーションです。
設定内容としては
・カラオケアプリにはVirtualASIOをデバイスとして選択
・VirtualASIOの入力に「Rubixのマイク入力」をルーティング
・Rubixのスピーカー出力には以下のものをルーティング
Rubixのマイク入力
カラオケアプリのBGM等のシステムサウンド(VAIO1)
カラオケアプリのASIO入力
・OBSに出力する用のVirtualAudioInterface(VAIO2)にもRubixのスピーカー出力と同じものをルーティング
このようにルーティング設定を行ったうえで
・すべてのバーチャルA/IF バーチャルASIOのサンプリングレートを「44.1kHz」に設定
・バーチャルASIOのバッファリングサンプル数を「441」に設定
このように設定することで、ループバックがない物理A/IFを使っていても、カラオケアプリでASIOを使用しつつ少ない遅延でカラオケをできることを確認しました。(採点遅延が50msほど)
7.まとめ
遅延がひどいと言われているのは、「ASIOじゃないことが認知できていない」「配信に乗せるためにASIO以外の接続方法を使用するしかない」というユーザーが大半を占めているからではないかと思います。
要するにWindows Media Redirect接続やKernel Mixerを使用してカラオケアプリにマイク/イヤホンを接続していることが原因だと思います。
これを個人で解消するためには、前述したような難解な手順を踏んで環境構築しないといけません。
そのため、このアプリケーション単体で他社がやっているような「ループバック用の仮想オーディオデバイスを追加するという手法を取る」 「ASIOじゃないと遅延が起こることを色んなところに明記する」 ということを求められていると思います。
8.おまけの要望
このセットアップをしているときに「エラーコード007」にとても頭を悩まされました・・・! もうすでにこれについてはご案内されていますが、できる限りでいいのでエラーコードの内容がどういうものなのかサイト等にまとめてあるページが欲しいです!
以上になります!現時点でも求められていたものにマッチしているとても素晴らしいアプリなため、今後さらに良くなっていくことを一ユーザーとして期待しております🙏