midilib 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. data/ChangeLog +87 -0
  2. data/Credits +8 -0
  3. data/README +361 -0
  4. data/Rakefile +68 -0
  5. data/TODO +25 -0
  6. data/examples/NoFences.mid +0 -0
  7. data/examples/from_scratch.mid +0 -0
  8. data/examples/from_scratch.rb +56 -0
  9. data/examples/reader2text.rb +220 -0
  10. data/examples/seq2text.rb +41 -0
  11. data/examples/strings.rb +34 -0
  12. data/examples/transpose.rb +75 -0
  13. data/html/classes/MIDI.html +738 -0
  14. data/html/classes/MIDI/ActiveSense.html +156 -0
  15. data/html/classes/MIDI/ActiveSense.src/M000136.html +18 -0
  16. data/html/classes/MIDI/ActiveSense.src/M000137.html +18 -0
  17. data/html/classes/MIDI/ChannelEvent.html +179 -0
  18. data/html/classes/MIDI/ChannelEvent.src/M000124.html +20 -0
  19. data/html/classes/MIDI/ChannelEvent.src/M000125.html +18 -0
  20. data/html/classes/MIDI/ChannelPressure.html +184 -0
  21. data/html/classes/MIDI/ChannelPressure.src/M000088.html +19 -0
  22. data/html/classes/MIDI/ChannelPressure.src/M000089.html +21 -0
  23. data/html/classes/MIDI/ChannelPressure.src/M000090.html +18 -0
  24. data/html/classes/MIDI/Clock.html +156 -0
  25. data/html/classes/MIDI/Clock.src/M000134.html +18 -0
  26. data/html/classes/MIDI/Clock.src/M000135.html +18 -0
  27. data/html/classes/MIDI/Continue.html +156 -0
  28. data/html/classes/MIDI/Continue.src/M000132.html +18 -0
  29. data/html/classes/MIDI/Continue.src/M000133.html +18 -0
  30. data/html/classes/MIDI/Controller.html +189 -0
  31. data/html/classes/MIDI/Controller.src/M000129.html +21 -0
  32. data/html/classes/MIDI/Controller.src/M000130.html +22 -0
  33. data/html/classes/MIDI/Controller.src/M000131.html +18 -0
  34. data/html/classes/MIDI/Event.html +424 -0
  35. data/html/classes/MIDI/Event.src/M000145.html +27 -0
  36. data/html/classes/MIDI/Event.src/M000146.html +18 -0
  37. data/html/classes/MIDI/Event.src/M000147.html +18 -0
  38. data/html/classes/MIDI/Event.src/M000148.html +18 -0
  39. data/html/classes/MIDI/Event.src/M000149.html +18 -0
  40. data/html/classes/MIDI/Event.src/M000150.html +18 -0
  41. data/html/classes/MIDI/Event.src/M000151.html +18 -0
  42. data/html/classes/MIDI/Event.src/M000152.html +18 -0
  43. data/html/classes/MIDI/Event.src/M000153.html +18 -0
  44. data/html/classes/MIDI/Event.src/M000154.html +22 -0
  45. data/html/classes/MIDI/Event.src/M000155.html +18 -0
  46. data/html/classes/MIDI/Event.src/M000156.html +18 -0
  47. data/html/classes/MIDI/Event.src/M000157.html +18 -0
  48. data/html/classes/MIDI/IO.html +121 -0
  49. data/html/classes/MIDI/IO/MIDIFile.html +925 -0
  50. data/html/classes/MIDI/IO/MIDIFile.src/M000028.html +22 -0
  51. data/html/classes/MIDI/IO/MIDIFile.src/M000029.html +24 -0
  52. data/html/classes/MIDI/IO/MIDIFile.src/M000030.html +19 -0
  53. data/html/classes/MIDI/IO/MIDIFile.src/M000031.html +19 -0
  54. data/html/classes/MIDI/IO/MIDIFile.src/M000032.html +17 -0
  55. data/html/classes/MIDI/IO/MIDIFile.src/M000033.html +17 -0
  56. data/html/classes/MIDI/IO/MIDIFile.src/M000034.html +17 -0
  57. data/html/classes/MIDI/IO/MIDIFile.src/M000035.html +17 -0
  58. data/html/classes/MIDI/IO/MIDIFile.src/M000036.html +17 -0
  59. data/html/classes/MIDI/IO/MIDIFile.src/M000037.html +17 -0
  60. data/html/classes/MIDI/IO/MIDIFile.src/M000038.html +17 -0
  61. data/html/classes/MIDI/IO/MIDIFile.src/M000039.html +17 -0
  62. data/html/classes/MIDI/IO/MIDIFile.src/M000040.html +17 -0
  63. data/html/classes/MIDI/IO/MIDIFile.src/M000041.html +17 -0
  64. data/html/classes/MIDI/IO/MIDIFile.src/M000042.html +17 -0
  65. data/html/classes/MIDI/IO/MIDIFile.src/M000043.html +17 -0
  66. data/html/classes/MIDI/IO/MIDIFile.src/M000044.html +17 -0
  67. data/html/classes/MIDI/IO/MIDIFile.src/M000045.html +17 -0
  68. data/html/classes/MIDI/IO/MIDIFile.src/M000046.html +17 -0
  69. data/html/classes/MIDI/IO/MIDIFile.src/M000047.html +17 -0
  70. data/html/classes/MIDI/IO/MIDIFile.src/M000048.html +17 -0
  71. data/html/classes/MIDI/IO/MIDIFile.src/M000049.html +17 -0
  72. data/html/classes/MIDI/IO/MIDIFile.src/M000050.html +17 -0
  73. data/html/classes/MIDI/IO/MIDIFile.src/M000051.html +17 -0
  74. data/html/classes/MIDI/IO/MIDIFile.src/M000052.html +17 -0
  75. data/html/classes/MIDI/IO/MIDIFile.src/M000053.html +43 -0
  76. data/html/classes/MIDI/IO/MIDIFile.src/M000054.html +34 -0
  77. data/html/classes/MIDI/IO/MIDIFile.src/M000055.html +96 -0
  78. data/html/classes/MIDI/IO/MIDIFile.src/M000056.html +18 -0
  79. data/html/classes/MIDI/IO/MIDIFile.src/M000057.html +48 -0
  80. data/html/classes/MIDI/IO/MIDIFile.src/M000058.html +42 -0
  81. data/html/classes/MIDI/IO/MIDIFile.src/M000059.html +19 -0
  82. data/html/classes/MIDI/IO/MIDIFile.src/M000060.html +19 -0
  83. data/html/classes/MIDI/IO/MIDIFile.src/M000061.html +20 -0
  84. data/html/classes/MIDI/IO/MIDIFile.src/M000062.html +21 -0
  85. data/html/classes/MIDI/IO/MIDIFile.src/M000063.html +31 -0
  86. data/html/classes/MIDI/IO/MIDIFile.src/M000064.html +20 -0
  87. data/html/classes/MIDI/IO/MIDIFile.src/M000065.html +22 -0
  88. data/html/classes/MIDI/IO/MIDIFile.src/M000066.html +30 -0
  89. data/html/classes/MIDI/IO/MIDIFile.src/M000067.html +18 -0
  90. data/html/classes/MIDI/IO/MIDIFile.src/M000068.html +20 -0
  91. data/html/classes/MIDI/IO/MIDIFile.src/M000069.html +18 -0
  92. data/html/classes/MIDI/IO/MIDIFile.src/M000070.html +18 -0
  93. data/html/classes/MIDI/IO/SeqReader.html +460 -0
  94. data/html/classes/MIDI/IO/SeqReader.src/M000001.html +22 -0
  95. data/html/classes/MIDI/IO/SeqReader.src/M000002.html +22 -0
  96. data/html/classes/MIDI/IO/SeqReader.src/M000003.html +21 -0
  97. data/html/classes/MIDI/IO/SeqReader.src/M000004.html +34 -0
  98. data/html/classes/MIDI/IO/SeqReader.src/M000005.html +26 -0
  99. data/html/classes/MIDI/IO/SeqReader.src/M000006.html +28 -0
  100. data/html/classes/MIDI/IO/SeqReader.src/M000007.html +21 -0
  101. data/html/classes/MIDI/IO/SeqReader.src/M000008.html +19 -0
  102. data/html/classes/MIDI/IO/SeqReader.src/M000009.html +19 -0
  103. data/html/classes/MIDI/IO/SeqReader.src/M000010.html +19 -0
  104. data/html/classes/MIDI/IO/SeqReader.src/M000011.html +19 -0
  105. data/html/classes/MIDI/IO/SeqReader.src/M000012.html +19 -0
  106. data/html/classes/MIDI/IO/SeqReader.src/M000013.html +18 -0
  107. data/html/classes/MIDI/IO/SeqReader.src/M000014.html +18 -0
  108. data/html/classes/MIDI/IO/SeqReader.src/M000015.html +27 -0
  109. data/html/classes/MIDI/IO/SeqReader.src/M000016.html +18 -0
  110. data/html/classes/MIDI/IO/SeqReader.src/M000017.html +18 -0
  111. data/html/classes/MIDI/IO/SeqReader.src/M000018.html +18 -0
  112. data/html/classes/MIDI/IO/SeqWriter.html +267 -0
  113. data/html/classes/MIDI/IO/SeqWriter.src/M000019.html +19 -0
  114. data/html/classes/MIDI/IO/SeqWriter.src/M000020.html +25 -0
  115. data/html/classes/MIDI/IO/SeqWriter.src/M000021.html +22 -0
  116. data/html/classes/MIDI/IO/SeqWriter.src/M000022.html +54 -0
  117. data/html/classes/MIDI/IO/SeqWriter.src/M000023.html +49 -0
  118. data/html/classes/MIDI/IO/SeqWriter.src/M000024.html +21 -0
  119. data/html/classes/MIDI/IO/SeqWriter.src/M000025.html +19 -0
  120. data/html/classes/MIDI/IO/SeqWriter.src/M000026.html +24 -0
  121. data/html/classes/MIDI/IO/SeqWriter.src/M000027.html +26 -0
  122. data/html/classes/MIDI/Marker.html +139 -0
  123. data/html/classes/MIDI/Marker.src/M000107.html +18 -0
  124. data/html/classes/MIDI/MetaEvent.html +189 -0
  125. data/html/classes/MIDI/MetaEvent.src/M000167.html +21 -0
  126. data/html/classes/MIDI/MetaEvent.src/M000168.html +23 -0
  127. data/html/classes/MIDI/MetaEvent.src/M000169.html +53 -0
  128. data/html/classes/MIDI/NoteEvent.html +233 -0
  129. data/html/classes/MIDI/NoteEvent.src/M000091.html +21 -0
  130. data/html/classes/MIDI/NoteEvent.src/M000092.html +20 -0
  131. data/html/classes/MIDI/NoteEvent.src/M000093.html +18 -0
  132. data/html/classes/MIDI/NoteEvent.src/M000094.html +22 -0
  133. data/html/classes/MIDI/NoteOffEvent.html +169 -0
  134. data/html/classes/MIDI/NoteOffEvent.src/M000086.html +19 -0
  135. data/html/classes/MIDI/NoteOffEvent.src/M000087.html +19 -0
  136. data/html/classes/MIDI/NoteOnEvent.html +169 -0
  137. data/html/classes/MIDI/NoteOnEvent.src/M000102.html +19 -0
  138. data/html/classes/MIDI/NoteOnEvent.src/M000103.html +19 -0
  139. data/html/classes/MIDI/PitchBend.html +184 -0
  140. data/html/classes/MIDI/PitchBend.src/M000104.html +19 -0
  141. data/html/classes/MIDI/PitchBend.src/M000105.html +22 -0
  142. data/html/classes/MIDI/PitchBend.src/M000106.html +18 -0
  143. data/html/classes/MIDI/PolyPressure.html +186 -0
  144. data/html/classes/MIDI/PolyPressure.src/M000170.html +18 -0
  145. data/html/classes/MIDI/PolyPressure.src/M000171.html +18 -0
  146. data/html/classes/MIDI/PolyPressure.src/M000172.html +18 -0
  147. data/html/classes/MIDI/PolyPressure.src/M000173.html +19 -0
  148. data/html/classes/MIDI/ProgramChange.html +184 -0
  149. data/html/classes/MIDI/ProgramChange.src/M000099.html +19 -0
  150. data/html/classes/MIDI/ProgramChange.src/M000100.html +21 -0
  151. data/html/classes/MIDI/ProgramChange.src/M000101.html +18 -0
  152. data/html/classes/MIDI/Realtime.html +171 -0
  153. data/html/classes/MIDI/Realtime.src/M000083.html +19 -0
  154. data/html/classes/MIDI/Realtime.src/M000084.html +20 -0
  155. data/html/classes/MIDI/Realtime.src/M000085.html +18 -0
  156. data/html/classes/MIDI/Sequence.html +469 -0
  157. data/html/classes/MIDI/Sequence.src/M000108.html +28 -0
  158. data/html/classes/MIDI/Sequence.src/M000109.html +21 -0
  159. data/html/classes/MIDI/Sequence.src/M000110.html +22 -0
  160. data/html/classes/MIDI/Sequence.src/M000113.html +18 -0
  161. data/html/classes/MIDI/Sequence.src/M000114.html +27 -0
  162. data/html/classes/MIDI/Sequence.src/M000115.html +18 -0
  163. data/html/classes/MIDI/Sequence.src/M000116.html +19 -0
  164. data/html/classes/MIDI/Sequence.src/M000117.html +19 -0
  165. data/html/classes/MIDI/Sequence.src/M000118.html +20 -0
  166. data/html/classes/MIDI/Sequence.src/M000119.html +19 -0
  167. data/html/classes/MIDI/Sequence.src/M000120.html +18 -0
  168. data/html/classes/MIDI/SongPointer.html +184 -0
  169. data/html/classes/MIDI/SongPointer.src/M000138.html +19 -0
  170. data/html/classes/MIDI/SongPointer.src/M000139.html +22 -0
  171. data/html/classes/MIDI/SongPointer.src/M000140.html +18 -0
  172. data/html/classes/MIDI/SongSelect.html +184 -0
  173. data/html/classes/MIDI/SongSelect.src/M000126.html +19 -0
  174. data/html/classes/MIDI/SongSelect.src/M000127.html +21 -0
  175. data/html/classes/MIDI/SongSelect.src/M000128.html +18 -0
  176. data/html/classes/MIDI/Start.html +156 -0
  177. data/html/classes/MIDI/Start.src/M000097.html +18 -0
  178. data/html/classes/MIDI/Start.src/M000098.html +18 -0
  179. data/html/classes/MIDI/Stop.html +156 -0
  180. data/html/classes/MIDI/Stop.src/M000095.html +18 -0
  181. data/html/classes/MIDI/Stop.src/M000096.html +18 -0
  182. data/html/classes/MIDI/SystemCommon.html +139 -0
  183. data/html/classes/MIDI/SystemCommon.src/M000144.html +19 -0
  184. data/html/classes/MIDI/SystemExclusive.html +184 -0
  185. data/html/classes/MIDI/SystemExclusive.src/M000141.html +19 -0
  186. data/html/classes/MIDI/SystemExclusive.src/M000142.html +23 -0
  187. data/html/classes/MIDI/SystemExclusive.src/M000143.html +18 -0
  188. data/html/classes/MIDI/SystemReset.html +156 -0
  189. data/html/classes/MIDI/SystemReset.src/M000081.html +18 -0
  190. data/html/classes/MIDI/SystemReset.src/M000082.html +18 -0
  191. data/html/classes/MIDI/Tempo.html +250 -0
  192. data/html/classes/MIDI/Tempo.src/M000158.html +18 -0
  193. data/html/classes/MIDI/Tempo.src/M000159.html +18 -0
  194. data/html/classes/MIDI/Tempo.src/M000160.html +18 -0
  195. data/html/classes/MIDI/Tempo.src/M000161.html +18 -0
  196. data/html/classes/MIDI/Tempo.src/M000162.html +18 -0
  197. data/html/classes/MIDI/Tempo.src/M000163.html +25 -0
  198. data/html/classes/MIDI/Tempo.src/M000164.html +18 -0
  199. data/html/classes/MIDI/Track.html +380 -0
  200. data/html/classes/MIDI/Track.src/M000071.html +23 -0
  201. data/html/classes/MIDI/Track.src/M000072.html +21 -0
  202. data/html/classes/MIDI/Track.src/M000073.html +26 -0
  203. data/html/classes/MIDI/Track.src/M000074.html +18 -0
  204. data/html/classes/MIDI/Track.src/M000075.html +22 -0
  205. data/html/classes/MIDI/Track.src/M000076.html +20 -0
  206. data/html/classes/MIDI/Track.src/M000077.html +22 -0
  207. data/html/classes/MIDI/Track.src/M000078.html +22 -0
  208. data/html/classes/MIDI/Track.src/M000079.html +18 -0
  209. data/html/classes/MIDI/Track.src/M000080.html +19 -0
  210. data/html/classes/MIDI/TuneRequest.html +171 -0
  211. data/html/classes/MIDI/TuneRequest.src/M000121.html +18 -0
  212. data/html/classes/MIDI/TuneRequest.src/M000122.html +20 -0
  213. data/html/classes/MIDI/TuneRequest.src/M000123.html +18 -0
  214. data/html/classes/MIDI/Utils.html +190 -0
  215. data/html/classes/MIDI/Utils.src/M000165.html +20 -0
  216. data/html/classes/MIDI/Utils.src/M000166.html +25 -0
  217. data/html/created.rid +1 -0
  218. data/html/files/README.html +599 -0
  219. data/html/files/TODO.html +142 -0
  220. data/html/files/lib/midilib/consts_rb.html +107 -0
  221. data/html/files/lib/midilib/event_rb.html +109 -0
  222. data/html/files/lib/midilib/info_rb.html +101 -0
  223. data/html/files/lib/midilib/io/midifile_rb.html +108 -0
  224. data/html/files/lib/midilib/io/seqreader_rb.html +110 -0
  225. data/html/files/lib/midilib/io/seqwriter_rb.html +115 -0
  226. data/html/files/lib/midilib/sequence_rb.html +109 -0
  227. data/html/files/lib/midilib/track_rb.html +108 -0
  228. data/html/files/lib/midilib/utils_rb.html +101 -0
  229. data/html/files/lib/midilib_rb.html +124 -0
  230. data/html/fr_class_index.html +59 -0
  231. data/html/fr_file_index.html +38 -0
  232. data/html/fr_method_index.html +199 -0
  233. data/html/index.html +24 -0
  234. data/html/rdoc-style.css +208 -0
  235. data/install.rb +57 -0
  236. data/lib/midilib.rb +16 -0
  237. data/lib/midilib/consts.rb +422 -0
  238. data/lib/midilib/event.rb +559 -0
  239. data/lib/midilib/info.rb +9 -0
  240. data/lib/midilib/io/midifile.rb +446 -0
  241. data/lib/midilib/io/seqreader.rb +198 -0
  242. data/lib/midilib/io/seqwriter.rb +151 -0
  243. data/lib/midilib/sequence.rb +144 -0
  244. data/lib/midilib/track.rb +115 -0
  245. data/lib/midilib/utils.rb +36 -0
  246. data/test/event_equality.rb +81 -0
  247. data/test/test_event.rb +116 -0
  248. data/test/test_io.rb +55 -0
  249. data/test/test_sequence.rb +68 -0
  250. data/test/test_track.rb +111 -0
  251. data/test/test_varlen.rb +40 -0
  252. metadata +330 -0
