# Sound abspielen in Java 1.5



## Kaan (21. Dez 2004)

Hallo,

Ich habe folgendes Problem: Ich habe einen kleinen SoundPlayer für mein Spiel programmiert. Den Code dafür hab' ich großteils aus dem Handbuch der Java-Programmierung von Guildo Krüger entnommen...alles lief eigentlich ganz gut, bis ich das Spiel mal auf Java 1.5 testen wollte. 

Zuerst machte der SoundPlayer schon Probleme beim Laden. Als ich mir die Exception, die geworfen wurde, genauer unter die Lupe nahm, hab' ich festgestellt, dass ich bei Java 1.5 bei der GainControl nur einen Wert von max. 6.0205 übergeben kann. Bei Java 1.4 hatte ich ein Argument mit dem Wert 10.0.

Dieses Problem hab' ich geschafft zu beseitigen...aber nun habe ich ein zweites Problem mit Java 1.5: Es dauert elend lange bis eine Sound-Datei geladen ist...außerdem wird die CPU voll ausgelastet. Habt ihr vielleicht ne Idee, wie ich diesen Fehler beseitigen könnte?

mfg Kaan


----------



## Kaan (21. Dez 2004)

Vielleicht hilft euch ein bisschen Code weiter. Ich hab' versucht, den Fehler so weit wie möglich einzugrenzen...


```
private Clip ladeSound(String pfad)
    {
        URL url = getClass().getResource(pfad);
        if(url == null){
            //Fehlerdialog anzeigen
            FehlerDialog wnd = new FehlerDialog();

            //Komplettes Spiel beenden
            System.exit(0);  
        }
        
        Clip clip = null;
        
        try{
            AudioInputStream ais = AudioSystem.getAudioInputStream(url);
            AudioFormat format = ais.getFormat();
    
    
            //ALAW/ULAW Samples in PCM konvertieren
            if ((format.getEncoding() == AudioFormat.Encoding.ULAW) ||
                (format.getEncoding() == AudioFormat.Encoding.ALAW))
            {
                AudioFormat tmp = new AudioFormat(
                 AudioFormat.Encoding.PCM_SIGNED,
                 format.getSampleRate(),
                 format.getSampleSizeInBits() * 2,
                 format.getChannels(),
                 format.getFrameSize() * 2,
                 format.getFrameRate(),
                 true
                );
                ais = AudioSystem.getAudioInputStream(tmp, ais);
                format = tmp;
            }  
            
            
            DataLine.Info info = new DataLine.Info(Clip.class, format, ((int)ais.getFrameLength() * format.getFrameSize()));
            clip = (Clip)AudioSystem.getLine(info);
            clip.open(ais);
            FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
            gainControl.setValue(6.0206f);   
        }catch(Exception e){
            //Fehlerdialog anzeigen
            FehlerDialog wnd = new FehlerDialog();
            
            //Komplettes Spiel beenden
            System.exit(0);  
        }
        return clip;
    }
```

Findet ihr im Code einen Semantikfehler? bzw. wo kann ich mich über die Schwächen von Java 1.5 informieren?


----------



## Stefan1200 (28. Dez 2004)

Das selbe Problem habe ich auch, weitere Informationen von mir gibt es hier:

http://www.java-forum.org/de/viewtopic.php?t=9195


----------



## 0xdeadbeef (28. Dez 2004)

Habt ihr schonmal die neue Version der JRE 1.5 ausprobiert (1_5_01 o.ä.) ? Sind 'ne Menge Bugfixes drin, eventuell hilft's ja was...


----------



## Kaan (30. Dez 2004)

Oh, ich dachte es antwortet keiner mehr auf meine Frage 

Danke, Danke!! Ich werde mir jetzt mal sofort alles nochmal anschauen und testen.


----------



## Kaan (30. Dez 2004)

@0xdeadbeef

Wo genau finde ich die neue Version vom JDK 1.5? Auf den Sun Seiten finde ich keine Versionsauflistungen.


----------



## Stefan1200 (30. Dez 2004)

@Oxdeadbeef: Siehe in meinem Thread, die neue Java 1.5.0_01 hat diese Soundprobleme leider immer noch.


----------

