Advertisement
Guest User

Untitled

a guest
Oct 30th, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. public class CreateSequence{
  2.  
  3. private static final int VELOCITY = 64;
  4.  
  5.  
  6. public static void main(String[] args)
  7. {
  8. if (args.length != 1)
  9. {
  10. printUsageAndExit();
  11. }
  12. File outputFile = new File(args[0]);
  13. Sequence sequence = null;
  14. try
  15. {
  16. sequence = new Sequence(Sequence.PPQ, 1);
  17. }
  18. catch (InvalidMidiDataException e)
  19. {
  20. e.printStackTrace();
  21. System.exit(1);
  22. }
  23.  
  24. Track track = sequence.createTrack();
  25.  
  26. // first chord: C major
  27. track.add(createNoteOnEvent(60, 0));
  28. track.add(createNoteOnEvent(64, 0));
  29. track.add(createNoteOnEvent(67, 0));
  30. track.add(createNoteOnEvent(72, 0));
  31. track.add(createNoteOffEvent(60, 1));
  32. track.add(createNoteOffEvent(64, 1));
  33. track.add(createNoteOffEvent(67, 1));
  34. track.add(createNoteOffEvent(72, 1));
  35.  
  36. // second chord: f minor N
  37. track.add(createNoteOnEvent(53, 1));
  38. track.add(createNoteOnEvent(65, 1));
  39. track.add(createNoteOnEvent(68, 1));
  40. track.add(createNoteOnEvent(73, 1));
  41. track.add(createNoteOffEvent(63, 2));
  42. track.add(createNoteOffEvent(65, 2));
  43. track.add(createNoteOffEvent(68, 2));
  44. track.add(createNoteOffEvent(73, 2));
  45.  
  46. // third chord: C major 6-4
  47. track.add(createNoteOnEvent(55, 2));
  48. track.add(createNoteOnEvent(64, 2));
  49. track.add(createNoteOnEvent(67, 2));
  50. track.add(createNoteOnEvent(72, 2));
  51. track.add(createNoteOffEvent(64, 3));
  52. track.add(createNoteOffEvent(72, 3));
  53.  
  54. // forth chord: G major 7
  55. track.add(createNoteOnEvent(65, 3));
  56. track.add(createNoteOnEvent(71, 3));
  57. track.add(createNoteOffEvent(55, 4));
  58. track.add(createNoteOffEvent(65, 4));
  59. track.add(createNoteOffEvent(67, 4));
  60. track.add(createNoteOffEvent(71, 4));
  61.  
  62. // fifth chord: C major
  63. track.add(createNoteOnEvent(48, 4));
  64. track.add(createNoteOnEvent(64, 4));
  65. track.add(createNoteOnEvent(67, 4));
  66. track.add(createNoteOnEvent(72, 4));
  67. track.add(createNoteOffEvent(48, 8));
  68. track.add(createNoteOffEvent(64, 8));
  69. track.add(createNoteOffEvent(67, 8));
  70. track.add(createNoteOffEvent(72, 8));
  71.  
  72. /* Now we just save the Sequence to the file we specified.
  73. The '0' (second parameter) means saving as SMF type 0.
  74. Since we have only one Track, this is actually the only option
  75. (type 1 is for multiple tracks).
  76. */
  77. try
  78. {
  79. MidiSystem.write(sequence, 0, outputFile);
  80. }
  81. catch (IOException e)
  82. {
  83. e.printStackTrace();
  84. System.exit(1);
  85. }
  86. }
  87.  
  88.  
  89.  
  90. private static MidiEvent createNoteOnEvent(int nKey, long lTick)
  91. {
  92. return createNoteEvent(ShortMessage.NOTE_ON,
  93. nKey,
  94. VELOCITY,
  95. lTick);
  96. }
  97.  
  98.  
  99.  
  100. private static MidiEvent createNoteOffEvent(int nKey, long lTick)
  101. {
  102. return createNoteEvent(ShortMessage.NOTE_OFF,
  103. nKey,
  104. 0,
  105. lTick);
  106. }
  107.  
  108.  
  109.  
  110. private static MidiEvent createNoteEvent(int nCommand,
  111. int nKey,
  112. int nVelocity,
  113. long lTick)
  114. {
  115. ShortMessage message = new ShortMessage();
  116. try
  117. {
  118. message.setMessage(nCommand,
  119. 0, // always on channel 1
  120. nKey,
  121. nVelocity);
  122. }
  123. catch (InvalidMidiDataException e)
  124. {
  125. e.printStackTrace();
  126. System.exit(1);
  127. }
  128. MidiEvent event = new MidiEvent(message,
  129. lTick);
  130. return event;
  131. }
  132.  
  133.  
  134.  
  135. private static void printUsageAndExit()
  136. {
  137. out("usage:");
  138. out("java CreateSequence <midifile>");
  139. System.exit(1);
  140. }
  141.  
  142.  
  143. private static void out(String strMessage)
  144. {
  145. System.out.println(strMessage);
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement