Windows Lautstärke ändern / Stumm schalten

Cymatoxa

Mitglied
Hi, ich möchte mit meinem Programm die Windows-Lautstärke beeinflussen. Das hab ich mit folgendem Code versucht (der ist nicht von mir, sondern aus dem i-Net):
Code:
private void playSound() {
        try {
            AudioInputStream stream = AudioSystem.getAudioInputStream(new File("test.wav"));
            AudioFormat format = stream.getFormat(); 
            if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) { 
                format = new AudioFormat( AudioFormat.Encoding.PCM_SIGNED, 
                        format.getSampleRate(), 
                        format.getSampleSizeInBits()*2, 
                        format.getChannels(), 
                        format.getFrameSize()*2, 
                        format.getFrameRate(), true);
                stream = AudioSystem.getAudioInputStream(format, stream); 
            } 
            DataLine.Info info = new DataLine.Info(Clip.class, stream.getFormat(), ((int)stream.getFrameLength()*format.getFrameSize()));
            Clip clip = (Clip) AudioSystem.getLine(info); 
            FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
            double gain = .2d;
            float dB = (float)(Math.log(gain)/Math.log(10.0)*20.0); 
            gainControl.setValue(dB);
            BooleanControl muteControl = (BooleanControl)clip.getControl(BooleanControl.Type.MUTE);
            muteControl.setValue(false);
            clip.open(stream); 
            clip.start(); 
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch (LineUnavailableException e) {
            e.printStackTrace();
        }
        catch (UnsupportedAudioFileException e) {
            e.printStackTrace();
        }
    }
Leider bekomm ich immer eine Exception:
Code:
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported control type: Master Gain
        at com.sun.media.sound.AbstractLine.getControl(AbstractLine.java:147)
        at simpleGame.Sound.playSound(Sound.java:49) [Das ist die Zeile FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);]
        at simpleGame.Sound.<init>(Sound.java:25)
        at simpleGame.Sound.main(Sound.java:76)
Java Result: 1

Wär super, wenn ihr mir helfen könntet.
Grüße, Cymatoxa
 
Moin,

in welcher Zeile kommt der Fehler denn genau :confused:
Sicher, das alles Notwendige korrekt importiert wird :confused:

Gruß
Klaus
 
Hi,

Der Fehler ist in Zeile 16.
Ich hab mich auf NetBeans verlassen, dass alles importiert wurde.
Hier aber noch meine Importe:
Code:
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.BooleanControl;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

Grüße, Cymatoxa
 
Moin,

ich kenne zwar dieses FloatControl nicht wirklich, aber versuch' mal, auch :
javax.sound.sampled.FloatControl.Type
zu importieren ...
Ggf. kannst in der Zeile, in der der Fehler auftritt, links mit der rechten Maustaste auf das Fehlersymbol klicken und Vorschläge für die Fehlerbehebung bekommen ... möglicherweise wird dabei ja auch der entspr. Import angezeigt ;-)

Gruß
Klaus
 
Hi,

danke für deine Bemühnungen, aber am Import scheints nicht zu liegen. Gibt es noch andere Möglichkeiten?

Gruß,
Cymatoxa
 
Moin,

danke für deine Bemühnungen, aber am Import scheints nicht zu liegen. Gibt es noch andere Möglichkeiten?

Ja - wie ich oben schon schrieb :
Du kannst in der Zeile, in der der Fehler auftritt, in der linken Spalte mit der rechten Maustaste auf das rote Fehlersymbol klicken und bekommst Hinweise für die Fehlerbehebung ...


Gruß
Klaus
 
Tach,

richtig, man bekommt dank NetBeans wirklich schöne Fehlerbeschreibungen und Lösungsansätze, wenn man auf ein solches Symbol klickt. Leider erhalte ich aber keine Fehlermeldung von NetBeans. Der Fehler tritt erst beim Ausführen auf (oder Kompilieren?). NetBeans sagt, mein Code wäre in Ordung, deshlb brauche ich ja auch Hilfe ;)

Grüße,
Cymatoxa
 
Hi

ich glaube dir fehlt das open beim clip bzw es steht zu weit unten:

Code:
Clip clip = (Clip) AudioSystem.getLine(info); 
clip.open(stream);
FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
 
Zuletzt bearbeitet:
Vielen Dank :)

ich bekomm schon mal keine Exception mehr.
Leider hat sich an der Lautstärke-Einstellung nichts geändert.
Kann das an der Soundkarte liegen?

Grüße,
Cymatoxa
 
Zuletzt bearbeitet:
Zurück