midilib 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []