midilib 0.8.4 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +2 -0
- data/Credits +4 -0
- data/README +23 -6
- data/install.rb +1 -1
- data/lib/midilib/consts.rb +3 -0
- data/lib/midilib/event.rb +2 -2
- data/lib/midilib/info.rb +1 -1
- data/lib/midilib/io/seqreader.rb +1 -1
- data/lib/midilib/track.rb +11 -5
- data/test/test_event.rb +50 -0
- data/test/test_track.rb +9 -0
- metadata +3 -263
- data/html/classes/MIDI.html +0 -738
- data/html/classes/MIDI/ActiveSense.html +0 -156
- data/html/classes/MIDI/ActiveSense.src/M000136.html +0 -18
- data/html/classes/MIDI/ActiveSense.src/M000137.html +0 -18
- data/html/classes/MIDI/ChannelEvent.html +0 -179
- data/html/classes/MIDI/ChannelEvent.src/M000124.html +0 -20
- data/html/classes/MIDI/ChannelEvent.src/M000125.html +0 -18
- data/html/classes/MIDI/ChannelPressure.html +0 -184
- data/html/classes/MIDI/ChannelPressure.src/M000088.html +0 -19
- data/html/classes/MIDI/ChannelPressure.src/M000089.html +0 -21
- data/html/classes/MIDI/ChannelPressure.src/M000090.html +0 -18
- data/html/classes/MIDI/Clock.html +0 -156
- data/html/classes/MIDI/Clock.src/M000134.html +0 -18
- data/html/classes/MIDI/Clock.src/M000135.html +0 -18
- data/html/classes/MIDI/Continue.html +0 -156
- data/html/classes/MIDI/Continue.src/M000132.html +0 -18
- data/html/classes/MIDI/Continue.src/M000133.html +0 -18
- data/html/classes/MIDI/Controller.html +0 -189
- data/html/classes/MIDI/Controller.src/M000129.html +0 -21
- data/html/classes/MIDI/Controller.src/M000130.html +0 -22
- data/html/classes/MIDI/Controller.src/M000131.html +0 -18
- data/html/classes/MIDI/Event.html +0 -424
- data/html/classes/MIDI/Event.src/M000145.html +0 -27
- data/html/classes/MIDI/Event.src/M000146.html +0 -18
- data/html/classes/MIDI/Event.src/M000147.html +0 -18
- data/html/classes/MIDI/Event.src/M000148.html +0 -18
- data/html/classes/MIDI/Event.src/M000149.html +0 -18
- data/html/classes/MIDI/Event.src/M000150.html +0 -18
- data/html/classes/MIDI/Event.src/M000151.html +0 -18
- data/html/classes/MIDI/Event.src/M000152.html +0 -18
- data/html/classes/MIDI/Event.src/M000153.html +0 -18
- data/html/classes/MIDI/Event.src/M000154.html +0 -22
- data/html/classes/MIDI/Event.src/M000155.html +0 -18
- data/html/classes/MIDI/Event.src/M000156.html +0 -18
- data/html/classes/MIDI/Event.src/M000157.html +0 -18
- data/html/classes/MIDI/IO.html +0 -121
- data/html/classes/MIDI/IO/MIDIFile.html +0 -925
- data/html/classes/MIDI/IO/MIDIFile.src/M000028.html +0 -22
- data/html/classes/MIDI/IO/MIDIFile.src/M000029.html +0 -24
- data/html/classes/MIDI/IO/MIDIFile.src/M000030.html +0 -19
- data/html/classes/MIDI/IO/MIDIFile.src/M000031.html +0 -19
- data/html/classes/MIDI/IO/MIDIFile.src/M000032.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000033.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000034.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000035.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000036.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000037.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000038.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000039.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000040.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000041.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000042.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000043.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000044.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000045.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000046.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000047.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000048.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000049.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000050.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000051.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000052.html +0 -17
- data/html/classes/MIDI/IO/MIDIFile.src/M000053.html +0 -43
- data/html/classes/MIDI/IO/MIDIFile.src/M000054.html +0 -34
- data/html/classes/MIDI/IO/MIDIFile.src/M000055.html +0 -96
- data/html/classes/MIDI/IO/MIDIFile.src/M000056.html +0 -18
- data/html/classes/MIDI/IO/MIDIFile.src/M000057.html +0 -48
- data/html/classes/MIDI/IO/MIDIFile.src/M000058.html +0 -42
- data/html/classes/MIDI/IO/MIDIFile.src/M000059.html +0 -19
- data/html/classes/MIDI/IO/MIDIFile.src/M000060.html +0 -19
- data/html/classes/MIDI/IO/MIDIFile.src/M000061.html +0 -20
- data/html/classes/MIDI/IO/MIDIFile.src/M000062.html +0 -21
- data/html/classes/MIDI/IO/MIDIFile.src/M000063.html +0 -31
- data/html/classes/MIDI/IO/MIDIFile.src/M000064.html +0 -20
- data/html/classes/MIDI/IO/MIDIFile.src/M000065.html +0 -22
- data/html/classes/MIDI/IO/MIDIFile.src/M000066.html +0 -30
- data/html/classes/MIDI/IO/MIDIFile.src/M000067.html +0 -18
- data/html/classes/MIDI/IO/MIDIFile.src/M000068.html +0 -20
- data/html/classes/MIDI/IO/MIDIFile.src/M000069.html +0 -18
- data/html/classes/MIDI/IO/MIDIFile.src/M000070.html +0 -18
- data/html/classes/MIDI/IO/SeqReader.html +0 -460
- data/html/classes/MIDI/IO/SeqReader.src/M000001.html +0 -22
- data/html/classes/MIDI/IO/SeqReader.src/M000002.html +0 -22
- data/html/classes/MIDI/IO/SeqReader.src/M000003.html +0 -21
- data/html/classes/MIDI/IO/SeqReader.src/M000004.html +0 -34
- data/html/classes/MIDI/IO/SeqReader.src/M000005.html +0 -26
- data/html/classes/MIDI/IO/SeqReader.src/M000006.html +0 -28
- data/html/classes/MIDI/IO/SeqReader.src/M000007.html +0 -21
- data/html/classes/MIDI/IO/SeqReader.src/M000008.html +0 -19
- data/html/classes/MIDI/IO/SeqReader.src/M000009.html +0 -19
- data/html/classes/MIDI/IO/SeqReader.src/M000010.html +0 -19
- data/html/classes/MIDI/IO/SeqReader.src/M000011.html +0 -19
- data/html/classes/MIDI/IO/SeqReader.src/M000012.html +0 -19
- data/html/classes/MIDI/IO/SeqReader.src/M000013.html +0 -18
- data/html/classes/MIDI/IO/SeqReader.src/M000014.html +0 -18
- data/html/classes/MIDI/IO/SeqReader.src/M000015.html +0 -27
- data/html/classes/MIDI/IO/SeqReader.src/M000016.html +0 -18
- data/html/classes/MIDI/IO/SeqReader.src/M000017.html +0 -18
- data/html/classes/MIDI/IO/SeqReader.src/M000018.html +0 -18
- data/html/classes/MIDI/IO/SeqWriter.html +0 -267
- data/html/classes/MIDI/IO/SeqWriter.src/M000019.html +0 -19
- data/html/classes/MIDI/IO/SeqWriter.src/M000020.html +0 -25
- data/html/classes/MIDI/IO/SeqWriter.src/M000021.html +0 -22
- data/html/classes/MIDI/IO/SeqWriter.src/M000022.html +0 -54
- data/html/classes/MIDI/IO/SeqWriter.src/M000023.html +0 -49
- data/html/classes/MIDI/IO/SeqWriter.src/M000024.html +0 -21
- data/html/classes/MIDI/IO/SeqWriter.src/M000025.html +0 -19
- data/html/classes/MIDI/IO/SeqWriter.src/M000026.html +0 -24
- data/html/classes/MIDI/IO/SeqWriter.src/M000027.html +0 -26
- data/html/classes/MIDI/Marker.html +0 -139
- data/html/classes/MIDI/Marker.src/M000107.html +0 -18
- data/html/classes/MIDI/MetaEvent.html +0 -189
- data/html/classes/MIDI/MetaEvent.src/M000167.html +0 -21
- data/html/classes/MIDI/MetaEvent.src/M000168.html +0 -23
- data/html/classes/MIDI/MetaEvent.src/M000169.html +0 -53
- data/html/classes/MIDI/NoteEvent.html +0 -233
- data/html/classes/MIDI/NoteEvent.src/M000091.html +0 -21
- data/html/classes/MIDI/NoteEvent.src/M000092.html +0 -20
- data/html/classes/MIDI/NoteEvent.src/M000093.html +0 -18
- data/html/classes/MIDI/NoteEvent.src/M000094.html +0 -22
- data/html/classes/MIDI/NoteOffEvent.html +0 -169
- data/html/classes/MIDI/NoteOffEvent.src/M000086.html +0 -19
- data/html/classes/MIDI/NoteOffEvent.src/M000087.html +0 -19
- data/html/classes/MIDI/NoteOnEvent.html +0 -169
- data/html/classes/MIDI/NoteOnEvent.src/M000102.html +0 -19
- data/html/classes/MIDI/NoteOnEvent.src/M000103.html +0 -19
- data/html/classes/MIDI/PitchBend.html +0 -184
- data/html/classes/MIDI/PitchBend.src/M000104.html +0 -19
- data/html/classes/MIDI/PitchBend.src/M000105.html +0 -22
- data/html/classes/MIDI/PitchBend.src/M000106.html +0 -18
- data/html/classes/MIDI/PolyPressure.html +0 -186
- data/html/classes/MIDI/PolyPressure.src/M000170.html +0 -18
- data/html/classes/MIDI/PolyPressure.src/M000171.html +0 -18
- data/html/classes/MIDI/PolyPressure.src/M000172.html +0 -18
- data/html/classes/MIDI/PolyPressure.src/M000173.html +0 -19
- data/html/classes/MIDI/ProgramChange.html +0 -184
- data/html/classes/MIDI/ProgramChange.src/M000099.html +0 -19
- data/html/classes/MIDI/ProgramChange.src/M000100.html +0 -21
- data/html/classes/MIDI/ProgramChange.src/M000101.html +0 -18
- data/html/classes/MIDI/Realtime.html +0 -171
- data/html/classes/MIDI/Realtime.src/M000083.html +0 -19
- data/html/classes/MIDI/Realtime.src/M000084.html +0 -20
- data/html/classes/MIDI/Realtime.src/M000085.html +0 -18
- data/html/classes/MIDI/Sequence.html +0 -469
- data/html/classes/MIDI/Sequence.src/M000108.html +0 -28
- data/html/classes/MIDI/Sequence.src/M000109.html +0 -21
- data/html/classes/MIDI/Sequence.src/M000110.html +0 -22
- data/html/classes/MIDI/Sequence.src/M000113.html +0 -18
- data/html/classes/MIDI/Sequence.src/M000114.html +0 -27
- data/html/classes/MIDI/Sequence.src/M000115.html +0 -18
- data/html/classes/MIDI/Sequence.src/M000116.html +0 -19
- data/html/classes/MIDI/Sequence.src/M000117.html +0 -19
- data/html/classes/MIDI/Sequence.src/M000118.html +0 -20
- data/html/classes/MIDI/Sequence.src/M000119.html +0 -19
- data/html/classes/MIDI/Sequence.src/M000120.html +0 -18
- data/html/classes/MIDI/SongPointer.html +0 -184
- data/html/classes/MIDI/SongPointer.src/M000138.html +0 -19
- data/html/classes/MIDI/SongPointer.src/M000139.html +0 -22
- data/html/classes/MIDI/SongPointer.src/M000140.html +0 -18
- data/html/classes/MIDI/SongSelect.html +0 -184
- data/html/classes/MIDI/SongSelect.src/M000126.html +0 -19
- data/html/classes/MIDI/SongSelect.src/M000127.html +0 -21
- data/html/classes/MIDI/SongSelect.src/M000128.html +0 -18
- data/html/classes/MIDI/Start.html +0 -156
- data/html/classes/MIDI/Start.src/M000097.html +0 -18
- data/html/classes/MIDI/Start.src/M000098.html +0 -18
- data/html/classes/MIDI/Stop.html +0 -156
- data/html/classes/MIDI/Stop.src/M000095.html +0 -18
- data/html/classes/MIDI/Stop.src/M000096.html +0 -18
- data/html/classes/MIDI/SystemCommon.html +0 -139
- data/html/classes/MIDI/SystemCommon.src/M000144.html +0 -19
- data/html/classes/MIDI/SystemExclusive.html +0 -184
- data/html/classes/MIDI/SystemExclusive.src/M000141.html +0 -19
- data/html/classes/MIDI/SystemExclusive.src/M000142.html +0 -23
- data/html/classes/MIDI/SystemExclusive.src/M000143.html +0 -18
- data/html/classes/MIDI/SystemReset.html +0 -156
- data/html/classes/MIDI/SystemReset.src/M000081.html +0 -18
- data/html/classes/MIDI/SystemReset.src/M000082.html +0 -18
- data/html/classes/MIDI/Tempo.html +0 -250
- data/html/classes/MIDI/Tempo.src/M000158.html +0 -18
- data/html/classes/MIDI/Tempo.src/M000159.html +0 -18
- data/html/classes/MIDI/Tempo.src/M000160.html +0 -18
- data/html/classes/MIDI/Tempo.src/M000161.html +0 -18
- data/html/classes/MIDI/Tempo.src/M000162.html +0 -18
- data/html/classes/MIDI/Tempo.src/M000163.html +0 -25
- data/html/classes/MIDI/Tempo.src/M000164.html +0 -18
- data/html/classes/MIDI/Track.html +0 -380
- data/html/classes/MIDI/Track.src/M000071.html +0 -23
- data/html/classes/MIDI/Track.src/M000072.html +0 -21
- data/html/classes/MIDI/Track.src/M000073.html +0 -26
- data/html/classes/MIDI/Track.src/M000074.html +0 -18
- data/html/classes/MIDI/Track.src/M000075.html +0 -22
- data/html/classes/MIDI/Track.src/M000076.html +0 -20
- data/html/classes/MIDI/Track.src/M000077.html +0 -22
- data/html/classes/MIDI/Track.src/M000078.html +0 -22
- data/html/classes/MIDI/Track.src/M000079.html +0 -18
- data/html/classes/MIDI/Track.src/M000080.html +0 -19
- data/html/classes/MIDI/TuneRequest.html +0 -171
- data/html/classes/MIDI/TuneRequest.src/M000121.html +0 -18
- data/html/classes/MIDI/TuneRequest.src/M000122.html +0 -20
- data/html/classes/MIDI/TuneRequest.src/M000123.html +0 -18
- data/html/classes/MIDI/Utils.html +0 -190
- data/html/classes/MIDI/Utils.src/M000165.html +0 -20
- data/html/classes/MIDI/Utils.src/M000166.html +0 -25
- data/html/created.rid +0 -1
- data/html/files/README.html +0 -599
- data/html/files/TODO.html +0 -142
- data/html/files/lib/midilib/consts_rb.html +0 -107
- data/html/files/lib/midilib/event_rb.html +0 -109
- data/html/files/lib/midilib/info_rb.html +0 -101
- data/html/files/lib/midilib/io/midifile_rb.html +0 -108
- data/html/files/lib/midilib/io/seqreader_rb.html +0 -110
- data/html/files/lib/midilib/io/seqwriter_rb.html +0 -115
- data/html/files/lib/midilib/sequence_rb.html +0 -109
- data/html/files/lib/midilib/track_rb.html +0 -108
- data/html/files/lib/midilib/utils_rb.html +0 -101
- data/html/files/lib/midilib_rb.html +0 -124
- data/html/fr_class_index.html +0 -59
- data/html/fr_file_index.html +0 -38
- data/html/fr_method_index.html +0 -199
- data/html/index.html +0 -24
- data/html/rdoc-style.css +0 -208
data/ChangeLog
CHANGED
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
|
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
|
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
|
273
|
-
|
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-
|
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-
|
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-
|
8
|
+
# Copyright:: Copyright (c) 2003-2005 by Jim Menard
|
9
9
|
# License:: Distributed under the same license as Ruby.
|
10
10
|
#
|
11
11
|
|
data/lib/midilib/consts.rb
CHANGED
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 << (
|
285
|
-
data << (@value &
|
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
data/lib/midilib/io/seqreader.rb
CHANGED
@@ -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 <<
|
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.
|
70
|
-
#
|
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(
|
75
|
-
|
76
|
-
|
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.
|
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.
|
7
|
-
date: 2005-
|
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
|