Advertisement
Guest User

Untitled

a guest
Sep 15th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. Sequence sequence = MidiSystem.getSequence(new File(source));
  2. Synthesizer synth = MidiSystem.getSynthesizer();
  3.  
  4. //Gets a MidiMessage and send it to Synthesizer
  5. Receiver rcv = synth.getReceiver();
  6.  
  7. //Contains all tracks and events from MIDI file
  8. Track[] tracks = sequence.getTracks();
  9. synth.open();
  10.  
  11. //If there are tracks
  12. if(tracks != null)
  13. {
  14. //Verify the division type of the sequence (PPQ, SMPT)
  15. if(sequence.getDivisionType() == Sequence.PPQ)
  16. {
  17. int ppq = sequence.getResolution();
  18. //Do the math to get the time (in miliseconds) each tick takes
  19. long tickTime = TicksToMiliseconds(BPM,ppq);
  20. //Returns the number of ticks from the longest track
  21. int longestTrackTicks = LongestTrackTicks(tracks);
  22.  
  23. //Each iteration sends a new message to 'receiver'
  24. for(int tick = 0; tick < maiorTick ; tick++)
  25. {
  26. //Iteration of each track
  27. for(int trackNumber = 0; trackNumber < tracks.length; trackNumber++)
  28. {
  29. //If the number of ticks from a track isn't already finished
  30. //continue
  31. if(tick < tracks[trackNumber].size())
  32. {
  33. MidiEvent ev = tracks[trackNumber].get(tick);
  34. rcv.send(ev.getMessage(),-1);
  35. }
  36. }
  37. Thread.sleep(tickTime);
  38. }
  39.  
  40. }
  41. }
  42. synth.close();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement