Mp3 Player

Olá!

Estou fazendo um player, ele está quase pronto… tenho alguns bugs quando a música acaba e só tem ela na playlist (ai ela toca novamente), a música sai com um chiado estranho… gostaria que alguém pudesse me explicar como funciona a reprodução de audio em java, pois li alguns tutoriais e não entendi muito bem… tenho certeza que se eu entender como funciona realmente, eu resolvo esses bugs…
na minha classe Musica:

Método novaMusica()

[code]private void novaMusica() throws IOException, UnsupportedAudioFileException, LineUnavailableException {
AudioInputStream in = AudioSystem.getAudioInputStream(this.arquivo);
AudioInputStream din = null;
if (in != null) {
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
baseFormat.getChannels() * 2, baseFormat.getSampleRate(),
false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);
sDLine = getLine(decodedFormat);
aIOStream = din;

        this.estadoMusica = Estado.STOP;
    }
}[/code]

Método play()

[code]public void play() throws IOException, LineUnavailableException {
this.fireComecouMusicListener(new MusicEvent(this)); //disparando evento quando começa a música
this.estadoMusica = Estado.PLAY;

    sDLine.start();
    
    this.continua = true;

    final byte[] data = new byte[4096];

    new Thread(new Runnable() {

        public void run() {
            try {
                while (continua) {
                    length = aIOStream.read(data, 0, data.length);
                    if (length > -1) {
                        sDLine.write(data, 0, length);
                    } else {
                        fireTerminouMusicListener(new MusicEvent(getMusica())); //disparando o evento quando 
                                                                                                           //termina a música
                    }
                }
            } catch (IOException ex) {
                ex.printStackTrace();

            }
        }
    }).start();
}[/code]

Método pause()

[code]public void pause() {
this.continua = false;
this.estadoMusica = Estado.PAUSE;

    sDLine.stop();
}[/code]

Método stop()

[code]public void stop() throws IOException, UnsupportedAudioFileException, LineUnavailableException {
this.length = 0;
this.continua = false;

    sDLine.drain();
    sDLine.stop();
    sDLine.close();
    aIOStream.close();

    this.novaMusica();
}[/code]

Abraços

Pow massa isso cara! Uma das minhas áreas de interesse é música… infelizmente não conheço mto dessa área em java… Mas você consegue fazer uma classe para equalização também!? pow ia ser irado!
Abraço aí cara!
E parabens pela iniciativa =)

Cara, ralei tentando criar um mp3 player mas não consegui!
Só consigo rodar wav…
Segui um monte de tutoriais mas não rolou…
Será que poderia me dar uma luz, mano?
Um abraço!

Bom, pelo jeito não é só eu que estou com dúvidas…

Então, não entendo EXATAMENTE como funciona a reprodução de audio em java… se alguém puder me explicar, talvez fique um pouco mais simples pra fazer coisas desse tipo…

Então… em anexo tem a minha classe Musica… passa um File (um arquivo mp3) no construtor dela e dá um play que executa…

Quando eu acabar com os bugs do meu projeto eu disponibilizo pra todo mundo… antes preciso que alguém me dê uma ajuda :smiley: