midilib 0.8.4 → 0.8.5

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 (234) hide show
  1. data/ChangeLog +2 -0
  2. data/Credits +4 -0
  3. data/README +23 -6
  4. data/install.rb +1 -1
  5. data/lib/midilib/consts.rb +3 -0
  6. data/lib/midilib/event.rb +2 -2
  7. data/lib/midilib/info.rb +1 -1
  8. data/lib/midilib/io/seqreader.rb +1 -1
  9. data/lib/midilib/track.rb +11 -5
  10. data/test/test_event.rb +50 -0
  11. data/test/test_track.rb +9 -0
  12. metadata +3 -263
  13. data/html/classes/MIDI.html +0 -738
  14. data/html/classes/MIDI/ActiveSense.html +0 -156
  15. data/html/classes/MIDI/ActiveSense.src/M000136.html +0 -18
  16. data/html/classes/MIDI/ActiveSense.src/M000137.html +0 -18
  17. data/html/classes/MIDI/ChannelEvent.html +0 -179
  18. data/html/classes/MIDI/ChannelEvent.src/M000124.html +0 -20
  19. data/html/classes/MIDI/ChannelEvent.src/M000125.html +0 -18
  20. data/html/classes/MIDI/ChannelPressure.html +0 -184
  21. data/html/classes/MIDI/ChannelPressure.src/M000088.html +0 -19
  22. data/html/classes/MIDI/ChannelPressure.src/M000089.html +0 -21
  23. data/html/classes/MIDI/ChannelPressure.src/M000090.html +0 -18
  24. data/html/classes/MIDI/Clock.html +0 -156
  25. data/html/classes/MIDI/Clock.src/M000134.html +0 -18
  26. data/html/classes/MIDI/Clock.src/M000135.html +0 -18
  27. data/html/classes/MIDI/Continue.html +0 -156
  28. data/html/classes/MIDI/Continue.src/M000132.html +0 -18
  29. data/html/classes/MIDI/Continue.src/M000133.html +0 -18
  30. data/html/classes/MIDI/Controller.html +0 -189
  31. data/html/classes/MIDI/Controller.src/M000129.html +0 -21
  32. data/html/classes/MIDI/Controller.src/M000130.html +0 -22
  33. data/html/classes/MIDI/Controller.src/M000131.html +0 -18
  34. data/html/classes/MIDI/Event.html +0 -424
  35. data/html/classes/MIDI/Event.src/M000145.html +0 -27
  36. data/html/classes/MIDI/Event.src/M000146.html +0 -18
  37. data/html/classes/MIDI/Event.src/M000147.html +0 -18
  38. data/html/classes/MIDI/Event.src/M000148.html +0 -18
  39. data/html/classes/MIDI/Event.src/M000149.html +0 -18
  40. data/html/classes/MIDI/Event.src/M000150.html +0 -18
  41. data/html/classes/MIDI/Event.src/M000151.html +0 -18
  42. data/html/classes/MIDI/Event.src/M000152.html +0 -18
  43. data/html/classes/MIDI/Event.src/M000153.html +0 -18
  44. data/html/classes/MIDI/Event.src/M000154.html +0 -22
  45. data/html/classes/MIDI/Event.src/M000155.html +0 -18
  46. data/html/classes/MIDI/Event.src/M000156.html +0 -18
  47. data/html/classes/MIDI/Event.src/M000157.html +0 -18
  48. data/html/classes/MIDI/IO.html +0 -121
  49. data/html/classes/MIDI/IO/MIDIFile.html +0 -925
  50. data/html/classes/MIDI/IO/MIDIFile.src/M000028.html +0 -22
  51. data/html/classes/MIDI/IO/MIDIFile.src/M000029.html +0 -24
  52. data/html/classes/MIDI/IO/MIDIFile.src/M000030.html +0 -19
  53. data/html/classes/MIDI/IO/MIDIFile.src/M000031.html +0 -19
  54. data/html/classes/MIDI/IO/MIDIFile.src/M000032.html +0 -17
  55. data/html/classes/MIDI/IO/MIDIFile.src/M000033.html +0 -17
  56. data/html/classes/MIDI/IO/MIDIFile.src/M000034.html +0 -17
  57. data/html/classes/MIDI/IO/MIDIFile.src/M000035.html +0 -17
  58. data/html/classes/MIDI/IO/MIDIFile.src/M000036.html +0 -17
  59. data/html/classes/MIDI/IO/MIDIFile.src/M000037.html +0 -17
  60. data/html/classes/MIDI/IO/MIDIFile.src/M000038.html +0 -17
  61. data/html/classes/MIDI/IO/MIDIFile.src/M000039.html +0 -17
  62. data/html/classes/MIDI/IO/MIDIFile.src/M000040.html +0 -17
  63. data/html/classes/MIDI/IO/MIDIFile.src/M000041.html +0 -17
  64. data/html/classes/MIDI/IO/MIDIFile.src/M000042.html +0 -17
  65. data/html/classes/MIDI/IO/MIDIFile.src/M000043.html +0 -17
  66. data/html/classes/MIDI/IO/MIDIFile.src/M000044.html +0 -17
  67. data/html/classes/MIDI/IO/MIDIFile.src/M000045.html +0 -17
  68. data/html/classes/MIDI/IO/MIDIFile.src/M000046.html +0 -17
  69. data/html/classes/MIDI/IO/MIDIFile.src/M000047.html +0 -17
  70. data/html/classes/MIDI/IO/MIDIFile.src/M000048.html +0 -17
  71. data/html/classes/MIDI/IO/MIDIFile.src/M000049.html +0 -17
  72. data/html/classes/MIDI/IO/MIDIFile.src/M000050.html +0 -17
  73. data/html/classes/MIDI/IO/MIDIFile.src/M000051.html +0 -17
  74. data/html/classes/MIDI/IO/MIDIFile.src/M000052.html +0 -17
  75. data/html/classes/MIDI/IO/MIDIFile.src/M000053.html +0 -43
  76. data/html/classes/MIDI/IO/MIDIFile.src/M000054.html +0 -34
  77. data/html/classes/MIDI/IO/MIDIFile.src/M000055.html +0 -96
  78. data/html/classes/MIDI/IO/MIDIFile.src/M000056.html +0 -18
  79. data/html/classes/MIDI/IO/MIDIFile.src/M000057.html +0 -48
  80. data/html/classes/MIDI/IO/MIDIFile.src/M000058.html +0 -42
  81. data/html/classes/MIDI/IO/MIDIFile.src/M000059.html +0 -19
  82. data/html/classes/MIDI/IO/MIDIFile.src/M000060.html +0 -19
  83. data/html/classes/MIDI/IO/MIDIFile.src/M000061.html +0 -20
  84. data/html/classes/MIDI/IO/MIDIFile.src/M000062.html +0 -21
  85. data/html/classes/MIDI/IO/MIDIFile.src/M000063.html +0 -31
  86. data/html/classes/MIDI/IO/MIDIFile.src/M000064.html +0 -20
  87. data/html/classes/MIDI/IO/MIDIFile.src/M000065.html +0 -22
  88. data/html/classes/MIDI/IO/MIDIFile.src/M000066.html +0 -30
  89. data/html/classes/MIDI/IO/MIDIFile.src/M000067.html +0 -18
  90. data/html/classes/MIDI/IO/MIDIFile.src/M000068.html +0 -20
  91. data/html/classes/MIDI/IO/MIDIFile.src/M000069.html +0 -18
  92. data/html/classes/MIDI/IO/MIDIFile.src/M000070.html +0 -18
  93. data/html/classes/MIDI/IO/SeqReader.html +0 -460
  94. data/html/classes/MIDI/IO/SeqReader.src/M000001.html +0 -22
  95. data/html/classes/MIDI/IO/SeqReader.src/M000002.html +0 -22
  96. data/html/classes/MIDI/IO/SeqReader.src/M000003.html +0 -21
  97. data/html/classes/MIDI/IO/SeqReader.src/M000004.html +0 -34
  98. data/html/classes/MIDI/IO/SeqReader.src/M000005.html +0 -26
  99. data/html/classes/MIDI/IO/SeqReader.src/M000006.html +0 -28
  100. data/html/classes/MIDI/IO/SeqReader.src/M000007.html +0 -21
  101. data/html/classes/MIDI/IO/SeqReader.src/M000008.html +0 -19
  102. data/html/classes/MIDI/IO/SeqReader.src/M000009.html +0 -19
  103. data/html/classes/MIDI/IO/SeqReader.src/M000010.html +0 -19
  104. data/html/classes/MIDI/IO/SeqReader.src/M000011.html +0 -19
  105. data/html/classes/MIDI/IO/SeqReader.src/M000012.html +0 -19
  106. data/html/classes/MIDI/IO/SeqReader.src/M000013.html +0 -18
  107. data/html/classes/MIDI/IO/SeqReader.src/M000014.html +0 -18
  108. data/html/classes/MIDI/IO/SeqReader.src/M000015.html +0 -27
  109. data/html/classes/MIDI/IO/SeqReader.src/M000016.html +0 -18
  110. data/html/classes/MIDI/IO/SeqReader.src/M000017.html +0 -18
  111. data/html/classes/MIDI/IO/SeqReader.src/M000018.html +0 -18
  112. data/html/classes/MIDI/IO/SeqWriter.html +0 -267
  113. data/html/classes/MIDI/IO/SeqWriter.src/M000019.html +0 -19
  114. data/html/classes/MIDI/IO/SeqWriter.src/M000020.html +0 -25
  115. data/html/classes/MIDI/IO/SeqWriter.src/M000021.html +0 -22
  116. data/html/classes/MIDI/IO/SeqWriter.src/M000022.html +0 -54
  117. data/html/classes/MIDI/IO/SeqWriter.src/M000023.html +0 -49
  118. data/html/classes/MIDI/IO/SeqWriter.src/M000024.html +0 -21
  119. data/html/classes/MIDI/IO/SeqWriter.src/M000025.html +0 -19
  120. data/html/classes/MIDI/IO/SeqWriter.src/M000026.html +0 -24
  121. data/html/classes/MIDI/IO/SeqWriter.src/M000027.html +0 -26
  122. data/html/classes/MIDI/Marker.html +0 -139
  123. data/html/classes/MIDI/Marker.src/M000107.html +0 -18
  124. data/html/classes/MIDI/MetaEvent.html +0 -189
  125. data/html/classes/MIDI/MetaEvent.src/M000167.html +0 -21
  126. data/html/classes/MIDI/MetaEvent.src/M000168.html +0 -23
  127. data/html/classes/MIDI/MetaEvent.src/M000169.html +0 -53
  128. data/html/classes/MIDI/NoteEvent.html +0 -233
  129. data/html/classes/MIDI/NoteEvent.src/M000091.html +0 -21
  130. data/html/classes/MIDI/NoteEvent.src/M000092.html +0 -20
  131. data/html/classes/MIDI/NoteEvent.src/M000093.html +0 -18
  132. data/html/classes/MIDI/NoteEvent.src/M000094.html +0 -22
  133. data/html/classes/MIDI/NoteOffEvent.html +0 -169
  134. data/html/classes/MIDI/NoteOffEvent.src/M000086.html +0 -19
  135. data/html/classes/MIDI/NoteOffEvent.src/M000087.html +0 -19
  136. data/html/classes/MIDI/NoteOnEvent.html +0 -169
  137. data/html/classes/MIDI/NoteOnEvent.src/M000102.html +0 -19
  138. data/html/classes/MIDI/NoteOnEvent.src/M000103.html +0 -19
  139. data/html/classes/MIDI/PitchBend.html +0 -184
  140. data/html/classes/MIDI/PitchBend.src/M000104.html +0 -19
  141. data/html/classes/MIDI/PitchBend.src/M000105.html +0 -22
  142. data/html/classes/MIDI/PitchBend.src/M000106.html +0 -18
  143. data/html/classes/MIDI/PolyPressure.html +0 -186
  144. data/html/classes/MIDI/PolyPressure.src/M000170.html +0 -18
  145. data/html/classes/MIDI/PolyPressure.src/M000171.html +0 -18
  146. data/html/classes/MIDI/PolyPressure.src/M000172.html +0 -18
  147. data/html/classes/MIDI/PolyPressure.src/M000173.html +0 -19
  148. data/html/classes/MIDI/ProgramChange.html +0 -184
  149. data/html/classes/MIDI/ProgramChange.src/M000099.html +0 -19
  150. data/html/classes/MIDI/ProgramChange.src/M000100.html +0 -21
  151. data/html/classes/MIDI/ProgramChange.src/M000101.html +0 -18
  152. data/html/classes/MIDI/Realtime.html +0 -171
  153. data/html/classes/MIDI/Realtime.src/M000083.html +0 -19
  154. data/html/classes/MIDI/Realtime.src/M000084.html +0 -20
  155. data/html/classes/MIDI/Realtime.src/M000085.html +0 -18
  156. data/html/classes/MIDI/Sequence.html +0 -469
  157. data/html/classes/MIDI/Sequence.src/M000108.html +0 -28
  158. data/html/classes/MIDI/Sequence.src/M000109.html +0 -21
  159. data/html/classes/MIDI/Sequence.src/M000110.html +0 -22
  160. data/html/classes/MIDI/Sequence.src/M000113.html +0 -18
  161. data/html/classes/MIDI/Sequence.src/M000114.html +0 -27
  162. data/html/classes/MIDI/Sequence.src/M000115.html +0 -18
  163. data/html/classes/MIDI/Sequence.src/M000116.html +0 -19
  164. data/html/classes/MIDI/Sequence.src/M000117.html +0 -19
  165. data/html/classes/MIDI/Sequence.src/M000118.html +0 -20
  166. data/html/classes/MIDI/Sequence.src/M000119.html +0 -19
  167. data/html/classes/MIDI/Sequence.src/M000120.html +0 -18
  168. data/html/classes/MIDI/SongPointer.html +0 -184
  169. data/html/classes/MIDI/SongPointer.src/M000138.html +0 -19
  170. data/html/classes/MIDI/SongPointer.src/M000139.html +0 -22
  171. data/html/classes/MIDI/SongPointer.src/M000140.html +0 -18
  172. data/html/classes/MIDI/SongSelect.html +0 -184
  173. data/html/classes/MIDI/SongSelect.src/M000126.html +0 -19
  174. data/html/classes/MIDI/SongSelect.src/M000127.html +0 -21
  175. data/html/classes/MIDI/SongSelect.src/M000128.html +0 -18
  176. data/html/classes/MIDI/Start.html +0 -156
  177. data/html/classes/MIDI/Start.src/M000097.html +0 -18
  178. data/html/classes/MIDI/Start.src/M000098.html +0 -18
  179. data/html/classes/MIDI/Stop.html +0 -156
  180. data/html/classes/MIDI/Stop.src/M000095.html +0 -18
  181. data/html/classes/MIDI/Stop.src/M000096.html +0 -18
  182. data/html/classes/MIDI/SystemCommon.html +0 -139
  183. data/html/classes/MIDI/SystemCommon.src/M000144.html +0 -19
  184. data/html/classes/MIDI/SystemExclusive.html +0 -184
  185. data/html/classes/MIDI/SystemExclusive.src/M000141.html +0 -19
  186. data/html/classes/MIDI/SystemExclusive.src/M000142.html +0 -23
  187. data/html/classes/MIDI/SystemExclusive.src/M000143.html +0 -18
  188. data/html/classes/MIDI/SystemReset.html +0 -156
  189. data/html/classes/MIDI/SystemReset.src/M000081.html +0 -18
  190. data/html/classes/MIDI/SystemReset.src/M000082.html +0 -18
  191. data/html/classes/MIDI/Tempo.html +0 -250
  192. data/html/classes/MIDI/Tempo.src/M000158.html +0 -18
  193. data/html/classes/MIDI/Tempo.src/M000159.html +0 -18
  194. data/html/classes/MIDI/Tempo.src/M000160.html +0 -18
  195. data/html/classes/MIDI/Tempo.src/M000161.html +0 -18
  196. data/html/classes/MIDI/Tempo.src/M000162.html +0 -18
  197. data/html/classes/MIDI/Tempo.src/M000163.html +0 -25
  198. data/html/classes/MIDI/Tempo.src/M000164.html +0 -18
  199. data/html/classes/MIDI/Track.html +0 -380
  200. data/html/classes/MIDI/Track.src/M000071.html +0 -23
  201. data/html/classes/MIDI/Track.src/M000072.html +0 -21
  202. data/html/classes/MIDI/Track.src/M000073.html +0 -26
  203. data/html/classes/MIDI/Track.src/M000074.html +0 -18
  204. data/html/classes/MIDI/Track.src/M000075.html +0 -22
  205. data/html/classes/MIDI/Track.src/M000076.html +0 -20
  206. data/html/classes/MIDI/Track.src/M000077.html +0 -22
  207. data/html/classes/MIDI/Track.src/M000078.html +0 -22
  208. data/html/classes/MIDI/Track.src/M000079.html +0 -18
  209. data/html/classes/MIDI/Track.src/M000080.html +0 -19
  210. data/html/classes/MIDI/TuneRequest.html +0 -171
  211. data/html/classes/MIDI/TuneRequest.src/M000121.html +0 -18
  212. data/html/classes/MIDI/TuneRequest.src/M000122.html +0 -20
  213. data/html/classes/MIDI/TuneRequest.src/M000123.html +0 -18
  214. data/html/classes/MIDI/Utils.html +0 -190
  215. data/html/classes/MIDI/Utils.src/M000165.html +0 -20
  216. data/html/classes/MIDI/Utils.src/M000166.html +0 -25
  217. data/html/created.rid +0 -1
  218. data/html/files/README.html +0 -599
  219. data/html/files/TODO.html +0 -142
  220. data/html/files/lib/midilib/consts_rb.html +0 -107
  221. data/html/files/lib/midilib/event_rb.html +0 -109
  222. data/html/files/lib/midilib/info_rb.html +0 -101
  223. data/html/files/lib/midilib/io/midifile_rb.html +0 -108
  224. data/html/files/lib/midilib/io/seqreader_rb.html +0 -110
  225. data/html/files/lib/midilib/io/seqwriter_rb.html +0 -115
  226. data/html/files/lib/midilib/sequence_rb.html +0 -109
  227. data/html/files/lib/midilib/track_rb.html +0 -108
  228. data/html/files/lib/midilib/utils_rb.html +0 -101
  229. data/html/files/lib/midilib_rb.html +0 -124
  230. data/html/fr_class_index.html +0 -59
  231. data/html/fr_file_index.html +0 -38
  232. data/html/fr_method_index.html +0 -199
  233. data/html/index.html +0 -24
  234. data/html/rdoc-style.css +0 -208
