Playlist java sequencer

I currently have a very simple class:

public class Music { private Sequence sequence; private Sequencer sequencer; public Music(String music) { try { this.sequence = MidiSystem.getSequence(ResourceManager.getMusic(music + ".mid")); this.sequencer = MidiSystem.getSequencer(); this.sequencer.open(); this.sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY); this.sequencer.setSequence(sequence); } catch (Exception e) { System.out.println("Oops - something went wrong."); } } public void play() { this.sequencer.start(); } public void stop() { this.sequencer.stop(); } } 

All I have to do is create an object of this class and use the play () method to start the music. However, I no longer want to play just one MIDI file: as soon as the song ends, I want to start the next one.

So, I would like to create a playlist, for example:

 sequence.add("midifile1.mid"); sequence.add("midifile2.mid"); 

However, I did not find such an option in the API documentation (there is an createTrack () option - but I don’t understand how to use this to add more music). I could create several objects from this class, but then I still don’t know when one file ended and the next should start.

By looking at online examples, it becomes more confusing. What is the best way to do this?

thanks

+4
source share
1 answer

I was able to solve this using the MetaEventListener to determine when the sequence completed:

  this.sequencer.addMetaEventListener(new MetaEventListener() { public void meta(MetaMessage event) { if (event.getType() == 47) { // start new sequence } } });; 
+1
source

Source: https://habr.com/ru/post/1383632/


All Articles