# Playlist



## Eichelhäer (2. Feb 2021)

Hi, kurze Frage: Ich habe verschiedene Audiodateien (Midi) und möchte diese der reihe nach abspielen.
Also Track 1 , Track 2, usw. und dann das ganze wieder von vorne.
Nun bietet die Clip-Klasse zwar die Konstante LOOP_CONTINUESLY an allerdings nur für einen Titel. Muss ich den Aufwand in Kauf nehmen und jeden Titel mittels eigener Methode aufrufen oder kann ich das als Ganzes in eine Methode packen? Ich hab prinzipiell 2 Playlists mit ca. je 8 Titeln. Hier mal der Code der Methode mit der ich einen Track abspielen lasse:


```
public static void playMainMenuMusic(String file) {
        File music = new File("res/audio/music/"+file+".wav");
        //hier sollen noch mehr audio files rein die abspielweise im folgenden bleibt ja dieselbe
    
        try {
            if(outputmixer!=null) {
                clipmain = AudioSystem.getClip(outputmixer.getMixerInfo());
                clipmain.open(AudioSystem.getAudioInputStream(music));
                musicvolume = (FloatControl) clipmain.getControl(FloatControl.Type.MASTER_GAIN);
                clipmain.loop(Clip.LOOP_CONTINUOUSLY);
            }
            else {
                clipmain = AudioSystem.getClip(defaultoutputmixer.getMixerInfo());
                clipmain.open(AudioSystem.getAudioInputStream(music));
                musicvolume = (FloatControl) clipmain.getControl(FloatControl.Type.MASTER_GAIN);
                clipmain.loop(Clip.LOOP_CONTINUOUSLY);
            }
            
        } catch (LineUnavailableException | IOException | UnsupportedAudioFileException e) {e.printStackTrace();}
    }
```


----------



## Eichelhäer (2. Feb 2021)

sry im code isses .wav spielt aber nicht wirklich ne tragende rolle nur der vollständigkeit halber


----------



## Kirby.exe (2. Feb 2021)

Also ich kenne mich mit der Bibliothek nicht aus, aber du könntest bei einem "Loop" für alle Songs die Songs mittels einer Queue loopen  Wenn der erste Song in der Queue fertig gespielt wurde, dann stelle Ihn wieder hinten an


----------



## kneitzel (2. Feb 2021)

Clip dient nur dem Spielen von einer Musikdatei. Wenn Du mehrere nacheinander spielen willst, dann musst Du diese Funktionalität selbst implementieren.

Das sollte über addLineListener gehen. Ohne das LOOP_CONTINUOUSLY würde ich erwarten, dass Du ein STOP Event bekommst nach dem Abspielen um dann das nächste Lied anzustarten.

Im Netz findet man, dass es ggf. noch Timing Probleme geben könnte, weil ggf. das STOP Signal kommt, während der Sound noch nicht ganz durch ist. Etwas in der Art ist z.B. in https://stackoverflow.com/questions...-for-a-java-sound-clip-to-finish-playing-back behandelt.


----------



## Eichelhäer (2. Feb 2021)

Danke.


----------

