Olá pessoal,
Estou estudando Java com o livro Use a Cabeça Java, cheguei no capítulo onde é criado o “vídeo musical”.
Testei o código abaixo, que aparece no capítulo, e notei que o programa não encerra, então tentei exibir uma mensagem no fim do programa, porém esta mensagem está aparecendo antes da execução do método go(), então gostaria de ajuda para entender o que está acontecendo.
import javax.sound.midi.*;
public class MiniMusicPlayer2 implements ControllerEventListener {
public static void main(String[] args) {
MiniMusicPlayer2 mini = new MiniMusicPlayer2();
mini.go();
System.out.println("terminou");
}
public void go() {
try {
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
int[] eventsIWant = {127};
sequencer.addControllerEventListener(this, eventsIWant);
Sequence seq = new Sequence(Sequence.PPQ, 4);
Track track = seq.createTrack();
for(int i = 5; i < 60; i += 4) {
track.add(makeEvent(144, 1, i, 100, i));
track.add(makeEvent(176, 1, 127, 0, i));
track.add(makeEvent(128, 1, i, 100, i + 2));
}
sequencer.setSequence(seq);
sequencer.setTempoInBPM(220);
sequencer.start();
} catch(Exception ex) {
ex.printStackTrace();
}
}
public void controlChange(ShortMessage event) {
System.out.println("1a");
}
public MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
MidiEvent event = null;
try {
ShortMessage a = new ShortMessage();
a.setMessage(comd, chan, one, two);
event = new MidiEvent(a, tick);
} catch(Exception e) {
e.printStackTrace();
}
return event;
}
}
Obrigado…