# Lautstärke AudioClip



## Turing0001 (29. Mrz 2021)

Hallo ihr Java-Experten,

ich brauche mal wieder eure Hilfe. Ich bin gerade dabei ein kleines Breakout-Spiel zu programmieren. Dabei soll sobald der Ball den Schläger oder einen der Steine trifft ein bestimmter Sound abgespielt werden. Das funktioniert auch alles wunderprächtig, aber der Sound ist sehr leise. Daher habe ich versucht, die Lautstärke zu regulieren via FloatControl. Dabei bekomme ich aber zur Laufzeit eine Fehlermeldung, zu der ich keine vernünftigen Informationen bei stackoverflow etc. bekomme:
java.lang.illegalArgumentException : Unsupported control type: master gain. Kann mir jemand von euch diesbezüglich weiterhelfen? Vielen Dank schon mal vorab.
Hier der Codeausschnit (es geht um die auskommentierten Zeilen):


```
try {
            soundclip = AudioSystem.getClip();
            aistr = AudioSystem.getAudioInputStream(this.getClass().getResource("/Bass-Drum-1.wav"));
//            FloatControl gainControl = (FloatControl) soundclip.getControl(FloatControl.Type.MASTER_GAIN);
//            double gain = 0.8;
//            float dB = (float) (Math.log(gain) / Math.log(10.0) * 20.0);
//            gainControl.setValue(dB);
            soundclip.open(aistr);
        } catch (LineUnavailableException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            catch (UnsupportedAudioFileException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
```


----------



## mihe7 (29. Mrz 2021)

Turing0001 hat gesagt.:


> Dabei bekomme ich aber zur Laufzeit eine Fehlermeldung, zu der ich keine vernünftigen Informationen bei stackoverflow etc. bekomme:


Naja, die Meldung ist doch ziemlich eindeutig: der Clip unterstützt das gewünschte Control nicht. Lass Dir mal mit Hilfe von getControls() ausgeben, welche unterstützt werden.


----------



## Turing0001 (29. Mrz 2021)

mihe7 hat gesagt.:


> Naja, die Meldung ist doch ziemlich eindeutig: der Clip unterstützt das gewünschte Control nicht. Lass Dir mal mit Hilfe von getControls() ausgeben, welche unterstützt werden.


Hallo mihe7,
danke für die schnelle Antwort. Eclipse bietet mir das Control an, bei der Ausgabe der Controls bekomme ich aber nur einen merkwürdigen Wert:
[Ljavax.sound.sampled.Control;@33bffee3
Offenbar gibt es auf meinem System keine Unterstützung wenn ich das richtig interpretiere. Dann muss ich mich wohl nach Alternativen umsehen.
Vilen Dank nochmals für dei nette Hilfe.


----------



## mihe7 (29. Mrz 2021)

Du darfst nicht einfach das Array an System.out.println übergeben. Mach z. B. etwas wie

```
System.out.println(java.util.Arrays.toString(soundclip.getControls()));
```


----------



## Turing0001 (29. Mrz 2021)

mihe7 hat gesagt.:


> Du darfst nicht einfach das Array an System.out.println übergeben. Mach z. B. etwas wie
> 
> ```
> System.out.println(java.util.Arrays.toString(soundclip.getControls()));
> ```


Sorry, da habe ich nicht nachgedacht. Ändert aber nicht viel. Das Array ist leer.


----------



## mihe7 (29. Mrz 2021)

Leer ist wenig :-( Die Controls stehen erst nach dem Öffnen zur Verfügung.


----------



## Turing0001 (29. Mrz 2021)

mihe7 hat gesagt.:


> Leer ist wenig :-( Die Controls stehen erst nach dem Öffnen zur Verfügung.


Hätte mir eigentlich klar sein sollen, aber wie dem auch sei. Nun steht da:
[Master Gain control with current value: 0.0 dB (range: -80.0 - 6.0206), Mute control with current value: False, Balance control with current value: 0.0  (range: -1.0 - 1.0), Pan control with current value: 0.0  (range: -1.0 - 1.0)]


----------



## mihe7 (29. Mrz 2021)

Ja, jetzt platzierst Du das open vor den auskommentierten Code (den Du dann natürlich wieder "einkommentierst") und solltest glücklich werden


----------



## Turing0001 (29. Mrz 2021)

mihe7 hat gesagt.:


> Ja, jetzt platzierst Du das open vor den auskommentierten Code (den Du dann natürlich wieder "einkommentierst") und solltest glücklich werden


Oh Mann, Sch...eibenhonig, na klar, falsches Timing. Naja, nach 15 Jahren dauert es eben ein wenig wieder in's Thema hineinzufinden. Dank Dir tausend Mal!!


----------

