JAVA で「ミキシング コンソール」を構築しようとしています。このミキサーでは、物理的なミキシング コンソールであるかのように、各「スライダー」がラインになります。しかし、Goo *** で検索してオラクルのドキュメントを読んだ後、実際に役立つものは何も見つかりませんでした。
最初に、使用可能なミキサーを一覧表示します (最後のコードを参照)。幸いなことに、すべてのサウンドカードが一覧表示され、ライン インとライン アウトが検出されます。しかし、その後、私は何をしなければなりませんか?
私の目的は、任意のライン イン (マイク) またはライン アウト (VLC で再生されるサウンドのキャプチャ) からのサウンドをキャッチする「仮想ライン」を作成し、「作業」してから別のラインに再注入できるようにすることです。 . もちろん、「in」と「out」をそれぞれの行に設定する必要があります。
(マイク)の3つの物理ラインがキャッチされ、「レベル調整」され、「コーラス」と呼ばれる仮想ラインに再注入され、この仮想ラインは「マスターレベル」と呼ばれるメインの物理ラインアウトに再注入されます。
VLC によって再生される曲 (曲のメロディーなど) は、通常はメインの "out" に直接送信され、"傍受" のようにキャッチされます。次に、マスターに再注入してミックスする前に、レベルを設定することにします。マイク付きなので、音楽のレベルに合わせて歌手のレベルを調整できます。
それで、誰が私が始めて進歩するのを助けることができますか? いつもお世話になっております。
私のミキサーをリストするコードは次のとおりです。
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Control;
import javax.sound.sampled.Line;
import javax.sound.sampled.Mixer;
public class Mixers {
Mixers() {
try {
//List of the mixers from the system
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
//Characteristics of each mixer
for (Mixer.Info info : mixerInfo) {
System.out.println("\n"+info+ " - Description : "+info.getDescription());
Mixer mix=AudioSystem.getMixer(info);
//Controles available for this mixer
for (Control c:mix.getControls()) {
System.out.println ("\t Control supported by this mixer : "+c);
}
//Sources available for this mixer
for (Line.Info i : mix.getSourceLineInfo()) {
System.out.println("\t Source line available : "+i);
//Controls available for this Source
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println ("\t\t ==> Controls supported by this source : "+c);
}
}
// TargeLines available for this mixer
for (Line.Info i : mix.getTargetLineInfo()) {
System.out.println("\t Target line available : "+i);
//Controls available for this Target
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println ("\t\t Controls supported by this target : "+c);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
私の投稿を最後まで読んでくれて、解決策を教えてくれた人にもう一度感謝します。
ニコラス