@@ -0,0 +1,111 @@
1
+ # Start looking for MIDI classes in the directory above this one.
2
+ # This forces us to use the local copy of MIDI, even if there is
3
+ # a previously installed version out there somewhere.
4
+ $LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
5
+
6
+ require 'test/unit'
7
+ require 'midilib'
8
+
9
+ class TrackTester < Test::Unit::TestCase
10
+
11
+ def setup
12
+ @seq = MIDI::Sequence.new
13
+ @track = MIDI::Track.new(@seq)
14
+ @seq.tracks << @track
15
+ 3.times { @track.events << MIDI::NoteOnEvent.new(0, 64, 64, 100) }
16
+ @track.recalc_times
17
+ end
18
+
19
+ def test_basics
20
+ assert_equal(3, @track.events.length)
21
+ 3.times { | i |
22
+ assert_equal(100, @track.events[i].delta_time)
23
+ assert_equal((i+1) * 100, @track.events[i].time_from_start)
24
+ }
25
+ assert_equal(MIDI::Track::UNNAMED, @track.name)
26
+ end
27
+
28
+ def test_append_event
29
+ @track.events << MIDI::NoteOnEvent.new(0, 64, 64, 100)
30
+ @track.recalc_times
31
+ assert_equal(4, @track.events.length)
32
+ 4.times { | i |
33
+ assert_equal((i+1) * 100, @track.events[i].time_from_start)
34
+ }
35
+ end
36
+
37
+ def test_append_list
38
+ @track.events +=
39
+ (1..12).collect { | i | MIDI::NoteOnEvent.new(0, 64, 64, 3) }
40
+ @track.recalc_times
41
+
42
+ 3.times { | i |
43
+ assert_equal(100, @track.events[i].delta_time)
44
+ assert_equal((i+1) * 100, @track.events[i].time_from_start)
45
+ }
46
+ 12.times { | i |
47
+ assert_equal(3, @track.events[3 + i].delta_time)
48
+ assert_equal(300 + ((i+1) * 3),
49
+ @track.events[3 + i].time_from_start)
50
+ }
51
+ end
52
+
53
+ def test_insert
54
+ @track.events[1,0] = MIDI::NoteOnEvent.new(0, 64, 64, 3)
55
+ @track.recalc_times
56
+ assert_equal(100, @track.events[0].time_from_start)
57
+ assert_equal(103, @track.events[1].time_from_start)
58
+ assert_equal(203, @track.events[2].time_from_start)
59
+ assert_equal(303, @track.events[3].time_from_start)
60
+ end
61
+
62
+ def test_merge
63
+ list = (1..12).collect { | i | MIDI::NoteOnEvent.new(0, 64, 64, 10) }
64
+ @track.merge(list)
65
+ assert_equal(15, @track.events.length)
66
+ assert_equal(10, @track.events[0].time_from_start)
67
+ assert_equal(10, @track.events[0].delta_time)
68
+ assert_equal(20, @track.events[1].time_from_start)
69
+ assert_equal(10, @track.events[1].delta_time)
70
+ assert_equal(30, @track.events[2].time_from_start)
71
+ assert_equal(40, @track.events[3].time_from_start)
72
+ assert_equal(50, @track.events[4].time_from_start)
73
+ assert_equal(60, @track.events[5].time_from_start)
74
+ assert_equal(70, @track.events[6].time_from_start)
75
+ assert_equal(80, @track.events[7].time_from_start)
76
+ assert_equal(90, @track.events[8].time_from_start)
77
+ assert_equal(100, @track.events[9].time_from_start)
78
+ assert_equal(100, @track.events[10].time_from_start)
79
+ assert_equal(110, @track.events[11].time_from_start)
80
+ assert_equal(120, @track.events[12].time_from_start)
81
+ assert_equal(200, @track.events[13].time_from_start)
82
+ assert_equal(300, @track.events[14].time_from_start)
83
+ end
84
+
85
+ def test_recalc_delta_from_times
86
+ @track.each { | event | event.delta_time = 0 }
87
+ @track.recalc_delta_from_times
88
+ @track.each { | event | assert_equal(100, event.delta_time) }
89
+ end
90
+
91
+ def test_sort
92
+ e = @track.events[0]
93
+ e.time_from_start = 300
94
+ e = @track.events[1]
95
+ e.time_from_start = 100
96
+ e = @track.events[2]
97
+ e.time_from_start = 200
98
+
99
+ @track.sort
100
+
101
+ assert_equal(100, @track.events[0].time_from_start)
102
+ assert_equal(100, @track.events[0].delta_time)
103
+
104
+ assert_equal(200, @track.events[1].time_from_start)
105
+ assert_equal(100, @track.events[1].delta_time)
106
+
107
+ assert_equal(300, @track.events[2].time_from_start)
108
+ assert_equal(100, @track.events[2].delta_time)
109
+ end
110
+
111
+ end
@@ -0,0 +1,40 @@
1
+ require 'midilib'
2
+ require 'test/unit'
3
+
4
+ # Start looking for MIDI classes in the directory above this one.
5
+ # This forces us to use the local copy of MIDI, even if there is
6
+ # a previously installed version out there somewhere.
7
+ $LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
8
+
9
+ class VarLenTester < Test::Unit::TestCase
10
+
11
+ VAR_LEN_TEST_DATA = {
12
+ 0x00000000 => 0x00,
13
+ 0x00000040 => 0x40,
14
+ 0x0000007F => 0x7F,
15
+ 0x00000080 => 0x8100,
16
+ 0x00002000 => 0xC000,
17
+ 0x00003FFF => 0xFF7F,
18
+ 0x00004000 => 0x818000,
19
+ 0x00100000 => 0xC08000,
20
+ 0x001FFFFF => 0xFFFF7F,
21
+ 0x00200000 => 0x81808000,
22
+ 0x08000000 => 0xC0808000,
23
+ 0x0FFFFFFF => 0xFFFFFF7F,
24
+ }
25
+
26
+ def num_to_var_len(num, answer)
27
+ varlen = MIDI::Utils.as_var_len(num)
28
+ varlen.reverse.each_byte { | b |
29
+ assert_equal(answer & 0xff, b)
30
+ answer = answer >> 8
31
+ }
32
+ end
33
+
34
+ def test_num_to_var_len
35
+ VAR_LEN_TEST_DATA.each { | varlen, answer |
36
+ num_to_var_len(varlen, answer)
37
+ }
38
+ end
39
+
40
+ end
metadata ADDED
@@ -0,0 +1,330 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.8
3
+ specification_version: 1
4
+ name: midilib
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.8.4
7
+ date: 2005-03-21
8
+ summary: MIDI file and event manipulation library
9
+ require_paths:
10
+ - lib
11
+ email: jimm@io.com
12
+ homepage: http://midilib.rubyforge.org
13
+ rubyforge_project: midilib
14
+ description: midilib is a pure Ruby MIDI library useful for reading and writing standard MIDI files and manipulating MIDI event data.
15
+ autorequire: midilib
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ authors:
28
+ - Jim Menard
29
+ files:
30
+ - ChangeLog
31
+ - Credits
32
+ - README
33
+ - Rakefile
34
+ - TODO
35
+ - examples/from_scratch.mid
36
+ - examples/from_scratch.rb
37
+ - examples/NoFences.mid
38
+ - examples/reader2text.rb
39
+ - examples/seq2text.rb
40
+ - examples/strings.rb
41
+ - examples/transpose.rb
42
+ - html/classes
43
+ - html/created.rid
44
+ - html/files
45
+ - html/fr_class_index.html
46
+ - html/fr_file_index.html
47
+ - html/fr_method_index.html
48
+ - html/index.html
49
+ - html/rdoc-style.css
50
+ - html/classes/MIDI
51
+ - html/classes/MIDI.html
52
+ - html/classes/MIDI/ActiveSense.html
53
+ - html/classes/MIDI/ActiveSense.src
54
+ - html/classes/MIDI/ChannelEvent.html
55
+ - html/classes/MIDI/ChannelEvent.src
56
+ - html/classes/MIDI/ChannelPressure.html
57
+ - html/classes/MIDI/ChannelPressure.src
58
+ - html/classes/MIDI/Clock.html
59
+ - html/classes/MIDI/Clock.src
60
+ - html/classes/MIDI/Continue.html
61
+ - html/classes/MIDI/Continue.src
62
+ - html/classes/MIDI/Controller.html
63
+ - html/classes/MIDI/Controller.src
64
+ - html/classes/MIDI/Event.html
65
+ - html/classes/MIDI/Event.src
66
+ - html/classes/MIDI/IO
67
+ - html/classes/MIDI/IO.html
68
+ - html/classes/MIDI/Marker.html
69
+ - html/classes/MIDI/Marker.src
70
+ - html/classes/MIDI/MetaEvent.html
71
+ - html/classes/MIDI/MetaEvent.src
72
+ - html/classes/MIDI/NoteEvent.html
73
+ - html/classes/MIDI/NoteEvent.src
74
+ - html/classes/MIDI/NoteOffEvent.html
75
+ - html/classes/MIDI/NoteOffEvent.src
76
+ - html/classes/MIDI/NoteOnEvent.html
77
+ - html/classes/MIDI/NoteOnEvent.src
78
+ - html/classes/MIDI/PitchBend.html
79
+ - html/classes/MIDI/PitchBend.src
80
+ - html/classes/MIDI/PolyPressure.html
81
+ - html/classes/MIDI/PolyPressure.src
82
+ - html/classes/MIDI/ProgramChange.html
83
+ - html/classes/MIDI/ProgramChange.src
84
+ - html/classes/MIDI/Realtime.html
85
+ - html/classes/MIDI/Realtime.src
86
+ - html/classes/MIDI/Sequence.html
87
+ - html/classes/MIDI/Sequence.src
88
+ - html/classes/MIDI/SongPointer.html
89
+ - html/classes/MIDI/SongPointer.src
90
+ - html/classes/MIDI/SongSelect.html
91
+ - html/classes/MIDI/SongSelect.src
92
+ - html/classes/MIDI/Start.html
93
+ - html/classes/MIDI/Start.src
94
+ - html/classes/MIDI/Stop.html
95
+ - html/classes/MIDI/Stop.src
96
+ - html/classes/MIDI/SystemCommon.html
97
+ - html/classes/MIDI/SystemCommon.src
98
+ - html/classes/MIDI/SystemExclusive.html
99
+ - html/classes/MIDI/SystemExclusive.src
100
+ - html/classes/MIDI/SystemReset.html
101
+ - html/classes/MIDI/SystemReset.src
102
+ - html/classes/MIDI/Tempo.html
103
+ - html/classes/MIDI/Tempo.src
104
+ - html/classes/MIDI/Track.html
105
+ - html/classes/MIDI/Track.src
106
+ - html/classes/MIDI/TuneRequest.html
107
+ - html/classes/MIDI/TuneRequest.src
108
+ - html/classes/MIDI/Utils.html
109
+ - html/classes/MIDI/Utils.src
110
+ - html/classes/MIDI/ActiveSense.src/M000136.html
111
+ - html/classes/MIDI/ActiveSense.src/M000137.html
112
+ - html/classes/MIDI/ChannelEvent.src/M000124.html
113
+ - html/classes/MIDI/ChannelEvent.src/M000125.html
114
+ - html/classes/MIDI/ChannelPressure.src/M000088.html
115
+ - html/classes/MIDI/ChannelPressure.src/M000089.html
116
+ - html/classes/MIDI/ChannelPressure.src/M000090.html
117
+ - html/classes/MIDI/Clock.src/M000134.html
118
+ - html/classes/MIDI/Clock.src/M000135.html
119
+ - html/classes/MIDI/Continue.src/M000132.html
120
+ - html/classes/MIDI/Continue.src/M000133.html
121
+ - html/classes/MIDI/Controller.src/M000129.html
122
+ - html/classes/MIDI/Controller.src/M000130.html
123
+ - html/classes/MIDI/Controller.src/M000131.html
124
+ - html/classes/MIDI/Event.src/M000145.html
125
+ - html/classes/MIDI/Event.src/M000146.html
126
+ - html/classes/MIDI/Event.src/M000147.html
127
+ - html/classes/MIDI/Event.src/M000148.html
128
+ - html/classes/MIDI/Event.src/M000149.html
129
+ - html/classes/MIDI/Event.src/M000150.html
130
+ - html/classes/MIDI/Event.src/M000151.html
131
+ - html/classes/MIDI/Event.src/M000152.html
132
+ - html/classes/MIDI/Event.src/M000153.html
133
+ - html/classes/MIDI/Event.src/M000154.html
134
+ - html/classes/MIDI/Event.src/M000155.html
135
+ - html/classes/MIDI/Event.src/M000156.html
136
+ - html/classes/MIDI/Event.src/M000157.html
137
+ - html/classes/MIDI/IO/MIDIFile.html
138
+ - html/classes/MIDI/IO/MIDIFile.src
139
+ - html/classes/MIDI/IO/SeqReader.html
140
+ - html/classes/MIDI/IO/SeqReader.src
141
+ - html/classes/MIDI/IO/SeqWriter.html
142
+ - html/classes/MIDI/IO/SeqWriter.src
143
+ - html/classes/MIDI/IO/MIDIFile.src/M000028.html
144
+ - html/classes/MIDI/IO/MIDIFile.src/M000029.html
145
+ - html/classes/MIDI/IO/MIDIFile.src/M000030.html
146
+ - html/classes/MIDI/IO/MIDIFile.src/M000031.html
147
+ - html/classes/MIDI/IO/MIDIFile.src/M000032.html
148
+ - html/classes/MIDI/IO/MIDIFile.src/M000033.html
149
+ - html/classes/MIDI/IO/MIDIFile.src/M000034.html
150
+ - html/classes/MIDI/IO/MIDIFile.src/M000035.html
151
+ - html/classes/MIDI/IO/MIDIFile.src/M000036.html
152
+ - html/classes/MIDI/IO/MIDIFile.src/M000037.html
153
+ - html/classes/MIDI/IO/MIDIFile.src/M000038.html
154
+ - html/classes/MIDI/IO/MIDIFile.src/M000039.html
155
+ - html/classes/MIDI/IO/MIDIFile.src/M000040.html
156
+ - html/classes/MIDI/IO/MIDIFile.src/M000041.html
157
+ - html/classes/MIDI/IO/MIDIFile.src/M000042.html
158
+ - html/classes/MIDI/IO/MIDIFile.src/M000043.html
159
+ - html/classes/MIDI/IO/MIDIFile.src/M000044.html
160
+ - html/classes/MIDI/IO/MIDIFile.src/M000045.html
161
+ - html/classes/MIDI/IO/MIDIFile.src/M000046.html
162
+ - html/classes/MIDI/IO/MIDIFile.src/M000047.html
163
+ - html/classes/MIDI/IO/MIDIFile.src/M000048.html
164
+ - html/classes/MIDI/IO/MIDIFile.src/M000049.html
165
+ - html/classes/MIDI/IO/MIDIFile.src/M000050.html
166
+ - html/classes/MIDI/IO/MIDIFile.src/M000051.html
167
+ - html/classes/MIDI/IO/MIDIFile.src/M000052.html
168
+ - html/classes/MIDI/IO/MIDIFile.src/M000053.html
169
+ - html/classes/MIDI/IO/MIDIFile.src/M000054.html
170
+ - html/classes/MIDI/IO/MIDIFile.src/M000055.html
171
+ - html/classes/MIDI/IO/MIDIFile.src/M000056.html
172
+ - html/classes/MIDI/IO/MIDIFile.src/M000057.html
173
+ - html/classes/MIDI/IO/MIDIFile.src/M000058.html
174
+ - html/classes/MIDI/IO/MIDIFile.src/M000059.html
175
+ - html/classes/MIDI/IO/MIDIFile.src/M000060.html
176
+ - html/classes/MIDI/IO/MIDIFile.src/M000061.html
177
+ - html/classes/MIDI/IO/MIDIFile.src/M000062.html
178
+ - html/classes/MIDI/IO/MIDIFile.src/M000063.html
179
+ - html/classes/MIDI/IO/MIDIFile.src/M000064.html
180
+ - html/classes/MIDI/IO/MIDIFile.src/M000065.html
181
+ - html/classes/MIDI/IO/MIDIFile.src/M000066.html
182
+ - html/classes/MIDI/IO/MIDIFile.src/M000067.html
183
+ - html/classes/MIDI/IO/MIDIFile.src/M000068.html
184
+ - html/classes/MIDI/IO/MIDIFile.src/M000069.html
185
+ - html/classes/MIDI/IO/MIDIFile.src/M000070.html
186
+ - html/classes/MIDI/IO/SeqReader.src/M000001.html
187
+ - html/classes/MIDI/IO/SeqReader.src/M000002.html
188
+ - html/classes/MIDI/IO/SeqReader.src/M000003.html
189
+ - html/classes/MIDI/IO/SeqReader.src/M000004.html
190
+ - html/classes/MIDI/IO/SeqReader.src/M000005.html
191
+ - html/classes/MIDI/IO/SeqReader.src/M000006.html
192
+ - html/classes/MIDI/IO/SeqReader.src/M000007.html
193
+ - html/classes/MIDI/IO/SeqReader.src/M000008.html
194
+ - html/classes/MIDI/IO/SeqReader.src/M000009.html
195
+ - html/classes/MIDI/IO/SeqReader.src/M000010.html
196
+ - html/classes/MIDI/IO/SeqReader.src/M000011.html
197
+ - html/classes/MIDI/IO/SeqReader.src/M000012.html
198
+ - html/classes/MIDI/IO/SeqReader.src/M000013.html
199
+ - html/classes/MIDI/IO/SeqReader.src/M000014.html
200
+ - html/classes/MIDI/IO/SeqReader.src/M000015.html
201
+ - html/classes/MIDI/IO/SeqReader.src/M000016.html
202
+ - html/classes/MIDI/IO/SeqReader.src/M000017.html
203
+ - html/classes/MIDI/IO/SeqReader.src/M000018.html
204
+ - html/classes/MIDI/IO/SeqWriter.src/M000019.html
205
+ - html/classes/MIDI/IO/SeqWriter.src/M000020.html
206
+ - html/classes/MIDI/IO/SeqWriter.src/M000021.html
207
+ - html/classes/MIDI/IO/SeqWriter.src/M000022.html
208
+ - html/classes/MIDI/IO/SeqWriter.src/M000023.html
209
+ - html/classes/MIDI/IO/SeqWriter.src/M000024.html
210
+ - html/classes/MIDI/IO/SeqWriter.src/M000025.html
211
+ - html/classes/MIDI/IO/SeqWriter.src/M000026.html
212
+ - html/classes/MIDI/IO/SeqWriter.src/M000027.html
213
+ - html/classes/MIDI/Marker.src/M000107.html
214
+ - html/classes/MIDI/MetaEvent.src/M000167.html
215
+ - html/classes/MIDI/MetaEvent.src/M000168.html
216
+ - html/classes/MIDI/MetaEvent.src/M000169.html
217
+ - html/classes/MIDI/NoteEvent.src/M000091.html
218
+ - html/classes/MIDI/NoteEvent.src/M000092.html
219
+ - html/classes/MIDI/NoteEvent.src/M000093.html
220
+ - html/classes/MIDI/NoteEvent.src/M000094.html
221
+ - html/classes/MIDI/NoteOffEvent.src/M000086.html
222
+ - html/classes/MIDI/NoteOffEvent.src/M000087.html
223
+ - html/classes/MIDI/NoteOnEvent.src/M000102.html
224
+ - html/classes/MIDI/NoteOnEvent.src/M000103.html
225
+ - html/classes/MIDI/PitchBend.src/M000104.html
226
+ - html/classes/MIDI/PitchBend.src/M000105.html
227
+ - html/classes/MIDI/PitchBend.src/M000106.html
228
+ - html/classes/MIDI/PolyPressure.src/M000170.html
229
+ - html/classes/MIDI/PolyPressure.src/M000171.html
230
+ - html/classes/MIDI/PolyPressure.src/M000172.html
231
+ - html/classes/MIDI/PolyPressure.src/M000173.html
232
+ - html/classes/MIDI/ProgramChange.src/M000099.html
233
+ - html/classes/MIDI/ProgramChange.src/M000100.html
234
+ - html/classes/MIDI/ProgramChange.src/M000101.html
235
+ - html/classes/MIDI/Realtime.src/M000083.html
236
+ - html/classes/MIDI/Realtime.src/M000084.html
237
+ - html/classes/MIDI/Realtime.src/M000085.html
238
+ - html/classes/MIDI/Sequence.src/M000108.html
239
+ - html/classes/MIDI/Sequence.src/M000109.html
240
+ - html/classes/MIDI/Sequence.src/M000110.html
241
+ - html/classes/MIDI/Sequence.src/M000113.html
242
+ - html/classes/MIDI/Sequence.src/M000114.html
243
+ - html/classes/MIDI/Sequence.src/M000115.html
244
+ - html/classes/MIDI/Sequence.src/M000116.html
245
+ - html/classes/MIDI/Sequence.src/M000117.html
246
+ - html/classes/MIDI/Sequence.src/M000118.html
247
+ - html/classes/MIDI/Sequence.src/M000119.html
248
+ - html/classes/MIDI/Sequence.src/M000120.html
249
+ - html/classes/MIDI/SongPointer.src/M000138.html
250
+ - html/classes/MIDI/SongPointer.src/M000139.html
251
+ - html/classes/MIDI/SongPointer.src/M000140.html
252
+ - html/classes/MIDI/SongSelect.src/M000126.html
253
+ - html/classes/MIDI/SongSelect.src/M000127.html
254
+ - html/classes/MIDI/SongSelect.src/M000128.html
255
+ - html/classes/MIDI/Start.src/M000097.html
256
+ - html/classes/MIDI/Start.src/M000098.html
257
+ - html/classes/MIDI/Stop.src/M000095.html
258
+ - html/classes/MIDI/Stop.src/M000096.html
259
+ - html/classes/MIDI/SystemCommon.src/M000144.html
260
+ - html/classes/MIDI/SystemExclusive.src/M000141.html
261
+ - html/classes/MIDI/SystemExclusive.src/M000142.html
262
+ - html/classes/MIDI/SystemExclusive.src/M000143.html
263
+ - html/classes/MIDI/SystemReset.src/M000081.html
264
+ - html/classes/MIDI/SystemReset.src/M000082.html
265
+ - html/classes/MIDI/Tempo.src/M000158.html
266
+ - html/classes/MIDI/Tempo.src/M000159.html
267
+ - html/classes/MIDI/Tempo.src/M000160.html
268
+ - html/classes/MIDI/Tempo.src/M000161.html
269
+ - html/classes/MIDI/Tempo.src/M000162.html
270
+ - html/classes/MIDI/Tempo.src/M000163.html
271
+ - html/classes/MIDI/Tempo.src/M000164.html
272
+ - html/classes/MIDI/Track.src/M000071.html
273
+ - html/classes/MIDI/Track.src/M000072.html
274
+ - html/classes/MIDI/Track.src/M000073.html
275
+ - html/classes/MIDI/Track.src/M000074.html
276
+ - html/classes/MIDI/Track.src/M000075.html
277
+ - html/classes/MIDI/Track.src/M000076.html
278
+ - html/classes/MIDI/Track.src/M000077.html
279
+ - html/classes/MIDI/Track.src/M000078.html
280
+ - html/classes/MIDI/Track.src/M000079.html
281
+ - html/classes/MIDI/Track.src/M000080.html
282
+ - html/classes/MIDI/TuneRequest.src/M000121.html
283
+ - html/classes/MIDI/TuneRequest.src/M000122.html
284
+ - html/classes/MIDI/TuneRequest.src/M000123.html
285
+ - html/classes/MIDI/Utils.src/M000165.html
286
+ - html/classes/MIDI/Utils.src/M000166.html
287
+ - html/files/lib
288
+ - html/files/README.html
289
+ - html/files/TODO.html
290
+ - html/files/lib/midilib
291
+ - html/files/lib/midilib_rb.html
292
+ - html/files/lib/midilib/consts_rb.html
293
+ - html/files/lib/midilib/event_rb.html
294
+ - html/files/lib/midilib/info_rb.html
295
+ - html/files/lib/midilib/io
296
+ - html/files/lib/midilib/sequence_rb.html
297
+ - html/files/lib/midilib/track_rb.html
298
+ - html/files/lib/midilib/utils_rb.html
299
+ - html/files/lib/midilib/io/midifile_rb.html
300
+ - html/files/lib/midilib/io/seqreader_rb.html
301
+ - html/files/lib/midilib/io/seqwriter_rb.html
302
+ - install.rb
303
+ - lib/midilib.rb
304
+ - lib/midilib/consts.rb
305
+ - lib/midilib/event.rb
306
+ - lib/midilib/info.rb
307
+ - lib/midilib/sequence.rb
308
+ - lib/midilib/track.rb
309
+ - lib/midilib/utils.rb
310
+ - lib/midilib/io/midifile.rb
311
+ - lib/midilib/io/seqreader.rb
312
+ - lib/midilib/io/seqwriter.rb
313
+ - test/event_equality.rb
314
+ - test/test_event.rb
315
+ - test/test_io.rb
316
+ - test/test_sequence.rb
317
+ - test/test_track.rb
318
+ - test/test_varlen.rb
319
+ test_files: []
320
+ rdoc_options:
321
+ - "--main"
322
+ - README
323
+ extra_rdoc_files:
324
+ - README
325
+ - TODO
326
+ executables: []
327
+ extensions: []
328
+ requirements:
329
+ - none
330
+ dependencies: []