Pegar as notas de um arquivo MIDI

Olá, estou criando um programa pra ler as notas de um arquivo Midi, ja consegui fazer o programa ler e tocar arquivos midi, fiz um player bonitinho pra ele e tal…
E minha intenção é desenhar na tela as notas na sequencia que elas são tocadas.
Pelo que eu entendi, eu tenho que pegar as notas dos eventos Midi, tentei capturar os eventos midi mas a única saída que obti foi essa:

javax.sound.midi.MetaMessage@73db12e6 -18137-9532javax.sound.midi.MetaMessage@33b5f576 -130javax.sound.midi.MetaMessage@6f06307f -1884427-95javax.sound.midi.Track$ImmutableEndOfTrack@7f5a1aca -1470

O código que usei pra pegar essa saída foi esse:

Track[] tracks = midiPlayer.musicaMidi.getTracks(); Track pista1=tracks[0]; for(int i=0;i<pista1.size();i++){ MidiEvent eventoMidi=pista1.get(i); MidiMessage mensagemMidi=eventoMidi.getMessage(); System.out.println(mensagemMidi.toString()); byte[] message = mensagemMidi.getMessage(); for(int k=0;k<message.length;k++){ System.out.print(message[k]); } }

Alguem ja trabalhou com algo parecido e saberia dizer qual é o próximo passo?

Eis o código do meu midiPlayer:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package MidiPlayer;
    import java.io.File;
    import javax.sound.midi.MidiSystem;
    import javax.sound.midi.Sequence;
    import javax.sound.midi.Sequencer;
    import javax.swing.JOptionPane;

public class MidiPlayer {
// Define a URL onde está o MIDI
File metallicaURL;
Sequence musicaMidi;
// Obtém o sequenciador MIDI que tocará a música
Sequencer sequenciador;

public MidiPlayer() {
}

public void criarPlayer(File arquivoMidi){
    try{
        metallicaURL = arquivoMidi;
        musicaMidi = MidiSystem.getSequence(metallicaURL);
        // Obtém o sequenciador MIDI que tocará a música
        sequenciador = MidiSystem.getSequencer();
        // Abre o sequenciador
        sequenciador.open();
        // Seta a música que queremos tocar nos equenciador
        sequenciador.setSequence(musicaMidi);
        // Abre o sequenciador
        sequenciador.open();
        // Seta a música que queremos tocar nos equenciador
        sequenciador.setSequence(musicaMidi);
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e.getLocalizedMessage());
    }
}

public void play(){
    sequenciador.start();
}

public void pause(){
    sequenciador.stop();
}

public void stop(){
    sequenciador.stop();
    sequenciador.setMicrosecondPosition(0);
}

public long posicaoMaximaDoPlayer(){
    return sequenciador.getMicrosecondLength();
}

public long posicaoAtualDoPlayer(){
    return sequenciador.getMicrosecondPosition();
}

public boolean estaTocando(){
    return sequenciador.isRunning();
}

public void fecharPlayer(){
    if(sequenciador!=null){
        sequenciador.close();
    }
}

}[/code]