midilib 1.0.0 → 1.1.1
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.
- data/ChangeLog +23 -0
- data/Credits +6 -0
- data/README +33 -1
- data/Rakefile +1 -1
- data/examples/from_scratch.rb +0 -0
- data/examples/measures_mbt.rb +30 -0
- data/examples/print_program_changes.rb +28 -0
- data/examples/reader2text.rb +0 -0
- data/examples/seq2text.rb +0 -0
- data/examples/split.rb +0 -0
- data/examples/strings.rb +0 -0
- data/examples/transpose.rb +0 -0
- data/html/classes/MIDI/ActiveSense.html +156 -0
- data/html/classes/MIDI/ActiveSense.src/M000157.html +18 -0
- data/html/classes/MIDI/ActiveSense.src/M000158.html +18 -0
- data/html/classes/MIDI/ChannelEvent.html +179 -0
- data/html/classes/MIDI/ChannelEvent.src/M000129.html +20 -0
- data/html/classes/MIDI/ChannelEvent.src/M000130.html +18 -0
- data/html/classes/MIDI/ChannelPressure.html +184 -0
- data/html/classes/MIDI/ChannelPressure.src/M000089.html +19 -0
- data/html/classes/MIDI/ChannelPressure.src/M000090.html +21 -0
- data/html/classes/MIDI/ChannelPressure.src/M000091.html +18 -0
- data/html/classes/MIDI/Clock.html +156 -0
- data/html/classes/MIDI/Clock.src/M000145.html +18 -0
- data/html/classes/MIDI/Clock.src/M000146.html +18 -0
- data/html/classes/MIDI/Continue.html +156 -0
- data/html/classes/MIDI/Continue.src/M000143.html +18 -0
- data/html/classes/MIDI/Continue.src/M000144.html +18 -0
- data/html/classes/MIDI/Controller.html +189 -0
- data/html/classes/MIDI/Controller.src/M000134.html +21 -0
- data/html/classes/MIDI/Controller.src/M000135.html +22 -0
- data/html/classes/MIDI/Controller.src/M000136.html +18 -0
- data/html/classes/MIDI/Event.html +507 -0
- data/html/classes/MIDI/Event.src/M000166.html +30 -0
- data/html/classes/MIDI/Event.src/M000167.html +18 -0
- data/html/classes/MIDI/Event.src/M000168.html +18 -0
- data/html/classes/MIDI/Event.src/M000169.html +18 -0
- data/html/classes/MIDI/Event.src/M000170.html +18 -0
- data/html/classes/MIDI/Event.src/M000171.html +18 -0
- data/html/classes/MIDI/Event.src/M000172.html +18 -0
- data/html/classes/MIDI/Event.src/M000173.html +18 -0
- data/html/classes/MIDI/Event.src/M000174.html +18 -0
- data/html/classes/MIDI/Event.src/M000175.html +18 -0
- data/html/classes/MIDI/Event.src/M000176.html +18 -0
- data/html/classes/MIDI/Event.src/M000177.html +18 -0
- data/html/classes/MIDI/Event.src/M000178.html +22 -0
- data/html/classes/MIDI/Event.src/M000179.html +18 -0
- data/html/classes/MIDI/Event.src/M000180.html +18 -0
- data/html/classes/MIDI/Event.src/M000181.html +19 -0
- data/html/classes/MIDI/Event.src/M000182.html +18 -0
- data/html/classes/MIDI/IO/MIDIFile.html +931 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000029.html +22 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000030.html +24 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000031.html +20 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000032.html +19 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000033.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000034.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000035.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000036.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000037.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000038.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000039.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000040.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000041.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000042.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000043.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000044.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000045.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000046.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000047.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000048.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000049.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000050.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000051.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000052.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000053.html +17 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000054.html +43 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000055.html +34 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000056.html +96 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000057.html +18 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000058.html +48 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000059.html +42 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000060.html +19 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000061.html +19 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000062.html +20 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000063.html +21 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000064.html +31 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000065.html +20 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000066.html +22 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000067.html +30 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000068.html +18 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000069.html +20 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000070.html +18 -0
- data/html/classes/MIDI/IO/MIDIFile.src/M000071.html +18 -0
- data/html/classes/MIDI/IO/SeqReader.html +476 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000001.html +22 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000002.html +22 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000003.html +21 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000004.html +34 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000005.html +26 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000006.html +28 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000007.html +21 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000008.html +19 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000009.html +19 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000010.html +19 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000011.html +19 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000012.html +19 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000013.html +18 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000014.html +18 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000015.html +29 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000016.html +19 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000017.html +18 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000018.html +18 -0
- data/html/classes/MIDI/IO/SeqReader.src/M000019.html +18 -0
- data/html/classes/MIDI/IO/SeqWriter.html +267 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000020.html +19 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000021.html +25 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000022.html +22 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000023.html +54 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000024.html +49 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000025.html +21 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000026.html +19 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000027.html +24 -0
- data/html/classes/MIDI/IO/SeqWriter.src/M000028.html +26 -0
- data/html/classes/MIDI/IO.html +121 -0
- data/html/classes/MIDI/KeySig.html +241 -0
- data/html/classes/MIDI/KeySig.src/M000137.html +19 -0
- data/html/classes/MIDI/KeySig.src/M000138.html +23 -0
- data/html/classes/MIDI/KeySig.src/M000139.html +18 -0
- data/html/classes/MIDI/KeySig.src/M000140.html +18 -0
- data/html/classes/MIDI/KeySig.src/M000141.html +18 -0
- data/html/classes/MIDI/KeySig.src/M000142.html +23 -0
- data/html/classes/MIDI/Marker.html +139 -0
- data/html/classes/MIDI/Marker.src/M000111.html +18 -0
- data/html/classes/MIDI/Measure.html +242 -0
- data/html/classes/MIDI/Measure.src/M000147.html +23 -0
- data/html/classes/MIDI/Measure.src/M000148.html +20 -0
- data/html/classes/MIDI/Measure.src/M000149.html +18 -0
- data/html/classes/MIDI/Measures.html +217 -0
- data/html/classes/MIDI/Measures.src/M000105.html +20 -0
- data/html/classes/MIDI/Measures.src/M000106.html +18 -0
- data/html/classes/MIDI/Measures.src/M000107.html +21 -0
- data/html/classes/MIDI/MetaEvent.html +189 -0
- data/html/classes/MIDI/MetaEvent.src/M000192.html +21 -0
- data/html/classes/MIDI/MetaEvent.src/M000193.html +23 -0
- data/html/classes/MIDI/MetaEvent.src/M000194.html +53 -0
- data/html/classes/MIDI/NoteEvent.html +233 -0
- data/html/classes/MIDI/NoteEvent.src/M000092.html +21 -0
- data/html/classes/MIDI/NoteEvent.src/M000093.html +20 -0
- data/html/classes/MIDI/NoteEvent.src/M000094.html +18 -0
- data/html/classes/MIDI/NoteEvent.src/M000095.html +22 -0
- data/html/classes/MIDI/NoteOffEvent.html +169 -0
- data/html/classes/MIDI/NoteOffEvent.src/M000087.html +19 -0
- data/html/classes/MIDI/NoteOffEvent.src/M000088.html +19 -0
- data/html/classes/MIDI/NoteOnEvent.html +169 -0
- data/html/classes/MIDI/NoteOnEvent.src/M000103.html +19 -0
- data/html/classes/MIDI/NoteOnEvent.src/M000104.html +19 -0
- data/html/classes/MIDI/PitchBend.html +184 -0
- data/html/classes/MIDI/PitchBend.src/M000108.html +19 -0
- data/html/classes/MIDI/PitchBend.src/M000109.html +22 -0
- data/html/classes/MIDI/PitchBend.src/M000110.html +18 -0
- data/html/classes/MIDI/PolyPressure.html +186 -0
- data/html/classes/MIDI/PolyPressure.src/M000195.html +18 -0
- data/html/classes/MIDI/PolyPressure.src/M000196.html +18 -0
- data/html/classes/MIDI/PolyPressure.src/M000197.html +18 -0
- data/html/classes/MIDI/PolyPressure.src/M000198.html +19 -0
- data/html/classes/MIDI/ProgramChange.html +184 -0
- data/html/classes/MIDI/ProgramChange.src/M000100.html +20 -0
- data/html/classes/MIDI/ProgramChange.src/M000101.html +21 -0
- data/html/classes/MIDI/ProgramChange.src/M000102.html +18 -0
- data/html/classes/MIDI/Realtime.html +171 -0
- data/html/classes/MIDI/Realtime.src/M000084.html +19 -0
- data/html/classes/MIDI/Realtime.src/M000085.html +20 -0
- data/html/classes/MIDI/Realtime.src/M000086.html +18 -0
- data/html/classes/MIDI/Sequence.html +500 -0
- data/html/classes/MIDI/Sequence.src/M000112.html +28 -0
- data/html/classes/MIDI/Sequence.src/M000113.html +21 -0
- data/html/classes/MIDI/Sequence.src/M000114.html +22 -0
- data/html/classes/MIDI/Sequence.src/M000117.html +18 -0
- data/html/classes/MIDI/Sequence.src/M000118.html +27 -0
- data/html/classes/MIDI/Sequence.src/M000119.html +18 -0
- data/html/classes/MIDI/Sequence.src/M000120.html +19 -0
- data/html/classes/MIDI/Sequence.src/M000121.html +19 -0
- data/html/classes/MIDI/Sequence.src/M000122.html +19 -0
- data/html/classes/MIDI/Sequence.src/M000123.html +19 -0
- data/html/classes/MIDI/Sequence.src/M000124.html +18 -0
- data/html/classes/MIDI/Sequence.src/M000125.html +54 -0
- data/html/classes/MIDI/SongPointer.html +184 -0
- data/html/classes/MIDI/SongPointer.src/M000159.html +19 -0
- data/html/classes/MIDI/SongPointer.src/M000160.html +22 -0
- data/html/classes/MIDI/SongPointer.src/M000161.html +18 -0
- data/html/classes/MIDI/SongSelect.html +184 -0
- data/html/classes/MIDI/SongSelect.src/M000131.html +19 -0
- data/html/classes/MIDI/SongSelect.src/M000132.html +21 -0
- data/html/classes/MIDI/SongSelect.src/M000133.html +18 -0
- data/html/classes/MIDI/Start.html +156 -0
- data/html/classes/MIDI/Start.src/M000098.html +18 -0
- data/html/classes/MIDI/Start.src/M000099.html +18 -0
- data/html/classes/MIDI/Stop.html +156 -0
- data/html/classes/MIDI/Stop.src/M000096.html +18 -0
- data/html/classes/MIDI/Stop.src/M000097.html +18 -0
- data/html/classes/MIDI/SystemCommon.html +139 -0
- data/html/classes/MIDI/SystemCommon.src/M000165.html +19 -0
- data/html/classes/MIDI/SystemExclusive.html +184 -0
- data/html/classes/MIDI/SystemExclusive.src/M000162.html +19 -0
- data/html/classes/MIDI/SystemExclusive.src/M000163.html +23 -0
- data/html/classes/MIDI/SystemExclusive.src/M000164.html +18 -0
- data/html/classes/MIDI/SystemReset.html +156 -0
- data/html/classes/MIDI/SystemReset.src/M000082.html +18 -0
- data/html/classes/MIDI/SystemReset.src/M000083.html +18 -0
- data/html/classes/MIDI/Tempo.html +250 -0
- data/html/classes/MIDI/Tempo.src/M000183.html +18 -0
- data/html/classes/MIDI/Tempo.src/M000184.html +20 -0
- data/html/classes/MIDI/Tempo.src/M000185.html +18 -0
- data/html/classes/MIDI/Tempo.src/M000186.html +18 -0
- data/html/classes/MIDI/Tempo.src/M000187.html +18 -0
- data/html/classes/MIDI/Tempo.src/M000188.html +25 -0
- data/html/classes/MIDI/Tempo.src/M000189.html +18 -0
- data/html/classes/MIDI/TimeSig.html +263 -0
- data/html/classes/MIDI/TimeSig.src/M000150.html +19 -0
- data/html/classes/MIDI/TimeSig.src/M000151.html +25 -0
- data/html/classes/MIDI/TimeSig.src/M000152.html +18 -0
- data/html/classes/MIDI/TimeSig.src/M000153.html +18 -0
- data/html/classes/MIDI/TimeSig.src/M000154.html +18 -0
- data/html/classes/MIDI/TimeSig.src/M000155.html +18 -0
- data/html/classes/MIDI/TimeSig.src/M000156.html +18 -0
- data/html/classes/MIDI/Track.html +389 -0
- data/html/classes/MIDI/Track.src/M000072.html +23 -0
- data/html/classes/MIDI/Track.src/M000073.html +21 -0
- data/html/classes/MIDI/Track.src/M000074.html +26 -0
- data/html/classes/MIDI/Track.src/M000075.html +18 -0
- data/html/classes/MIDI/Track.src/M000076.html +22 -0
- data/html/classes/MIDI/Track.src/M000077.html +25 -0
- data/html/classes/MIDI/Track.src/M000078.html +22 -0
- data/html/classes/MIDI/Track.src/M000079.html +26 -0
- data/html/classes/MIDI/Track.src/M000080.html +18 -0
- data/html/classes/MIDI/Track.src/M000081.html +19 -0
- data/html/classes/MIDI/TuneRequest.html +171 -0
- data/html/classes/MIDI/TuneRequest.src/M000126.html +18 -0
- data/html/classes/MIDI/TuneRequest.src/M000127.html +20 -0
- data/html/classes/MIDI/TuneRequest.src/M000128.html +18 -0
- data/html/classes/MIDI/Utils.html +190 -0
- data/html/classes/MIDI/Utils.src/M000190.html +20 -0
- data/html/classes/MIDI/Utils.src/M000191.html +25 -0
- data/html/classes/MIDI.html +758 -0
- data/html/created.rid +1 -0
- data/html/files/README.html +681 -0
- data/html/files/TODO.html +142 -0
- data/html/files/lib/midilib/consts_rb.html +107 -0
- data/html/files/lib/midilib/event_rb.html +109 -0
- data/html/files/lib/midilib/info_rb.html +101 -0
- data/html/files/lib/midilib/io/midifile_rb.html +108 -0
- data/html/files/lib/midilib/io/seqreader_rb.html +110 -0
- data/html/files/lib/midilib/io/seqwriter_rb.html +115 -0
- data/html/files/lib/midilib/measure_rb.html +108 -0
- data/html/files/lib/midilib/sequence_rb.html +110 -0
- data/html/files/lib/midilib/track_rb.html +108 -0
- data/html/files/lib/midilib/utils_rb.html +101 -0
- data/html/files/lib/midilib_rb.html +124 -0
- data/html/fr_class_index.html +63 -0
- data/html/fr_file_index.html +39 -0
- data/html/fr_method_index.html +224 -0
- data/html/index.html +24 -0
- data/html/rdoc-style.css +208 -0
- data/lib/midilib/consts.rb +2 -1
- data/lib/midilib/event.rb +132 -4
- data/lib/midilib/info.rb +2 -2
- data/lib/midilib/io/midifile.rb +3 -2
- data/lib/midilib/io/seqreader.rb +10 -6
- data/lib/midilib/measure.rb +80 -0
- data/lib/midilib/sequence.rb +50 -3
- data/test/test.mid +0 -0
- metadata +343 -38
data/ChangeLog
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
2007-12-11 Jim Menard <jim@iamplify.com>
|
|
2
|
+
|
|
3
|
+
* lib/midilib/io/seqreader.rb: Fixed text method and added default
|
|
4
|
+
implementation of key_signature.
|
|
5
|
+
|
|
6
|
+
2007-12-09 Jim Menard <jim@iamplify.com>
|
|
7
|
+
|
|
8
|
+
* examples/measures_mbt.rb: Added.
|
|
9
|
+
|
|
10
|
+
2007-12-09 Jim Menard <jim@iamplify.com>
|
|
11
|
+
|
|
12
|
+
* lib/midilib/event.rb: Added code that fixes bpm calculation
|
|
13
|
+
bugs, and his TimeSig and KeySig classes.
|
|
14
|
+
|
|
15
|
+
* lib/midilib/measure.rb: Added.
|
|
16
|
+
|
|
17
|
+
* lib/midilib/sequence.rb: Fixed clock. Added get_measures method.
|
|
18
|
+
|
|
19
|
+
2007-12-09 Jim Menard <jim@iamplify.com>
|
|
20
|
+
|
|
21
|
+
* lib/midilib/event.rb: added program_change? and
|
|
22
|
+
print_channel_numbers_from_one to Event.
|
|
23
|
+
|
|
1
24
|
2007-03-17 Jim Menard <jimm@io.com>
|
|
2
25
|
|
|
3
26
|
* Version 1.0.0 released. I will no longer be maintaining this
|
data/Credits
CHANGED
|
@@ -19,3 +19,9 @@ Emanuel Borsboom <emanuel.borsboom@gmail.com>
|
|
|
19
19
|
Christopher Rose <cmr@synopsys.com>
|
|
20
20
|
|
|
21
21
|
Found bug in Track#recalc_delta_from_times.
|
|
22
|
+
|
|
23
|
+
Jari Williamsson <jari.williamsson@mailbox.swipnet.se>
|
|
24
|
+
|
|
25
|
+
Contributed Measure and Measures, TimeSig and KeySig, and fixes to events.
|
|
26
|
+
Added get_measures to Sequence. Added default implementaiton of
|
|
27
|
+
key_signature in SeqReader. Contributed the measures_mbt.rb example.
|
data/README
CHANGED
|
@@ -92,6 +92,24 @@ This bit mask is set when the track is read from the MIDI file by a SeqReader
|
|
|
92
92
|
but is _not_ kept up to date by any other methods. Specifically, if you add
|
|
93
93
|
events to a track at any other time, the bit mask will not be updated.
|
|
94
94
|
|
|
95
|
+
=== MIDI::Measure
|
|
96
|
+
|
|
97
|
+
This class contains information about a measure from the sequence. Measure
|
|
98
|
+
data is based on the time signature information from the sequence and is not
|
|
99
|
+
stored in the sequence itself.
|
|
100
|
+
|
|
101
|
+
=== MIDI::Measures
|
|
102
|
+
|
|
103
|
+
The class MIDI::Sequence method get_measures returns a MIDI::Measures object.
|
|
104
|
+
MIDI::Measures is a subclass of Array. It is a specialized container for
|
|
105
|
+
MIDI::Measure objects, which can be use to map event times to measure numbers.
|
|
106
|
+
Please note that this object has to be remade when events are deleted/added in
|
|
107
|
+
the sequence.
|
|
108
|
+
|
|
109
|
+
MIDI::Measure and MIDI::Measures are brought to us by Jari Williamsson
|
|
110
|
+
<jari.williamsson@mailbox.swipnet.se>, who also contributed some improvements
|
|
111
|
+
to the MIDI::Event and MIDI::Track classes.
|
|
112
|
+
|
|
95
113
|
=== MIDI::Event
|
|
96
114
|
|
|
97
115
|
Each event holds not only its delta time but also its time from the start of
|
|
@@ -99,7 +117,12 @@ the track. The track is responsible for recalculating its events' start times.
|
|
|
99
117
|
You can call MIDI::Track#recalc_times to do so.
|
|
100
118
|
|
|
101
119
|
Events have a number of boolean methods that identify their types, like
|
|
102
|
-
channel?, note?, note_on?, note_off?, meta?, system?, and
|
|
120
|
+
channel?, note?, note_on?, note_off?, meta?, system?, realtime?, and
|
|
121
|
+
program_change?. Events know how to print themselves. By default, all numbers
|
|
122
|
+
are printed as hexidecimal and channel numbers are printed from 0-15. Setting
|
|
123
|
+
print_decimal_numbers to true will output decimal numbers and setting
|
|
124
|
+
print_channel_numbers_from_one will output channel numbers from 1-16.
|
|
125
|
+
|
|
103
126
|
|
|
104
127
|
Subclasses of MIDI::Event implement the various MIDI messages such as note on
|
|
105
128
|
and off, controller values, system exclusive data, and realtime bytes.
|
|
@@ -315,6 +338,15 @@ non-commercial purposes as long as the author is given credit.
|
|
|
315
338
|
|
|
316
339
|
=== Recent Changes
|
|
317
340
|
|
|
341
|
+
==== Changes for 1.1.1:
|
|
342
|
+
|
|
343
|
+
* Mak MIDI::IO::MIDIFile.getc do the right thing for both Ruby 1.8 and 1.9.
|
|
344
|
+
|
|
345
|
+
==== Changes for 1.1.0:
|
|
346
|
+
|
|
347
|
+
* Added test/test.mid to list of files to be included when packaging midifile
|
|
348
|
+
for distribution.
|
|
349
|
+
|
|
318
350
|
==== Changes for 1.0.0:
|
|
319
351
|
|
|
320
352
|
* Fixed the bug in Track#recalc_delta_from_times found by Christopher Rose.
|
data/Rakefile
CHANGED
data/examples/from_scratch.rb
CHANGED
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# usage: measure_mbt.rb midi_file
|
|
4
|
+
#
|
|
5
|
+
# This program loads a sequences and prints out all start-of-notes
|
|
6
|
+
# in a "sequencer-style" manner:
|
|
7
|
+
# Measure:Beat:Tick Channel: Note-name
|
|
8
|
+
|
|
9
|
+
# Start looking for MIDI module classes in the directory above this one.
|
|
10
|
+
# This forces us to use the local copy, even if there is a previously
|
|
11
|
+
# installed version out there somewhere.
|
|
12
|
+
$LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
|
13
|
+
|
|
14
|
+
require 'midilib/sequence'
|
|
15
|
+
|
|
16
|
+
seq = MIDI::Sequence.new()
|
|
17
|
+
File.open(ARGV[0], 'rb') { | file | seq.read(file) }
|
|
18
|
+
|
|
19
|
+
# Get all measures, so events can be mapped to measures:
|
|
20
|
+
measures = seq.get_measures
|
|
21
|
+
|
|
22
|
+
seq.each { | track |
|
|
23
|
+
track.each { | e |
|
|
24
|
+
if e.note_on? then
|
|
25
|
+
# Print out start of notes
|
|
26
|
+
e.print_note_names = true
|
|
27
|
+
puts measures.to_mbt(e) + " ch #{e.channel}: #{e.note_to_s}"
|
|
28
|
+
end
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Shows use of print_decimal_numbers and print_channel_numbers_from_one.
|
|
4
|
+
|
|
5
|
+
$LOAD_PATH[0, 0] = File.join(File.dirname(__FILE__), '..', 'lib')
|
|
6
|
+
|
|
7
|
+
require 'midilib/sequence'
|
|
8
|
+
|
|
9
|
+
DEFAULT_MIDI_TEST_FILE = 'NoFences.mid'
|
|
10
|
+
|
|
11
|
+
# Read from MIDI file
|
|
12
|
+
seq = MIDI::Sequence.new()
|
|
13
|
+
|
|
14
|
+
File.open(ARGV[0] || DEFAULT_MIDI_TEST_FILE, 'rb') { | file |
|
|
15
|
+
# The block we pass in to Sequence.read is called at the end of every
|
|
16
|
+
# track read. It is optional, but is useful for progress reports.
|
|
17
|
+
seq.read(file)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
seq.each { | track |
|
|
21
|
+
puts
|
|
22
|
+
puts "*** track name \"#{track.name}\", \"#{track.instrument}\""
|
|
23
|
+
track.each { | e |
|
|
24
|
+
e.print_decimal_numbers = true
|
|
25
|
+
e.print_channel_numbers_from_one = true
|
|
26
|
+
puts e if e.program_change?
|
|
27
|
+
}
|
|
28
|
+
}
|
data/examples/reader2text.rb
CHANGED
|
File without changes
|
data/examples/seq2text.rb
CHANGED
|
File without changes
|
data/examples/split.rb
CHANGED
|
File without changes
|
data/examples/strings.rb
CHANGED
|
File without changes
|
data/examples/transpose.rb
CHANGED
|
File without changes
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
7
|
+
<head>
|
|
8
|
+
<title>Class: MIDI::ActiveSense</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
|
11
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
12
|
+
<script type="text/javascript">
|
|
13
|
+
// <![CDATA[
|
|
14
|
+
|
|
15
|
+
function popupCode( url ) {
|
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function toggleCode( id ) {
|
|
20
|
+
if ( document.getElementById )
|
|
21
|
+
elem = document.getElementById( id );
|
|
22
|
+
else if ( document.all )
|
|
23
|
+
elem = eval( "document.all." + id );
|
|
24
|
+
else
|
|
25
|
+
return false;
|
|
26
|
+
|
|
27
|
+
elemStyle = elem.style;
|
|
28
|
+
|
|
29
|
+
if ( elemStyle.display != "block" ) {
|
|
30
|
+
elemStyle.display = "block"
|
|
31
|
+
} else {
|
|
32
|
+
elemStyle.display = "none"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Make codeblocks hidden by default
|
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
|
40
|
+
|
|
41
|
+
// ]]>
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
</head>
|
|
45
|
+
<body>
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
<div id="classHeader">
|
|
50
|
+
<table class="header-table">
|
|
51
|
+
<tr class="top-aligned-row">
|
|
52
|
+
<td><strong>Class</strong></td>
|
|
53
|
+
<td class="class-name-in-header">MIDI::ActiveSense</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../../files/lib/midilib/event_rb.html">
|
|
59
|
+
lib/midilib/event.rb
|
|
60
|
+
</a>
|
|
61
|
+
<br />
|
|
62
|
+
</td>
|
|
63
|
+
</tr>
|
|
64
|
+
|
|
65
|
+
<tr class="top-aligned-row">
|
|
66
|
+
<td><strong>Parent:</strong></td>
|
|
67
|
+
<td>
|
|
68
|
+
<a href="Realtime.html">
|
|
69
|
+
Realtime
|
|
70
|
+
</a>
|
|
71
|
+
</td>
|
|
72
|
+
</tr>
|
|
73
|
+
</table>
|
|
74
|
+
</div>
|
|
75
|
+
<!-- banner header -->
|
|
76
|
+
|
|
77
|
+
<div id="bodyContent">
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
<div id="contextContent">
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<div id="method-list">
|
|
88
|
+
<h3 class="section-bar">Methods</h3>
|
|
89
|
+
|
|
90
|
+
<div class="name-list">
|
|
91
|
+
<a href="#M000157">new</a>
|
|
92
|
+
<a href="#M000158">to_s</a>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
<!-- if includes -->
|
|
100
|
+
|
|
101
|
+
<div id="section">
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
<!-- if method_list -->
|
|
111
|
+
<div id="methods">
|
|
112
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
113
|
+
|
|
114
|
+
<div id="method-M000157" class="method-detail">
|
|
115
|
+
<a name="M000157"></a>
|
|
116
|
+
|
|
117
|
+
<div class="method-heading">
|
|
118
|
+
<a href="ActiveSense.src/M000157.html" target="Code" class="method-signature"
|
|
119
|
+
onclick="popupCode('ActiveSense.src/M000157.html');return false;">
|
|
120
|
+
<span class="method-name">new</span><span class="method-args">(delta_time = 0)</span>
|
|
121
|
+
</a>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div class="method-description">
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
129
|
+
|
|
130
|
+
<div id="method-M000158" class="method-detail">
|
|
131
|
+
<a name="M000158"></a>
|
|
132
|
+
|
|
133
|
+
<div class="method-heading">
|
|
134
|
+
<a href="ActiveSense.src/M000158.html" target="Code" class="method-signature"
|
|
135
|
+
onclick="popupCode('ActiveSense.src/M000158.html');return false;">
|
|
136
|
+
<span class="method-name">to_s</span><span class="method-args">()</span>
|
|
137
|
+
</a>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<div class="method-description">
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
</div>
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
<div id="validator-badges">
|
|
152
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
</body>
|
|
156
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>new (MIDI::ActiveSense)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/midilib/event.rb, line 464</span>
|
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">delta_time</span> = <span class="ruby-value">0</span>)
|
|
15
|
+
<span class="ruby-keyword kw">super</span>(<span class="ruby-constant">ACTIVE_SENSE</span>, <span class="ruby-identifier">delta_time</span>)
|
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>to_s (MIDI::ActiveSense)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/midilib/event.rb, line 467</span>
|
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
|
|
15
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">super</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"act sens"</span>
|
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
7
|
+
<head>
|
|
8
|
+
<title>Class: MIDI::ChannelEvent</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
|
11
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
12
|
+
<script type="text/javascript">
|
|
13
|
+
// <![CDATA[
|
|
14
|
+
|
|
15
|
+
function popupCode( url ) {
|
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function toggleCode( id ) {
|
|
20
|
+
if ( document.getElementById )
|
|
21
|
+
elem = document.getElementById( id );
|
|
22
|
+
else if ( document.all )
|
|
23
|
+
elem = eval( "document.all." + id );
|
|
24
|
+
else
|
|
25
|
+
return false;
|
|
26
|
+
|
|
27
|
+
elemStyle = elem.style;
|
|
28
|
+
|
|
29
|
+
if ( elemStyle.display != "block" ) {
|
|
30
|
+
elemStyle.display = "block"
|
|
31
|
+
} else {
|
|
32
|
+
elemStyle.display = "none"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Make codeblocks hidden by default
|
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
|
40
|
+
|
|
41
|
+
// ]]>
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
</head>
|
|
45
|
+
<body>
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
<div id="classHeader">
|
|
50
|
+
<table class="header-table">
|
|
51
|
+
<tr class="top-aligned-row">
|
|
52
|
+
<td><strong>Class</strong></td>
|
|
53
|
+
<td class="class-name-in-header">MIDI::ChannelEvent</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr class="top-aligned-row">
|
|
56
|
+
<td><strong>In:</strong></td>
|
|
57
|
+
<td>
|
|
58
|
+
<a href="../../files/lib/midilib/event_rb.html">
|
|
59
|
+
lib/midilib/event.rb
|
|
60
|
+
</a>
|
|
61
|
+
<br />
|
|
62
|
+
</td>
|
|
63
|
+
</tr>
|
|
64
|
+
|
|
65
|
+
<tr class="top-aligned-row">
|
|
66
|
+
<td><strong>Parent:</strong></td>
|
|
67
|
+
<td>
|
|
68
|
+
<a href="Event.html">
|
|
69
|
+
Event
|
|
70
|
+
</a>
|
|
71
|
+
</td>
|
|
72
|
+
</tr>
|
|
73
|
+
</table>
|
|
74
|
+
</div>
|
|
75
|
+
<!-- banner header -->
|
|
76
|
+
|
|
77
|
+
<div id="bodyContent">
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
<div id="contextContent">
|
|
82
|
+
|
|
83
|
+
<div id="description">
|
|
84
|
+
<p>
|
|
85
|
+
The abstract superclass of all channel events (events that have a <a
|
|
86
|
+
href="../MIDI.html">MIDI</a> channel, like notes and program changes).
|
|
87
|
+
</p>
|
|
88
|
+
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
<div id="method-list">
|
|
95
|
+
<h3 class="section-bar">Methods</h3>
|
|
96
|
+
|
|
97
|
+
<div class="name-list">
|
|
98
|
+
<a href="#M000129">new</a>
|
|
99
|
+
<a href="#M000130">to_s</a>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
<!-- if includes -->
|
|
107
|
+
|
|
108
|
+
<div id="section">
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
<div id="attribute-list">
|
|
115
|
+
<h3 class="section-bar">Attributes</h3>
|
|
116
|
+
|
|
117
|
+
<div class="name-list">
|
|
118
|
+
<table>
|
|
119
|
+
<tr class="top-aligned-row context-row">
|
|
120
|
+
<td class="context-item-name">channel</td>
|
|
121
|
+
<td class="context-item-value"> [RW] </td>
|
|
122
|
+
<td class="context-item-desc">
|
|
123
|
+
<a href="../MIDI.html">MIDI</a> channel, 0-15.
|
|
124
|
+
|
|
125
|
+
</td>
|
|
126
|
+
</tr>
|
|
127
|
+
</table>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
<!-- if method_list -->
|
|
134
|
+
<div id="methods">
|
|
135
|
+
<h3 class="section-bar">Public Class methods</h3>
|
|
136
|
+
|
|
137
|
+
<div id="method-M000129" class="method-detail">
|
|
138
|
+
<a name="M000129"></a>
|
|
139
|
+
|
|
140
|
+
<div class="method-heading">
|
|
141
|
+
<a href="ChannelEvent.src/M000129.html" target="Code" class="method-signature"
|
|
142
|
+
onclick="popupCode('ChannelEvent.src/M000129.html');return false;">
|
|
143
|
+
<span class="method-name">new</span><span class="method-args">(status, channel, delta_time)</span>
|
|
144
|
+
</a>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div class="method-description">
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
152
|
+
|
|
153
|
+
<div id="method-M000130" class="method-detail">
|
|
154
|
+
<a name="M000130"></a>
|
|
155
|
+
|
|
156
|
+
<div class="method-heading">
|
|
157
|
+
<a href="ChannelEvent.src/M000130.html" target="Code" class="method-signature"
|
|
158
|
+
onclick="popupCode('ChannelEvent.src/M000130.html');return false;">
|
|
159
|
+
<span class="method-name">to_s</span><span class="method-args">()</span>
|
|
160
|
+
</a>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<div class="method-description">
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
<div id="validator-badges">
|
|
175
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
</body>
|
|
179
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>new (MIDI::ChannelEvent)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/midilib/event.rb, line 148</span>
|
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">status</span>, <span class="ruby-identifier">channel</span>, <span class="ruby-identifier">delta_time</span>)
|
|
15
|
+
<span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">status</span>, <span class="ruby-identifier">delta_time</span>)
|
|
16
|
+
<span class="ruby-ivar">@channel</span> = <span class="ruby-identifier">channel</span>
|
|
17
|
+
<span class="ruby-ivar">@is_channel</span> = <span class="ruby-keyword kw">true</span>
|
|
18
|
+
<span class="ruby-keyword kw">end</span></pre>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>to_s (MIDI::ChannelEvent)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/midilib/event.rb, line 155</span>
|
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
|
|
15
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">super</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"ch #{channel_to_s(@channel)} "</span>
|
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|