data/ChangeLog CHANGED
@@ -1,5 +1,7 @@
1
1
  2005-03-21 Jim Menard <jimm@io.com>
2
2
 
3
+ * Version 0.8.4 released.
4
+
3
5
  * lib/midilib/event.rb (Realtime::initialize): set @is_realtime
4
6
  to true, not false.
5
7
  (SystemCommon::initialize): moved @is_system = true to here
data/Credits CHANGED
@@ -6,3 +6,7 @@ Mike Hall <m3ha11@rcn.com>
6
6
  Found errors in example scripts' $LOAD_PATH and a bug in sequence reading
7
7
  block callback arguments. Found a bug in meta events that caused
8
8
  "Object#type is deprecated" error messages.
9
+
10
+ Emanuel Borsboom <emanuel.borsboom@gmail.com>
11
+
12
+ Found and fixed an error in PitchBend data encoding.
data/README CHANGED
@@ -12,6 +12,19 @@ version of midilib may be downloaded. midilib is also available as a RubyGem.
12
12
 
13
13
  === Recent Changes
14
14
 
15
+ ==== Changes for 0.8.5:
16
+
17
+ * Fixed bugs in MIDI::PitchBend reading and writing, thanks to Emanuel
18
+ Borsboom.
19
+
20
+ * Fixed a bug in MIDI::Track#quantize.
21
+
22
+ * The argument to MIDI::Track#quantize has changed: it is now either a note
23
+ name ("sixteenth", "32nd", "8th triplet") or a length (1 = quarter, 0.25 =
24
+ sixteenth). This is a drastic change that will break all previous calls to
25
+ quantize. However, since that method was broken already, I don't feel it's
26
+ a burden to anybody to change the arguments.
27
+
15
28
  ==== Changes for 0.8.4:
