javax.sound.sampled.* - Hilfe zu den Controls

I.Haffner

Mitglied
Hallo,
Ich bin seit einigen Stunden dabei mich in das Audio Processing mit Java einzuarbeiten.
Mein Ziel ist es, einen
Code:
Control
für den
Code:
Mixer
meiner Creative-Soundkarte und dessen
Code:
Line
für die Lautsprecher einzurichten, sodass ich entwerder mit einem
Code:
FloatControl
die Lautstärke variieren oder mit einem
Code:
BooleanContol
die Lautsprecher muten kann.

Dazu habe ich mir drei Funktionen geschrieben:

1) Ein Array aller Mixer erzeugen
Java:
public static Mixer[] getMixers(){
		LinkedList<Mixer> mixerlist = new LinkedList<>();
		Mixer.Info[] infos = AudioSystem.getMixerInfo();
		for(Mixer.Info info : infos)
			mixerlist.add(AudioSystem.getMixer(info));
		return mixerlist.toArray(new Mixer[0]);
	}

2) Ein Array aller Lines eines speziellen Mixers
Java:
public static Line[] getLines(Mixer mixer){
		LinkedList<Line> linelist = new LinkedList<>();
		Line.Info[] linesininfo = mixer.getSourceLineInfo();
		Line.Info[] linesoutinfo = mixer.getTargetLineInfo();
		Line.Info[] linesinfo = new Line.Info[linesininfo.length+linesoutinfo.length];
		System.arraycopy(linesininfo, 0, linesinfo, 0, linesininfo.length);
		System.arraycopy(linesoutinfo, 0, linesinfo, linesininfo.length, linesoutinfo.length);
		for(Line.Info info : linesinfo){
			try {
				linelist.add(mixer.getLine(info));
			} catch (LineUnavailableException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return linelist.toArray(new Line[0]);
	}
Ich vermute es ist überflüssig
Code:
mixer.getSourceLineInfo()
überhaupt zu betrachen wenn man die Lautstärke der Lautsprecher manipulieren will, aber so hab ich wirklich ALLE Lines eines Mixers.

3) Ein Array aller Controls einer Line
Java:
public static Control[] getControls(Line line){
		try{
			line.open();
			return line.getControls();
		}
		catch(LineUnavailableException ex){
			return null;			
		}
	}

Das bisherige war mehr zum Filtern meiner Daten gedacht. Nun zur eigentlichen Funktion.
Ich möchte zu einem speziellen Mixer und einem speziellen Line eine bestimmte Control (sofern unterstützt) erhalten.
Java:
public static Control getControl(Mixer mixer, Line.Info lineinfo, Control.Type controltype){
		if(mixer.isLineSupported(lineinfo)){
			try{
				mixer.open();
				Port port = (Port) mixer.getLine(lineinfo);
				try{
					port.open();
					Control[] controls = port.getControls();
					for(Control control : controls){
						if(control.getType().equals(controltype)){
							System.out.println(port.getLineInfo());
							return control;
						}
					}
				}
				catch(LineUnavailableException ex){
					
				}
			}
			catch(LineUnavailableException ex){
				
			}
		}
	return null;
	}

Das funktioniert soweit auch ganz prima. Z.B. erhalte ich zu dem Mixer meiener Creative-Soundkarte und dem Line für die SPEAKER ein VolumeControl / MuteControl. Dieses ist auch kein Nullpointer!
Allerdings scheinen alle Änderungen mit Hilfe der Control keinen Effekt zu haben.

Vielen vielen Dank schonmal im Voraus.
Die Lösung interessiert mich wirklich brennend : )

PS: Ich nutze einmal meine Creative-Soundkarte und dann hat mein USB-Headset noch seine Treiber (also auch eigene Mixer/Lines).
 

I.Haffner

Mitglied
Danke dafür. Aber das Tutorial hatte ich schon mehrmals gelesen : )
Und auch das Thema im Forum wurde ja nicht richtig gelöst... leider geht es so nicht.
 

I.Haffner

Mitglied
Da du ja die Antwort in dem Thema gegeben hast kannst du es vllt auch nochmal etwas genauer hier erklären : )
Ich habe zB einen FloatControl vom TYPE VOLUME für meinen SPEAKER. Ich kann mir Anzeigen lassen dass die Range 0.0 -1.0 ist. getValue() liefert zB 0.0. aber das würde doch bedeuten dass ich keinen ton habe? wenn ich setValue durchführe ändern auch den wert, allerdings merke ich keine änderung der lautstärke.

Habe auch schon BooleanControl vom TYPE MUTE getestet, aber das scheint auch nicht zu funktionieren.

