melmager
Erfahrenes Mitglied
Ich wollte eigendlich übern Sound Microfoneingang was aufzeichnen -
Ich habe schon ettliche Codes durch aber noch keinen gefunden der mir ermittelt auf welchen Mixer mein Microfon eingang liegt (und den ich verstehe was da gemacht wird)
Eine Liste die ermittelt Welche Mixer im System ist habe ich schon
Ich kann auch schon die Mixer rausfiltern dir fürn Eingang zuständig sind
und dann hörts auf.
Über Port.Info sollte man ja rausfinden können os Microfon oder Line oder ... ist
Vom Mixer kann ich ja ne Liste abrufen welche Lines so da sind - und dat Port.Info ist ja eine erweiterung von der line.info .. soweit so gut.
Was mir bisher an den Codes die ich so gesehen habe aufgefallen ist:
die meisten gehen über eine Exeption.. sprich ich versuche die line.inf auf eine port.info zu casten .. fehlgeschlagen dann kann es noch z.B ein Clip sein oder..
Was mich zur ersten Frage führt kann man das nicht vom Cast feststellen ?
dat wirft mir das raus:
dat programm:
wirft dat raus
und nu ?
und step 2 - selbst wenn ich weiss welchen Mixer ich brauche weil da mein Mic drauf ist - wie wähle ich den an ?
nu habe ich ne Version die ich verstehe und scheinbar geht:
was mich etwas Überrascht:
ist das Ergebniss was bei rauskommt:
wiso ist ein Microfon ein Target ****? verwirrt bin ,,,
Edit:
so wie es im Moment aussieht kommt das Java System nicht an den Mic Eingang heran ...
Ich habe schon ettliche Codes durch aber noch keinen gefunden der mir ermittelt auf welchen Mixer mein Microfon eingang liegt (und den ich verstehe was da gemacht wird)
Eine Liste die ermittelt Welche Mixer im System ist habe ich schon
Ich kann auch schon die Mixer rausfiltern dir fürn Eingang zuständig sind
und dann hörts auf.
Über Port.Info sollte man ja rausfinden können os Microfon oder Line oder ... ist
Vom Mixer kann ich ja ne Liste abrufen welche Lines so da sind - und dat Port.Info ist ja eine erweiterung von der line.info .. soweit so gut.
Was mir bisher an den Codes die ich so gesehen habe aufgefallen ist:
die meisten gehen über eine Exeption.. sprich ich versuche die line.inf auf eine port.info zu casten .. fehlgeschlagen dann kann es noch z.B ein Clip sein oder..
Was mich zur ersten Frage führt kann man das nicht vom Cast feststellen ?
Code:
mixerInfo = AudioSystem.getMixerInfo();
System.out.println("Available mixers:");
for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
//if (currentMixer.isLineSupported(targetDLInfo)) {
if (currentMixer.isLineSupported(portInfo)) {
System.out.println("mixer: " + mixerInfo[cnt].getName() + " [index:" + cnt + "]");
try {
Port tPort = (Port) currentMixer.getLine(portInfo);
//Port tPort = (Port) currentMixer.getLine(targetDLInfo);
System.out.println(tPort.getLineInfo());
}
catch (Exception e1) {
System.out.println(e1);
}
}
dat wirft mir das raus:
Code:
mixer: Port CK8 [hw:0] [index:5]
IEC958 Playback AC97-SPSA source port
dat programm:
Code:
Line.Info[] tLineInfos = mixer.getTargetLineInfo();
System.out.println(" Targets (" + tLineInfos.length + "):");
for (int k = 0; k < tLineInfos.length; k++) {
try {
TargetDataLine tLine = (TargetDataLine) mixer.getLine(tLineInfos[k]);
System.out.println(" Line: " + tLine.getLineInfo() + "\t(Name: " + tLine + ")");
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
} catch (ClassCastException e) {
try {
Clip tClip = (Clip) mixer.getLine(tLineInfos[k]);
System.out.println(" Clip: " + tClip.getLineInfo() + "\t(Name: " + tClip + ")");
} catch (LineUnavailableException e1) {
e1.printStackTrace();
} catch (ClassCastException e1) {
try {
Port tPort = (Port) mixer.getLine(tLineInfos[k]);
System.out.println(" Port: " + tPort.getLineInfo() + "\t(Name: " + tPort + ")");
} catch (LineUnavailableException e2) {
e2.printStackTrace();
}
}
wirft dat raus
Code:
Port CK8 [hw:0]index 5
Sources (2):
Port: IEC958 Playback AC97-SPSA source port (Name: com.sun.media.sound.PortMixer$PortMixerPort@18ee9d6)
Port: Capture source port (Name: com.sun.media.sound.PortMixer$PortMixerPort@19a0c7c)
Targets (13):
Port: Master target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@a9ae05)
Port: Master Mono target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@1dff3a2)
Port: PCM target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@1f42b49)
Port: Surround target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@145e044)
Port: Center target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@86c347)
Port: LFE target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@17e6a96)
Port: Line target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@87a5cc)
Port: CD target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@1960f05)
Port: Mic target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@b42cbf)
Port: Phone target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@e5b723)
Port: IEC958 Playback AC97-SPSA target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@15a8767)
Port: Beep target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@6f7ce9)
Port: Aux target port (Name: com.sun.media.sound.PortMixer$PortMixerPort@171bbc9)
und nu ?
und step 2 - selbst wenn ich weiss welchen Mixer ich brauche weil da mein Mic drauf ist - wie wähle ich den an ?
nu habe ich ne Version die ich verstehe und scheinbar geht:
Code:
mixerInfo = AudioSystem.getMixerInfo();
for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
System.out.println("mixer ["+cnt+"]: " + mixerInfo[cnt].getName());
Line.Info[] tLineInfos = currentMixer.getTargetLineInfo();
for (int li=0; li < tLineInfos.length; li++) {
try {
Line tLine = currentMixer.getLine(tLineInfos[li]);
System.out.println("\tTarget Line: " + tLine.getLineInfo() );
} catch (LineUnavailableException e) {
System.out.println(e);
}
}
tLineInfos = currentMixer.getSourceLineInfo();
for (int li=0; li < tLineInfos.length; li++) {
try {
Line tLine = currentMixer.getLine(tLineInfos[li]);
System.out.println("\tSource Line: " + tLine.getLineInfo() );
} catch (LineUnavailableException e) {
System.out.println(e);
}
}
}
was mich etwas Überrascht:
ist das Ergebniss was bei rauskommt:
Code:
mixer [5]: Port CK8 [hw:0]
.......snipp ....
Target Line: Mic target port
...... snipp ......
Source Line: Capture source port
wiso ist ein Microfon ein Target ****? verwirrt bin ,,,
Edit:
so wie es im Moment aussieht kommt das Java System nicht an den Mic Eingang heran ...