Snow Leopard で Java Sound を使用して 3 つの USB マイクからオーディオを録音/処理しようとしています (ただし、問題が解決すれば Windows に切り替えることができます)。問題は、USB マイクに対応するミキサーを使おうとすると、Java Sound が回線がサポートされていないことを教えてくれることです。具体的には、こう言っている...
利用可能なミキサー:
Java サウンド オーディオ エンジン
USBMIC シリアル番号 041270067
内蔵入力 内蔵マイク
サウンドフラワー(2ch)
サウンドフラワー (16ch)
スレッド「AWT-EventQueue-0」での例外 java.lang.IllegalArgumentException: Line unsupported: インターフェイス TargetDataLine サポート形式 PCM_SIGNED 96000.0 Hz、8 ビット、ステレオ、2 バイト/フレーム、
...USBMIC ミキサーを選択するように依頼すると、次のようになります。
Mixer mixer = AudioSystem.
getMixer(mixerInfo[1]);
オーディオ形式をマイクの正確な仕様 (16 ビット、44100Hz、ステレオ) に合わせてみましたが、違いはありませんでした。
ここで問題が発生します。
final TargetDataLine line = (TargetDataLine)
mixer.getLine(info);
ミキサーと TargetDataLine は互いに気に入らないようです。これら2つを「一致」させて仲良くする方法はありますか?
私が使用しているマイクは、確かに少し変わっています。それらは、SingStar と呼ばれるカラオケ ビデオ ゲームで使用するために作られました。マイク自体には標準のモノラル ライン入力コネクタがあり、小さなハブ (1 つのハブに 2 つ) に差し込むと、1 つのオス USB コネクタに変換されます。奇妙さはさておき、それらは Audacity と別のチャンネルとして完全にうまく動作するように見えるので、それらを使用したマルチチャンネル録音は明らかに可能ですが、Java ではおそらく不可能です。
また、異なるプログラム間でオーディオを共有する Soundflower のようなプログラムを使用することも検討しました。ただし、USB マイク入力を Soundflower に作成してから Java にパイプする方法がわからないため、これが機能するかどうかはわかりません。簡単な実験で、マイクから Audacity でオーディオを録音し、それを Soundflower にパイプして、Java プログラムで処理できることがわかりました。それでも、私がやりたいことは、Java ですべてをリアルタイムで実行することです。
この種の問題に詳しい人はいますか?