Ich hab auch zu dem Thema iwo gelesen dass sich die Controls der Lines garnicht instanzieren lassen (aber das kann ja nicht sein).

Auf jeden Fall hab ich jetzt schon viel methoden probiert und nix geht. Ich hoffe wirklich dass ich es irgendwann noch schaffe : )
 

I.Haffner

Mitglied
Ich hab mal die
Code:
Lines
gefiltert, die vom
Code:
TYPE
Code:
SPEAKER
sind und den
Code:
Control
Code:
FloatControl.TYPE.VOLUME
oder
Code:
BooleanControl.TYPE.MUTE
unterstützen und mir die Informationen gedruck.

Hier das Ergebnis
Code:
Port Lautsprecher (Creative SB X-Fi), version 6.1
SPEAKER target port
Minimum 0.0	Maximum 1.0
Precision 1.5258789E-5	Units 	UpdatePeriod 1000

Port Lautsprecher (C-Media USB Headp, version 1.0
SPEAKER target port
Minimum 0.0	Maximum 1.0
Precision 1.5258789E-5	Units 	UpdatePeriod 1000
 
S

Spacerat

Gast
Ports... hmmm... Dabei handelt es sich afaik direkt um die Hardware-Ports des Betriebssystems - hier anscheinend Windows 7. Ein direkter Hardwarezugriff wird aber anscheinend höchst selten unterstützt. Bei den Lines aber, welche für diesen Mixer zur Verfügung stehen, sollte es gehen. Für die Ports könnte man statt "VOLUME" es auch mal mit "MASTER_GAIN" ausprobieren.
Im übrigen... deine HW wird vom standard Sound-API eh nicht vollkommen unterstützt, denn dieses ist seit eh und je auf 2 Kanäle (Stereo) begrenzt. Da ist man am Ende eindeutig mit LWJGL oder JOAL ohnehin besser bedient.
 

I.Haffner

Mitglied
Danke für die Antwort. Ports sind es doch nur weil ich die Lines zu Ports gecastet habe. Habe gelesen dass die Ports die Lines-Class erweitern. Und in den Tutorials wird überall zu nem Port gecastet.
Aber wenn eh nur Stereo unterstützt wird lese ich mich wohl besser in die von dir genannten APIs ein.
Vorerst würde ich sagen, das Thema hat sich erledigt : )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Javax.Sound Problem (setMessage-Methode) Allgemeine Java-Themen 2
P javax.sound: clip.stop(); Allgemeine Java-Themen 4
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
C Probleme mit javax.mail.Session Allgemeine Java-Themen 8
jumichel Eclipse The package javax.mail is not accessible Allgemeine Java-Themen 3
T Erste Schritte mit javax.validation Allgemeine Java-Themen 5
severin_96 javax.crypto.IllegalBlockSizeException Allgemeine Java-Themen 7
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
E javax.mail sene Type ändern Allgemeine Java-Themen 2
RalleYTN javax.vecmath Transformationsmatrix für LWJGL3 Allgemeine Java-Themen 2
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
T javax.script (JavaScript): Nicht-JRE-Packages importieren/nutzen Allgemeine Java-Themen 4
buggy84 JavaX und win32comm.dll Allgemeine Java-Themen 3
N javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Allgemeine Java-Themen 3
Q javax.crypto.BadPaddingException - was ist das genau? Allgemeine Java-Themen 9
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
G Wie installiere ich javax-usb unter windows? Allgemeine Java-Themen 0
P javax.mail MessageCount Allgemeine Java-Themen 13
E NoClassDefFoundError: javax/microedition/io/Connection Allgemeine Java-Themen 2
J javax.comm findet serielle ports nicht Allgemeine Java-Themen 2
B Eclipse [Ubuntu] Paket javax.media.* nicht gefunden Allgemeine Java-Themen 7
J package javax.servlet does not exist Allgemeine Java-Themen 5
T Wo ist javax.swing.TransferHandler enthalten? Allgemeine Java-Themen 10
M System.setProperty("javax.net.ssl.trustStore", "mykey.pkx"); Allgemeine Java-Themen 1
G javax.jms.IllegalStateException: This method. Allgemeine Java-Themen 4
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
M Netbeans IDE und javax.comm 2.0 Allgemeine Java-Themen 4
O javax.comm ? Allgemeine Java-Themen 3
L Fehlende Teile des javax Packages Allgemeine Java-Themen 3
P welche java version für javax.mail? Allgemeine Java-Themen 7
L javax.comm unter Linux Allgemeine Java-Themen 11
G javax.comm bzw serielle Schhnittstelle? Allgemeine Java-Themen 2
S Fehler bei der javax.usb api Allgemeine Java-Themen 2
reibi javax.crypto.SecretKey - Einfaches Beispiel gewünscht ;-) Allgemeine Java-Themen 2
K javax.comm Problem beim starten aus .jar heraus Allgemeine Java-Themen 3
foobar Rxtx vs javax.comm Allgemeine Java-Themen 2
T Exception at javax.swing.plaf.basic.BasicTableUI.paintCell Allgemeine Java-Themen 3
T Wo kann ich Javax.Comm Api Downloaden ? Allgemeine Java-Themen 6
C [javax.mail] Betreff vergleichen Allgemeine Java-Themen 5
C [javax.mail] Folder not open Allgemeine Java-Themen 2
H javax.comm und Parallele Schnittstelle (PIN für PIN) Allgemeine Java-Themen 7
S Javax.comm Probleme mit Ansteuerung eines 8051 EEPROMs Allgemeine Java-Themen 8
F Problem beim Drucken mit javax.print Allgemeine Java-Themen 2
M javax.mail – Sending failed – Invalid Addresses Allgemeine Java-Themen 8
S RS232 mit javax.comm Allgemeine Java-Themen 5
N javax.security.sasl verzweifelt gesucht Allgemeine Java-Themen 2
S javax.comm unter Windows XP Allgemeine Java-Themen 2
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
ms_cikar JavaOSC (Open Sound Control) Allgemeine Java-Themen 1
J Java Sound Api Sound input und Output auswählen Allgemeine Java-Themen 4
J Sound mit Clip in Linux abspielen Allgemeine Java-Themen 3
J Sound mit Hall und Equalizer abspielen lassen Allgemeine Java-Themen 6
K Sound-Visualisierung in Java Allgemeine Java-Themen 0
Tacofan Sound abspielen Allgemeine Java-Themen 1
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
D Library/Framework zum Umwandeln von Sound in Notenbilder Allgemeine Java-Themen 1
V Input/Output Sound Dateien aus Jar laden Allgemeine Java-Themen 18
S Java sound pitch modulation Allgemeine Java-Themen 2
B Java Sound Memory Overload Allgemeine Java-Themen 0
DaniSahne96 Input/Output [Sound]Mp3 datein wiedergeben Allgemeine Java-Themen 8
I Sound abspielen aus einem Sample-Array Allgemeine Java-Themen 2
G Threads Klasse Sound und Threads bleiben hängen Allgemeine Java-Themen 4
B AudioInputStream, bzw. Sound bearbeiten / splitten Allgemeine Java-Themen 2
Apo Java Sound Mark/Reset Exception Allgemeine Java-Themen 14
Developer_X Java Sound Lautstärke Allgemeine Java-Themen 10
A sound Allgemeine Java-Themen 4
R Sound unter Java Allgemeine Java-Themen 12
grudge Problem mit Sound Allgemeine Java-Themen 2
I Java und Sound Allgemeine Java-Themen 5
P Sound Buffer prüfen Allgemeine Java-Themen 12
C Sound stoppt Rest & Lautstärke-Problem Allgemeine Java-Themen 4
M Sound in datei abspeichern Allgemeine Java-Themen 3
T Java Sound Engine: Was liegt drunter? Allgemeine Java-Themen 7
E Nach Packen in Jar ist Sound nur noch abgehackt zu hören Allgemeine Java-Themen 2
oliver1974 Java Sound und gleichzeitger Zugriff auf Soundkarte Allgemeine Java-Themen 3
S sampled sound mixen Allgemeine Java-Themen 15
T Sound in JFrame: Ich krichs nich hin =( Allgemeine Java-Themen 7
S Kein Sound in Java Applets unter Win 9x Allgemeine Java-Themen 4
P kein sound bei freenet spielen Allgemeine Java-Themen 2
H Java Sound Allgemeine Java-Themen 2
M Sound anhand von gegebener Frequenz abspielen Allgemeine Java-Themen 2
D Sound ruckelt. Allgemeine Java-Themen 9
M Sound abspielen ohne Sounddatei Allgemeine Java-Themen 5
H Sound wiedergabe und Threads Allgemeine Java-Themen 3
bernd Sound abspielen? Allgemeine Java-Themen 6
K Sound abspielen in Java 1.5 Allgemeine Java-Themen 6
G Mit Klassenlader Sound Ressourcen laden Allgemeine Java-Themen 10
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
L Java Sound Allgemeine Java-Themen 2
D Wiedergabe von .wav-Dateien(Sound)? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben