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
 

vfl_freak

Premium-User
Moin,

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

Gruß
Klaus
 

Cymatoxa

Mitglied
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
 

vfl_freak

Premium-User
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
 

Cymatoxa

Mitglied
Hi,

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

Gruß,
Cymatoxa
 

vfl_freak

Premium-User
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
 

Cymatoxa

Mitglied
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
 

Peregrin

Mitglied
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:

vfl_freak

Premium-User

Cymatoxa

Mitglied
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:

Neue Beiträge

Forum-Statistiken

Themen
272.351
Beiträge
1.558.596
Mitglieder
187.824
Neuestes Mitglied
Danke!