16
29
 
17
30
  * Realtime status bytes now set @is_realtime to true and return true when
@@ -73,8 +86,11 @@ which requires Rake (http://rake.rubyforge.org).
73
86
  To install midilib as a gem, type
74
87
 
75
88
  % gem install midilib
89
+ or
90
+ % gem update midilib
76
91
 
77
- You may need root privileges to install the gem.
92
+ if you already have a previous version. You may need root privileges to
93
+ install or update the gem.
78
94
 
79
95
  === Manual Installation
80
96
 
@@ -263,14 +279,15 @@ note, 1.0/32.0 is a 32nd note (use floating-point numbers to avoid integer
263
279
  rounding), 1.5 is a dotted quarter, etc. See the documentation for that method
264
280
  for more information.
265
281
 
266
- MIDI::Sequence::note_to_length takes a note name and returns a length value
282
+ MIDI::Sequence#note_to_length takes a note name and returns a length value
267
283
  (again, as a multiple of a quarter note). Legal note names are those found in
268
284
  MIDI::Sequence::NOTE_TO_LENGTH, and may begin with "dotted" and/or end with
269
285
  "triplet". For example, "whole", "sixteenth", "32nd", "quarter triplet",
270
286
  "dotted 16th", and "dotted 8th triplet" are all legal note names.
271
287
 
272
- Finally, MIDI::Sequence::note_to_delta takes a note name and returns a
273
- delta time.
288
+ Finally, MIDI::Sequence#note_to_delta takes a note name and returns a delta
289
+ time. It does this by calling note_to_length, then passing the result to
290
+ length_to_delta.
274
291
 
275
292
 
276
293
  === Example Scripts
@@ -334,7 +351,7 @@ the format of MIDI commands.
334
351
  = Administrivia
335
352
 
336
353
  Author:: Jim Menard (mailto:jimm@io.com)
337
- Copyright:: Copyright (c) 2003-2004 Jim Menard
354
+ Copyright:: Copyright (c) 2003-2005 Jim Menard
338
355
  License:: Distributed under the same license as Ruby.
339
356
 
340
357
 
@@ -347,7 +364,7 @@ http://www.ruby-lang.org/en/LICENSE.txt.
347
364
  midilib may be freely copied in its entirety providing this notice, all
348
365
  source code, all documentation, and all other files are included.
349
366
 
350
- midilib is Copyright (c) 2003-2004 by Jim Menard.
367
+ midilib is Copyright (c) 2003-2005 by Jim Menard.
351
368
 
352
369
  The song "No Fences" contained in the MIDI file examples/NoFences.mid is
353
370
  Copyright (c) 1992 by Jim Menard (jimm@io.com). It may be freely used for
data/install.rb CHANGED
@@ -5,7 +5,7 @@
5
5
  # This script installs midilib into the Ruby site-local library directory.
6
6
  #
7
7
  # Author:: Jim Menard (mailto:jimm@io.com)
8
- # Copyright:: Copyright (c) 2003-2004 by Jim Menard
8
+ # Copyright:: Copyright (c) 2003-2005 by Jim Menard
9
9
  # License:: Distributed under the same license as Ruby.
10
10
  #
11
11
 
@@ -90,7 +90,10 @@ module MIDI
90
90
  CC_GEN_PURPOSE_2 = 17
91
91
  CC_GEN_PURPOSE_3 = 18
92
92
  CC_GEN_PURPOSE_4 = 19
93
+
93
94
  # [32 - 63] are LSB for [0 - 31]
95
+ CC_DATA_ENTRY_LSB = 38
96
+
94
97
  #--
95
98
  # Momentaries:
96
99
  #++
data/lib/midilib/event.rb CHANGED
@@ -281,8 +281,8 @@ class PitchBend < ChannelEvent
281
281
  def data_as_bytes
282
282
  data = ''
283
283
  data << (@status + @channel)
284
- data << ((@value >> 8) & 0xff) # msb
285
- data << (@value & 0xff) # lsb
284
+ data << (@value & 0x7f) # lsb
285
+ data << ((@value >> 7) & 0x7f) # msb
286
286
  return data
287
287
  end
288
288
 
data/lib/midilib/info.rb CHANGED
@@ -2,7 +2,7 @@ module MIDI
2
2
 
3
3
  VERSION_MAJOR = 0
4
4
  VERSION_MINOR = 8
5
- VERSION_TWEAK = 4
5
+ VERSION_TWEAK = 5
6
6
  Version = "#{VERSION_MAJOR}.#{VERSION_MINOR}.#{VERSION_TWEAK}"
7
7
  Copyright = 'Copyright (c) 2003-2005 by Jim Menard <jimm@io.com>'
8
8
 
@@ -113,7 +113,7 @@ class SeqReader < MIDIFile
113
113
  end
114
114
 
115
115
  def pitch_bend(chan, msb, lsb)
116
- @track.events << PitchBend.new(chan, (msb << 8) + lsb, @curr_ticks)
116
+ @track.events << PitchBend.new(chan, (msb << 7) + lsb, @curr_ticks)
117
117
  track_uses_channel(chan)
118
118
  end
119
119
 
data/lib/midilib/track.rb CHANGED
@@ -66,14 +66,20 @@ class Track
66
66
  return list
67
67
  end
68
68
 
69
- # Quantize every event. +denom+ is the beat denominator. To quantize to
70
- # sixteenths pass in a +denom+ of 16.
69
+ # Quantize every event. length_or_note is either a length (1 = quarter,
70
+ # 0.25 = sixteenth, 4 = whole note) or a note name ("sixteenth", "32nd",
71
+ # "8th triplet", "dotted quarter").
71
72
  #
72
73
  # Since each event's time_from_start is modified, we call
73
74
  # recalc_delta_from_times after each event quantizes itself.
74
- def quantize(denom)
75
- boundary = @sequence.ppqn / denom
76
- @events.each { | event | event.quantize_to(boundary) }
75
+ def quantize(length_or_note)
76
+ delta = case length_or_note
77
+ when String
78
+ @sequence.note_to_delta(length_or_note)
79
+ else
80
+ @sequence.length_to_delta(length_or_note.to_i)
81
+ end
82
+ @events.each { | event | event.quantize_to(delta) }
77
83
  recalc_delta_from_times
78
84
  end
79
85
 
data/test/test_event.rb CHANGED
@@ -113,4 +113,54 @@ class EventTester < Test::Unit::TestCase
113
113
  assert(!e.realtime?)
114
114
  end
115
115
 
116
+ def test_pitch_bend
117
+ e = MIDI::PitchBend.new(0, 128)
118
+ b = e.data_as_bytes
119
+ assert_equal(0, b[1]) # lsb, 7 bits
120
+ assert_equal(1, b[2]) # msb, 7 bits
121
+
122
+ e.value = (3 << 7) + 42
123
+ b = e.data_as_bytes
124
+ assert_equal(42, b[1]) # lsb, 7 bits
125
+ assert_equal(3, b[2]) # msb, 7 bits
126
+ end
127
+
128
+ def test_quantize
129
+ e = MIDI::NoteOnEvent.new(0, 64, 64, 0)
130
+ e.quantize_to(80)
131
+ assert_equal(0, e.time_from_start)
132
+
133
+ e.time_from_start = 1
134
+ e.quantize_to(80)
135
+ assert_equal(0, e.time_from_start)
136
+
137
+ e.time_from_start = 70
138
+ e.quantize_to(80)
139
+ assert_equal(80, e.time_from_start)
140
+
141
+ e.time_from_start = 100
142
+ e.quantize_to(80)
143
+ assert_equal(80, e.time_from_start)
144
+
145
+ e.time_from_start = 398
146
+ e.quantize_to(80)
147
+ assert_equal(400, e.time_from_start)
148
+
149
+ e.time_from_start = 405
150
+ e.quantize_to(80)
151
+ assert_equal(400, e.time_from_start)
152
+
153
+ e.time_from_start = 439
154
+ e.quantize_to(80)
155
+ assert_equal(400, e.time_from_start)
156
+
157
+ e.time_from_start = 440
158
+ e.quantize_to(80)
159
+ assert_equal(480, e.time_from_start)
160
+
161
+ e.time_from_start = 441
162
+ e.quantize_to(80)
163
+ assert_equal(480, e.time_from_start)
164
+ end
165
+
116
166
  end
data/test/test_track.rb CHANGED
@@ -108,4 +108,13 @@ class TrackTester < Test::Unit::TestCase
108
108
  assert_equal(100, @track.events[2].delta_time)
109
109
  end
110
110
 
111
+ def test_quantize
112
+ @seq.ppqn = 80
113
+
114
+ @track.quantize(1) # Quantize to a quarter note
115
+ assert_equal(80, @track.events[0].time_from_start) # was 100
116
+ assert_equal(240, @track.events[1].time_from_start) # was 200
117
+ assert_equal(320, @track.events[2].time_from_start) # was 300
118
+ end
119
+
111
120
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.8
2
+ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: midilib
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.8.4
7
- date: 2005-03-21
6
+ version: 0.8.5
7
+ date: 2005-04-16
8
8
  summary: MIDI file and event manipulation library
9
9
  require_paths:
10
10
  - lib
@@ -39,266 +39,6 @@ files:
39
39
  - examples/seq2text.rb
40
40
  - examples/strings.rb
41
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
42
  - install.rb
303
43
  - lib/midilib.rb
304
44
  - lib/midilib/consts.rb