midilib 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/Credits +11 -2
  2. data/README.rdoc +17 -26
  3. data/Rakefile +34 -7
  4. data/install.rb +2 -2
  5. data/lib/midilib/info.rb +2 -2
  6. metadata +25 -119
  7. data/html/Array.html +0 -382
  8. data/html/IO.html +0 -277
  9. data/html/MIDI.html +0 -829
  10. data/html/MIDI/ActiveSense.html +0 -317
  11. data/html/MIDI/ChannelEvent.html +0 -347
  12. data/html/MIDI/ChannelPressure.html +0 -379
  13. data/html/MIDI/Clock.html +0 -317
  14. data/html/MIDI/Continue.html +0 -317
  15. data/html/MIDI/Controller.html +0 -398
  16. data/html/MIDI/Event.html +0 -659
  17. data/html/MIDI/IO.html +0 -238
  18. data/html/MIDI/IO/MIDIFile.html +0 -2269
  19. data/html/MIDI/IO/SeqReader.html +0 -1051
  20. data/html/MIDI/IO/SeqWriter.html +0 -706
  21. data/html/MIDI/KeySig.html +0 -487
  22. data/html/MIDI/Marker.html +0 -275
  23. data/html/MIDI/Measure.html +0 -479
  24. data/html/MIDI/Measures.html +0 -416
  25. data/html/MIDI/MetaEvent.html +0 -617
  26. data/html/MIDI/NoteEvent.html +0 -459
  27. data/html/MIDI/NoteOff.html +0 -341
  28. data/html/MIDI/NoteOn.html +0 -341
  29. data/html/MIDI/PitchBend.html +0 -380
  30. data/html/MIDI/PolyPressure.html +0 -390
  31. data/html/MIDI/ProgramChange.html +0 -379
  32. data/html/MIDI/Realtime.html +0 -354
  33. data/html/MIDI/Sequence.html +0 -1063
  34. data/html/MIDI/SongPointer.html +0 -380
  35. data/html/MIDI/SongSelect.html +0 -379
  36. data/html/MIDI/Start.html +0 -317
  37. data/html/MIDI/Stop.html +0 -317
  38. data/html/MIDI/SystemCommon.html +0 -275
  39. data/html/MIDI/SystemExclusive.html +0 -382
  40. data/html/MIDI/SystemReset.html +0 -317
  41. data/html/MIDI/Tempo.html +0 -519
  42. data/html/MIDI/TimeSig.html +0 -524
  43. data/html/MIDI/Track.html +0 -859
  44. data/html/MIDI/TuneRequest.html +0 -354
  45. data/html/MIDI/Utils.html +0 -350
  46. data/html/README_rdoc.html +0 -882
  47. data/html/TODO_rdoc.html +0 -215
  48. data/html/created.rid +0 -14
  49. data/html/images/brick.png +0 -0
  50. data/html/images/brick_link.png +0 -0
  51. data/html/images/bug.png +0 -0
  52. data/html/images/bullet_black.png +0 -0
  53. data/html/images/bullet_toggle_minus.png +0 -0
  54. data/html/images/bullet_toggle_plus.png +0 -0
  55. data/html/images/date.png +0 -0
  56. data/html/images/find.png +0 -0
  57. data/html/images/loadingAnimation.gif +0 -0
  58. data/html/images/macFFBgHack.png +0 -0
  59. data/html/images/package.png +0 -0
  60. data/html/images/page_green.png +0 -0
  61. data/html/images/page_white_text.png +0 -0
  62. data/html/images/page_white_width.png +0 -0
  63. data/html/images/plugin.png +0 -0
  64. data/html/images/ruby.png +0 -0
  65. data/html/images/tag_green.png +0 -0
  66. data/html/images/wrench.png +0 -0
  67. data/html/images/wrench_orange.png +0 -0
  68. data/html/images/zoom.png +0 -0
  69. data/html/index.html +0 -1266
  70. data/html/js/darkfish.js +0 -116
  71. data/html/js/jquery.js +0 -32
  72. data/html/js/quicksearch.js +0 -114
  73. data/html/js/thickbox-compressed.js +0 -10
  74. data/html/lib/midilib/consts_rb.html +0 -55
  75. data/html/lib/midilib/event_rb.html +0 -56
  76. data/html/lib/midilib/info_rb.html +0 -52
  77. data/html/lib/midilib/io/midifile_rb.html +0 -54
  78. data/html/lib/midilib/io/seqreader_rb.html +0 -58
  79. data/html/lib/midilib/io/seqwriter_rb.html +0 -59
  80. data/html/lib/midilib/measure_rb.html +0 -54
  81. data/html/lib/midilib/sequence_rb.html +0 -58
  82. data/html/lib/midilib/track_rb.html +0 -54
  83. data/html/lib/midilib/utils_rb.html +0 -52
  84. data/html/lib/midilib_rb.html +0 -71
  85. data/html/rdoc.css +0 -706
@@ -1,215 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
-
5
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
- <head>
7
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
-
9
- <title>File: TODO.rdoc [midilib]</title>
10
-
11
- <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet" />
12
-
13
- <script src="./js/jquery.js" type="text/javascript"
14
- charset="utf-8"></script>
15
- <script src="./js/thickbox-compressed.js" type="text/javascript"
16
- charset="utf-8"></script>
17
- <script src="./js/quicksearch.js" type="text/javascript"
18
- charset="utf-8"></script>
19
- <script src="./js/darkfish.js" type="text/javascript"
20
- charset="utf-8"></script>
21
- </head>
22
-
23
- <body class="file">
24
- <div id="metadata">
25
- <div id="home-metadata">
26
- <div id="home-section" class="section">
27
- <h3 class="section-header">
28
- <a href="./index.html">Home</a>
29
- <a href="./index.html#classes">Classes</a>
30
- <a href="./index.html#methods">Methods</a>
31
- </h3>
32
- </div>
33
- </div>
34
-
35
- <div id="project-metadata">
36
-
37
-
38
- <div id="fileindex-section" class="section project-section">
39
- <h3 class="section-header">Files</h3>
40
- <ul>
41
-
42
- <li class="file"><a href="./README_rdoc.html">README.rdoc</a></li>
43
-
44
- <li class="file"><a href="./TODO_rdoc.html">TODO.rdoc</a></li>
45
-
46
- </ul>
47
- </div>
48
-
49
-
50
- <div id="classindex-section" class="section project-section">
51
- <h3 class="section-header">Class Index
52
- <span class="search-toggle"><img src="./images/find.png"
53
- height="16" width="16" alt="[+]"
54
- title="show/hide quicksearch" /></span></h3>
55
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
56
- <fieldset>
57
- <legend>Quicksearch</legend>
58
- <input type="text" name="quicksearch" value=""
59
- class="quicksearch-field" />
60
- </fieldset>
61
- </form>
62
-
63
- <ul class="link-list">
64
-
65
- <li><a href="./MIDI.html">MIDI</a></li>
66
-
67
- <li><a href="./MIDI/ActiveSense.html">MIDI::ActiveSense</a></li>
68
-
69
- <li><a href="./MIDI/ChannelEvent.html">MIDI::ChannelEvent</a></li>
70
-
71
- <li><a href="./MIDI/ChannelPressure.html">MIDI::ChannelPressure</a></li>
72
-
73
- <li><a href="./MIDI/Clock.html">MIDI::Clock</a></li>
74
-
75
- <li><a href="./MIDI/Continue.html">MIDI::Continue</a></li>
76
-
77
- <li><a href="./MIDI/Controller.html">MIDI::Controller</a></li>
78
-
79
- <li><a href="./MIDI/Event.html">MIDI::Event</a></li>
80
-
81
- <li><a href="./MIDI/IO.html">MIDI::IO</a></li>
82
-
83
- <li><a href="./MIDI/IO/MIDIFile.html">MIDI::IO::MIDIFile</a></li>
84
-
85
- <li><a href="./MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a></li>
86
-
87
- <li><a href="./MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a></li>
88
-
89
- <li><a href="./MIDI/KeySig.html">MIDI::KeySig</a></li>
90
-
91
- <li><a href="./MIDI/Marker.html">MIDI::Marker</a></li>
92
-
93
- <li><a href="./MIDI/Measure.html">MIDI::Measure</a></li>
94
-
95
- <li><a href="./MIDI/Measures.html">MIDI::Measures</a></li>
96
-
97
- <li><a href="./MIDI/MetaEvent.html">MIDI::MetaEvent</a></li>
98
-
99
- <li><a href="./MIDI/NoteEvent.html">MIDI::NoteEvent</a></li>
100
-
101
- <li><a href="./MIDI/NoteOff.html">MIDI::NoteOff</a></li>
102
-
103
- <li><a href="./MIDI/NoteOff.html">MIDI::NoteOff</a></li>
104
-
105
- <li><a href="./MIDI/NoteOn.html">MIDI::NoteOn</a></li>
106
-
107
- <li><a href="./MIDI/NoteOn.html">MIDI::NoteOn</a></li>
108
-
109
- <li><a href="./MIDI/PitchBend.html">MIDI::PitchBend</a></li>
110
-
111
- <li><a href="./MIDI/PolyPressure.html">MIDI::PolyPressure</a></li>
112
-
113
- <li><a href="./MIDI/ProgramChange.html">MIDI::ProgramChange</a></li>
114
-
115
- <li><a href="./MIDI/Realtime.html">MIDI::Realtime</a></li>
116
-
117
- <li><a href="./MIDI/Sequence.html">MIDI::Sequence</a></li>
118
-
119
- <li><a href="./MIDI/SongPointer.html">MIDI::SongPointer</a></li>
120
-
121
- <li><a href="./MIDI/SongSelect.html">MIDI::SongSelect</a></li>
122
-
123
- <li><a href="./MIDI/Start.html">MIDI::Start</a></li>
124
-
125
- <li><a href="./MIDI/Stop.html">MIDI::Stop</a></li>
126
-
127
- <li><a href="./MIDI/SystemCommon.html">MIDI::SystemCommon</a></li>
128
-
129
- <li><a href="./MIDI/SystemExclusive.html">MIDI::SystemExclusive</a></li>
130
-
131
- <li><a href="./MIDI/SystemReset.html">MIDI::SystemReset</a></li>
132
-
133
- <li><a href="./MIDI/Tempo.html">MIDI::Tempo</a></li>
134
-
135
- <li><a href="./MIDI/TimeSig.html">MIDI::TimeSig</a></li>
136
-
137
- <li><a href="./MIDI/Track.html">MIDI::Track</a></li>
138
-
139
- <li><a href="./MIDI/TuneRequest.html">MIDI::TuneRequest</a></li>
140
-
141
- <li><a href="./MIDI/Utils.html">MIDI::Utils</a></li>
142
-
143
- <li><a href="./Array.html">Array</a></li>
144
-
145
- <li><a href="./IO.html">IO</a></li>
146
-
147
- </ul>
148
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
149
- </div>
150
-
151
-
152
- </div>
153
- </div>
154
-
155
- <div id="documentation">
156
- <h2>Bugs</h2>
157
- <p>
158
- No known bugs. (If that&#8217;s not a challenge, I don&#8217;t know what
159
- is.)
160
- </p>
161
- <h2>Features</h2>
162
- <ul>
163
- <li><h1>print_decimal_numbers= and =print_channel_numbers_from_one= should be</h1>
164
- <p>
165
- associated with sequence, or perhaps track, not event.
166
- </p>
167
- </li>
168
- <li><p>
169
- Method to translate event&#8217;s time_from_start to number of milliseconds
170
- from start.
171
- </p>
172
- </li>
173
- <li><p>
174
- Swing quantizing. (Implied by list email from Carl Youngblood
175
- <carl.youngblood@gmail.com>)
176
- </p>
177
- </li>
178
- <li><p>
179
- Implement key signature in SeqReader.
180
- </p>
181
- </li>
182
- <li><p>
183
- Format 0 files.
184
- </p>
185
- </li>
186
- <li><p>
187
- Format 2 files(?).
188
- </p>
189
- </li>
190
- </ul>
191
- <h2>Documentation</h2>
192
- <ul>
193
- <li><p>
194
- Write better docs.
195
- </p>
196
- </li>
197
- </ul>
198
- <h2>Tests</h2>
199
- <ul>
200
- <li><p>
201
- Tests for Noah Thorp&#8217;s midilib bug fixes.
202
- </p>
203
- </li>
204
- </ul>
205
-
206
- </div>
207
-
208
- <div id="validator-badges">
209
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
210
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
211
- Rdoc Generator</a> 1.1.6</small>.</p>
212
- </div>
213
- </body>
214
- </html>
215
-
@@ -1,14 +0,0 @@
1
- Sun, 03 Oct 2010 10:16:04 -0400
2
- README.rdoc Sun, 03 Oct 2010 10:14:05 -0400
3
- TODO.rdoc Sun, 03 Oct 2010 10:09:23 -0400
4
- lib/midilib/consts.rb Tue, 10 Nov 2009 10:33:07 -0500
5
- lib/midilib/event.rb Sun, 03 Oct 2010 10:09:23 -0400
6
- lib/midilib/info.rb Sun, 03 Oct 2010 10:09:23 -0400
7
- lib/midilib/io/midifile.rb Tue, 10 Nov 2009 10:33:07 -0500
8
- lib/midilib/io/seqreader.rb Sun, 03 Oct 2010 10:09:23 -0400
9
- lib/midilib/io/seqwriter.rb Tue, 20 Jul 2010 08:10:07 -0400
10
- lib/midilib/measure.rb Tue, 10 Nov 2009 10:33:07 -0500
11
- lib/midilib/sequence.rb Sun, 03 Oct 2010 10:09:23 -0400
12
- lib/midilib/track.rb Sun, 03 Oct 2010 10:09:23 -0400
13
- lib/midilib/utils.rb Tue, 10 Nov 2009 10:33:07 -0500
14
- lib/midilib.rb Fri, 02 Apr 2010 15:06:32 -0400
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,1266 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
-
5
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
6
- <head>
7
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
-
9
- <title>midilib</title>
10
-
11
- <link type="text/css" media="screen" href="rdoc.css" rel="stylesheet" />
12
-
13
- <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
14
- <script src="js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
15
- <script src="js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
16
- <script src="js/darkfish.js" type="text/javascript" charset="utf-8"></script>
17
-
18
- </head>
19
- <body class="indexpage">
20
-
21
-
22
- <h1>midilib</h1>
23
-
24
-
25
- <div id="main">
26
-
27
- <p>
28
- midilib is a pure Ruby <a href="MIDI.html">MIDI</a> library useful for
29
- reading and writing standard <a href="MIDI.html">MIDI</a> files and
30
- manipulating <a href="MIDI.html">MIDI</a> event data. Classes include <a
31
- href="MIDI/Sequence.html">MIDI::Sequence</a>, <a
32
- href="MIDI/Track.html">MIDI::Track</a>, <a
33
- href="MIDI/Event.html">MIDI::Event</a>, and <a
34
- href="MIDI/IO/MIDIFile.html">MIDI::IO::MIDIFile</a> and its subclasses <a
35
- href="MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a> and <a
36
- href="MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a>.
37
- </p>
38
- <p>
39
- The GitHub project page and Web site of midilib is <a
40
- href="http://github.com/jimm/midilib">github.com/jimm/midilib</a> and the
41
- RubyGems.org page is <a
42
- href="http://rubygems.org/gems/midilib">rubygems.org/gems/midilib</a>,
43
- where you can also find all the RDoc documentation.
44
- </p>
45
- <p>
46
- midilib is compatible with both Ruby 1.8.x and 1.9.x.
47
- </p>
48
- <h2>Dependencies</h2>
49
- <p>
50
- midilib does not require any other packages. The test suite in the tests
51
- directory requires the testing framework TestUnit, which comes with Ruby
52
- 1.8 and later and can also be found in the Ruby Application Archive (<a
53
- href="http://raa.ruby-lang.org">raa.ruby-lang.org</a>).
54
- </p>
55
- <p>
56
- To rebuild the gem or RDocs or run the tests easily, you can use the
57
- Rakefile which requires Rake (<a
58
- href="http://rake.rubyforge.org">rake.rubyforge.org</a>).
59
- </p>
60
- <h2>Installation</h2>
61
- <h3>RubyGems Installation</h3>
62
- <p>
63
- To install midilib as a gem, type
64
- </p>
65
- <pre>
66
- % gem install midilib
67
- </pre>
68
- <p>
69
- or
70
- </p>
71
- <pre>
72
- % gem update midilib
73
- </pre>
74
- <p>
75
- if you already have a previous version. You may need root privileges to
76
- install or update the gem.
77
- </p>
78
- <h3>Manual Installation</h3>
79
- <p>
80
- After downloading and expanding the archive, you can install midilib with
81
- the command
82
- </p>
83
- <pre>
84
- % ruby install.rb
85
- </pre>
86
- <p>
87
- (or)
88
- </p>
89
- <pre>
90
- % ruby install.rb --install-dir=my_directory
91
- </pre>
92
- <p>
93
- You may need root privileges to install.
94
- </p>
95
- <h2>Testing</h2>
96
- <pre>
97
- % rake test
98
- </pre>
99
- <p>
100
- runs all of the tests in the test directory.
101
- </p>
102
- <h2>Overview</h2>
103
- <p>
104
- <a href="MIDI.html">MIDI</a> file <a href="IO.html">IO</a> only understands
105
- <a href="MIDI.html">MIDI</a> file format 1, where a sequence is made up of
106
- multiple tracks. It doesn&#8217;t yet understand format 0 (a single track
107
- containing all events) or format 2 (a collection of format 0 files in one
108
- file).
109
- </p>
110
- <h3><a href="MIDI/Sequence.html">MIDI::Sequence</a></h3>
111
- <p>
112
- A sequence contains a collection of tracks and global information like the
113
- sequence&#8217;s pulses per quarter note (ppqn) and time signature.
114
- </p>
115
- <p>
116
- The first track in a sequence is special; it holds meta-events like tempo
117
- and sequence name. Don&#8217;t put any notes in this track.
118
- </p>
119
- <p>
120
- <a href="MIDI/Sequence.html">MIDI::Sequence</a> also contains some
121
- convenience methods that let you set and retrieve the sequence&#8217;s
122
- name, the time signature, and to retrieve the first tempo event&#8217;s
123
- beats-per-minute value.
124
- </p>
125
- <p>
126
- Normally instances of <a
127
- href="MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a> and <a
128
- href="MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a> are used when a
129
- sequence reads itself from or writes itself to a <a
130
- href="MIDI.html">MIDI</a> file. You can change that by setting a
131
- sequence&#8217;s reader_class or writer_class attributes. Instances of the
132
- classes contained in those attributes are created and used whenever the
133
- sequence reads or writes itself.
134
- </p>
135
- <h3><a href="MIDI/Track.html">MIDI::Track</a></h3>
136
- <p>
137
- A track contains an array of events.
138
- </p>
139
- <p>
140
- When you modify the <tt>events</tt> array, make sure to call recalc_times
141
- so each event gets its <tt>time_from_start</tt> recalculated. You
142
- don&#8217;t have to do that after every event you add; just remember to do
143
- so before using the track in a way that expects the list of events to be
144
- ordered correctly.
145
- </p>
146
- <p>
147
- A Track also holds a bit mask that specifies the channels used by the
148
- track. This bit mask is set when the track is read from the <a
149
- href="MIDI.html">MIDI</a> file by a SeqReader but is <em>not</em> kept up
150
- to date by any other methods. Specifically, if you add events to a track at
151
- any other time, the bit mask will not be updated.
152
- </p>
153
- <h3><a href="MIDI/Measure.html">MIDI::Measure</a></h3>
154
- <p>
155
- This class contains information about a measure from the sequence. Measure
156
- data is based on the time signature information from the sequence and is
157
- not stored in the sequence itself.
158
- </p>
159
- <h3><a href="MIDI/Measures.html">MIDI::Measures</a></h3>
160
- <p>
161
- The class <a href="MIDI/Sequence.html">MIDI::Sequence</a> method
162
- get_measures returns a <a href="MIDI/Measures.html">MIDI::Measures</a>
163
- object. <a href="MIDI/Measures.html">MIDI::Measures</a> is a subclass of <a
164
- href="Array.html">Array</a>. It is a specialized container for <a
165
- href="MIDI/Measure.html">MIDI::Measure</a> objects, which can be use to map
166
- event times to measure numbers. Please note that this object has to be
167
- remade when events are deleted/added in the sequence.
168
- </p>
169
- <p>
170
- <a href="MIDI/Measure.html">MIDI::Measure</a> and <a
171
- href="MIDI/Measures.html">MIDI::Measures</a> are brought to us by Jari
172
- Williamsson <jari.williamsson@mailbox.swipnet.se>, who also contributed
173
- some improvements to the <a href="MIDI/Event.html">MIDI::Event</a> and <a
174
- href="MIDI/Track.html">MIDI::Track</a> classes.
175
- </p>
176
- <h3><a href="MIDI/Event.html">MIDI::Event</a></h3>
177
- <p>
178
- Each event holds not only its delta time but also its time from the start
179
- of the track. The track is responsible for recalculating its events&#8217;
180
- start times. You can call <a
181
- href="MIDI/Track.html#method-i-recalc_times">MIDI::Track#recalc_times</a>
182
- to do so.
183
- </p>
184
- <p>
185
- Events have a number of boolean methods that identify their types, like
186
- channel?, note?, note_on?, note_off?, meta?, system?, realtime?, and
187
- program_change?. Events know how to print themselves. By default, all
188
- numbers are printed as hexidecimal and channel numbers are printed from
189
- 0-15. Setting print_decimal_numbers to true will output decimal numbers and
190
- setting print_channel_numbers_from_one will output channel numbers from
191
- 1-16.
192
- </p>
193
- <p>
194
- Subclasses of <a href="MIDI/Event.html">MIDI::Event</a> implement the
195
- various <a href="MIDI.html">MIDI</a> messages such as note on and off,
196
- controller values, system exclusive data, and realtime bytes.
197
- </p>
198
- <p>
199
- <a href="MIDI/Realtime.html">MIDI::Realtime</a> events have delta values
200
- and start times, just like all the other midilib event types do. (<a
201
- href="MIDI.html">MIDI</a> real time status bytes don&#8217;t have delta
202
- times, but this way we can record when in a track the realtime byte was
203
- received and should be sent. This is useful for start/continue/stop events
204
- that control other devices, for example.) Note that when a <a
205
- href="MIDI/Realtime.html">MIDI::Realtime</a> event is written out to a <a
206
- href="MIDI.html">MIDI</a> file, the delta time is not written.
207
- </p>
208
- <p>
209
- <a href="MIDI/MetaEvent.html">MIDI::MetaEvent</a> events hold an array of
210
- bytes named &#8216;data&#8217;. Many meta events are string holders (text,
211
- lyric, marker, etc.) Though the &#8216;data&#8217; value is always an array
212
- of bytes, <a href="MIDI/MetaEvent.html">MIDI::MetaEvent</a> helps with
213
- saving and accessing string. The <a
214
- href="MIDI/MetaEvent.html#method-i-data_as_str">MIDI::MetaEvent#data_as_str</a>
215
- method returns the data bytes as a string. When assigning to a meta
216
- event&#8217;s data, if you pass in a string it will get converted to an
217
- array of bytes.
218
- </p>
219
- <h2>How To Use</h2>
220
- <p>
221
- The following examples show you how to use midilib to read, write, and
222
- manipulate <a href="MIDI.html">MIDI</a> files and modify track events. See
223
- also the files in the examples directory, which are described below.
224
- </p>
225
- <h3>Reading a <a href="MIDI.html">MIDI</a> File</h3>
226
- <p>
227
- To read a <a href="MIDI.html">MIDI</a> file, create a <a
228
- href="MIDI/Sequence.html">MIDI::Sequence</a> object and call its # method,
229
- passing in an <a href="IO.html">IO</a> object.
230
- </p>
231
- <p>
232
- The # method takes an optional block. If present, the block is called once
233
- after each track has finished being read. Each time, it is passed the total
234
- number of tracks and the number of the current track that has just been
235
- read. This is useful for notifying the user of progress, for example by
236
- updating a GUI progress bar.
237
- </p>
238
- <pre>
239
- require 'midilib/io/seqreader'
240
-
241
- # Create a new, empty sequence.
242
- seq = MIDI::Sequence.new()
243
-
244
- # Read the contents of a MIDI file into the sequence.
245
- File.open('my_midi_file.mid', 'rb') { | file |
246
- seq.read(file) { | num_tracks, i |
247
- # Print something when each track is read.
248
- puts &quot;read track #{i} of #{num_tracks}&quot;
249
- }
250
- }
251
- </pre>
252
- <h3>Writing a <a href="MIDI.html">MIDI</a> File</h3>
253
- <p>
254
- To write a <a href="MIDI.html">MIDI</a> file, call the write method,
255
- passing in an <a href="IO.html">IO</a> object.
256
- </p>
257
- <pre>
258
- require 'midilib/io/seqwriter'
259
-
260
- # Start with a sequence that has something worth saving.
261
- seq = read_or_create_seq_we_care_not_how()
262
-
263
- # Write the sequence to a MIDI file.
264
- File.open('my_output_file.mid', 'wb') { | file | seq.write(file) }
265
- </pre>
266
- <h3>Editing a <a href="MIDI.html">MIDI</a> File</h3>
267
- <p>
268
- Combining the last two examples, here is a script that reads a <a
269
- href="MIDI.html">MIDI</a> file, transposes some events, and writes the
270
- sequence out to a different file. This is a useful template for
271
- programatically manipulating <a href="MIDI.html">MIDI</a> data.
272
- </p>
273
- <p>
274
- This code transposes all of the note events (note on, note off, and poly
275
- pressure) on channel 5 down one octave. It&#8217;s easy to find events that
276
- need to be transposed: the method # returns true.
277
- </p>
278
- <h4>Transposing One Channel</h4>
279
- <pre>
280
- require 'midilib/io/seqreader'
281
- require 'midilib/io/seqwriter'
282
-
283
- # Create a new, empty sequence.
284
- seq = MIDI::Sequence.new()
285
-
286
- # Read the contents of a MIDI file into the sequence.
287
- File.open('my_input_file.mid', 'rb') { | file |
288
- seq.read(file) { | num_tracks, i |
289
- # Print something when each track is read.
290
- puts &quot;read track #{i} of #{num_tracks}&quot;
291
- }
292
- }
293
-
294
- # Iterate over every event in every track.
295
- seq.each { | track |
296
- track.each { | event |
297
- # If the event is a note event (note on, note off, or poly
298
- # pressure) and it is on MIDI channel 5 (channels start at
299
- # 0, so we use 4), then transpose the event down one octave.
300
- if event.note? &amp;&amp; event.channel == 4
301
- event.note -= 12
302
- end
303
- }
304
- }
305
-
306
- # Write the sequence to a MIDI file.
307
- File.open('my_output_file.mid', 'wb') { | file | seq.write(file) }
308
- </pre>
309
- <h3>Manipulating tracks</h3>
310
- <p>
311
- If you modify a track&#8217;s list of events directly, don&#8217;t forget
312
- to call <a
313
- href="MIDI/Track.html#method-i-recalc_times">MIDI::Track#recalc_times</a>
314
- when you are done.
315
- </p>
316
- <pre>
317
- track.events[42, 1] = array_of_events
318
- track.events &lt;&lt; an_event
319
- track.merge(array_of_events)
320
- track.recalc_times
321
- </pre>
322
- <h3>Calculating delta times</h3>
323
- <p>
324
- A few methods in <a href="MIDI/Sequence.html">MIDI::Sequence</a> make it
325
- easier to calculate the delta times that represent note lengths. <a
326
- href="MIDI/Sequence.html#method-i-length_to_delta">MIDI::Sequence#length_to_delta</a>
327
- takes a note length (a multiple of a quarter note) and returns the delta
328
- time given the sequence&#8217;s current ppqn (pulses per quarter note)
329
- setting. 1 is a quarter note, 1.0/32.0 is a 32nd note (use floating-point
330
- numbers to avoid integer rounding), 1.5 is a dotted quarter, etc. See the
331
- documentation for that method for more information.
332
- </p>
333
- <p>
334
- <a
335
- href="MIDI/Sequence.html#method-i-note_to_length">MIDI::Sequence#note_to_length</a>
336
- takes a note name and returns a length value (again, as a multiple of a
337
- quarter note). Legal note names are those found in
338
- MIDI::Sequence::NOTE_TO_LENGTH, and may begin with &#8220;dotted&#8221;
339
- and/or end with &#8220;triplet&#8221;. For example, &#8220;whole&#8221;,
340
- &#8220;sixteenth&#8221;, &#8220;32nd&#8221;, &#8220;quarter triplet&#8221;,
341
- &#8220;dotted 16th&#8221;, and &#8220;dotted 8th triplet&#8221; are all
342
- legal note names.
343
- </p>
344
- <p>
345
- Finally, <a
346
- href="MIDI/Sequence.html#method-i-note_to_delta">MIDI::Sequence#note_to_delta</a>
347
- takes a note name and returns a delta time. It does this by calling
348
- note_to_length, then passing the result to length_to_delta.
349
- </p>
350
- <h3>Example Scripts</h3>
351
- <p>
352
- Here are short descriptions of each of the examples found in the examples
353
- directory.
354
- </p>
355
- <ul>
356
- <li><p>
357
- examples/from_scratch.rb shows you how to create a new sequence from
358
- scratch and save it to a <a href="MIDI.html">MIDI</a> file. It creates a
359
- file called &#8216;from_scratch.mid&#8217;.
360
- </p>
361
- </li>
362
- <li><p>
363
- examples/seq2text.rb dumps a <a href="MIDI.html">MIDI</a> file as text. It
364
- reads in a sequence and uses the to_s method of each event.
365
- </p>
366
- </li>
367
- <li><p>
368
- examples/reader2text.rb dumps a <a href="MIDI.html">MIDI</a> file as text.
369
- It subclasses MIDI::SeqReader instead of creating a sequence containing
370
- tracks and events.
371
- </p>
372
- </li>
373
- <li><p>
374
- examples/transpose.rb transposes all note events (note on, note off, poly
375
- pressure) on a specified channel by a specified amount.
376
- </p>
377
- </li>
378
- <li><p>
379
- There is also one <a href="MIDI.html">MIDI</a> file, examples/NoFences.mid.
380
- It is a little pop ditty I wrote. The instruments in this file use General
381
- <a href="MIDI.html">MIDI</a> patch numbers and drum note assignments. Since
382
- I don&#8217;t normally use GM patches, the sounds used here are at best
383
- approximations of the sounds I use.
384
- </p>
385
- </li>
386
- </ul>
387
- <h2>Resources</h2>
388
- <p>
389
- The Ruby Web site (<a
390
- href="http://www.ruby-lang.org/en/index.html">www.ruby-lang.org/en/index.html</a>)
391
- contains an introduction to Ruby, the Ruby Application Archive (RAA) at <a
392
- href="http://raa.ruby-lang.org">raa.ruby-lang.org</a>, and pointers to more
393
- information.
394
- </p>
395
- <p>
396
- <cite>Programming Ruby, The Pragmatic Programmer&#8217;s Guide</cite>, by
397
- David Thomas and Andrew Hunt, is a well-written and practical introduction
398
- to Ruby. Its Web page at <a
399
- href="http://www.rubycentral.com/book">www.rubycentral.com/book</a> also
400
- contains a wealth of Ruby information. Though the first edition book is
401
- available online, I encourage you to purchase a copy of the latest edition.
402
- </p>
403
- <p>
404
- A description of the <a href="MIDI.html">MIDI</a> file format can be found
405
- in a few places such as <a
406
- href="http://www.borg.com/~jglatt/tech/midifile.htm.">www.borg.com/~jglatt/tech/midifile.htm.</a>
407
- </p>
408
- <p>
409
- The <a href="MIDI.html">MIDI</a> message reference at <a
410
- href="http://www.io.com/~jimm/midi_ref.html">www.io.com/~jimm/midi_ref.html</a>
411
- describes the format of <a href="MIDI.html">MIDI</a> commands.
412
- </p>
413
- <h1>To Do</h1>
414
- <h2>Bugs</h2>
415
- <p>
416
- No known bugs. (If that&#8217;s not a challenge, I don&#8217;t know what
417
- is.)
418
- </p>
419
- <h2>Features</h2>
420
- <ul>
421
- <li><h1>print_decimal_numbers= and =print_channel_numbers_from_one= should be</h1>
422
- <p>
423
- associated with sequence, or perhaps track, not event.
424
- </p>
425
- </li>
426
- <li><p>
427
- Method to translate event&#8217;s time_from_start to number of milliseconds
428
- from start.
429
- </p>
430
- </li>
431
- <li><p>
432
- Swing quantizing. (Implied by list email from Carl Youngblood
433
- <carl.youngblood@gmail.com>)
434
- </p>
435
- </li>
436
- <li><p>
437
- Implement key signature in SeqReader.
438
- </p>
439
- </li>
440
- <li><p>
441
- Format 0 files.
442
- </p>
443
- </li>
444
- <li><p>
445
- Format 2 files(?).
446
- </p>
447
- </li>
448
- </ul>
449
- <h2>Documentation</h2>
450
- <ul>
451
- <li><p>
452
- Write better docs.
453
- </p>
454
- </li>
455
- </ul>
456
- <h2>Tests</h2>
457
- <ul>
458
- <li><p>
459
- Tests for Noah Thorp&#8217;s midilib bug fixes.
460
- </p>
461
- </li>
462
- </ul>
463
- <h1>Support</h1>
464
- <ul>
465
- <li><p>
466
- Visit the forums, bug list, and mailing list pages at <a
467
- href="http://rubyforge.org/projects/midilib">rubyforge.org/projects/midilib</a>
468
- </p>
469
- </li>
470
- <li><p>
471
- Send email to Jim Menard at <a href="mailto:jimm@io.com">jimm@io.com</a>
472
- </p>
473
- </li>
474
- <li><p>
475
- Ask on the ruby-talk mailing list
476
- </p>
477
- </li>
478
- </ul>
479
- <h1>Administrivia</h1>
480
- <table>
481
- <tr><td valign="top">Author</td><td><p>
482
- Jim Menard (<a href="mailto:jimm@io.com">jimm@io.com</a>)
483
- </p>
484
- </td></tr>
485
- <tr><td valign="top">Copyright</td><td><p>
486
- Copyright &#169; 2003-2010 Jim Menard
487
- </p>
488
- </td></tr>
489
- <tr><td valign="top">License</td><td><p>
490
- Distributed under the same license as Ruby.
491
- </p>
492
- </td></tr>
493
- </table>
494
- <h2>Copying</h2>
495
- <p>
496
- midilib is copyrighted free software by Jim Menard and is released under
497
- the same license as Ruby. See the Ruby license at <a
498
- href="http://www.ruby-lang.org/en/LICENSE.txt.">www.ruby-lang.org/en/LICENSE.txt.</a>
499
- </p>
500
- <p>
501
- midilib may be freely copied in its entirety providing this notice, all
502
- source code, all documentation, and all other files are included.
503
- </p>
504
- <p>
505
- midilib is Copyright &#169; 2003-2010 by Jim Menard.
506
- </p>
507
- <p>
508
- The song &#8220;No Fences&#8221; contained in the <a
509
- href="MIDI.html">MIDI</a> file examples/NoFences.mid is Copyright &#169;
510
- 1992 by Jim Menard (jimm@io.com). It may be freely used for non-commercial
511
- purposes as long as the author is given credit.
512
- </p>
513
- <h3>Recent Changes</h3>
514
- <h4>Changes for 2.0.0:</h4>
515
- <p>
516
- <a href="MIDI/NoteOn.html">MIDI::NoteOnEvent</a> and <a
517
- href="MIDI/NoteOff.html">MIDI::NoteOffEvent</a> renamed to <a
518
- href="MIDI/NoteOn.html">MIDI::NoteOn</a> and <a
519
- href="MIDI/NoteOff.html">MIDI::NoteOff</a>. The old names will still work
520
- for a while.
521
- </p>
522
- <p>
523
- The <a href="MIDI/Event.html">MIDI::Event</a> boolean methods like meta?
524
- and note? have been removed. Use the event classes themselves (for example,
525
- <a href="MIDI/MetaEvent.html">MIDI::MetaEvent</a> === my_event or
526
- my_event.kind_of?(<a href="MIDI/MetaEvent.html">MIDI::MetaEvent</a>)). Case
527
- statements that use classes work, too:
528
- </p>
529
- <pre>
530
- case my_event
531
- when MIDI::NoteOn
532
- do_this()
533
- when MIDI::NoteOff
534
- do_that()
535
- end
536
- </pre>
537
- <p>
538
- Introduced Adam Murray&#8217;s stable sorting code for <a
539
- href="MIDI/Track.html#method-i-recalc_delta_from_times">MIDI::Track#recalc_delta_from_times</a>.
540
- See <a
541
- href="http://wiki.github.com/adamjmurray/cosy/midilib-notes">wiki.github.com/adamjmurray/cosy/midilib-notes</a>
542
- and <a
543
- href="http://github.com/adamjmurray/cosy/blob/master/lib/cosy/helper/midi_file_renderer_helper.rb">github.com/adamjmurray/cosy/blob/master/lib/cosy/helper/midi_file_renderer_helper.rb</a>
544
- for details.
545
- </p>
546
- <p>
547
- Aliased <a href="MIDI/Track.html#method-i-sort">MIDI::Track#sort</a> to <a
548
- href="MIDI/Track.html#method-i-recalc_delta_from_times">MIDI::Track#recalc_delta_from_times</a>,
549
- since all sort did was sort the events then call recalc_delta_from_times,
550
- and recalc_delta_from_times sorts the events before doing anything else.
551
- </p>
552
- <p>
553
- MIDI::Tempo#mpq_to_bpm now returns a float.
554
- </p>
555
- <h4>Changes for 1.2.0:</h4>
556
- <p>
557
- Use byte arrays instead of strings for passing around data. All tests now
558
- pass for both Ruby 1.8.X and 1.9.X.
559
- </p>
560
- <h4>New code repository</h4>
561
- <p>
562
- The midilib code is now hosted at Github (<a
563
- href="http://github.com/jimm/midilib">github.com/jimm/midilib</a>).
564
- </p>
565
- <h4>Changes for 1.1.4:</h4>
566
- <ul>
567
- <li><p>
568
- Fixed a bug in KeySig.data_as_bytes. Thanks to Noah Thorp for finding this
569
- and the bug fixed in 1.1.3.
570
- </p>
571
- </li>
572
- </ul>
573
- <h4>Changes for 1.1.3:</h4>
574
- <ul>
575
- <li><p>
576
- Fixed the way midilib detects the behavior of IO.getc.
577
- </p>
578
- </li>
579
- </ul>
580
- <h4>Changes for 1.1.2:</h4>
581
- <ul>
582
- <li><p>
583
- Define <a
584
- href="MIDI/IO/MIDIFile.html#method-i-getc">MIDI::IO::MIDIFile.getc</a>
585
- differently for different Ruby versions, instead of checking for
586
- String.bytes every time we read a byte.
587
- </p>
588
- </li>
589
- </ul>
590
- <h4>Changes for 1.1.1:</h4>
591
- <ul>
592
- <li><p>
593
- Make <a
594
- href="MIDI/IO/MIDIFile.html#method-i-getc">MIDI::IO::MIDIFile.getc</a> do
595
- the right thing for both Ruby 1.8 and 1.9.
596
- </p>
597
- </li>
598
- </ul>
599
- <h4>Changes for 1.1.0:</h4>
600
- <ul>
601
- <li><p>
602
- Added test/test.mid to list of files to be included when packaging midifile
603
- for distribution.
604
- </p>
605
- </li>
606
- </ul>
607
- <h4>Changes for 1.0.0:</h4>
608
- <ul>
609
- <li><p>
610
- Fixed the bug in Track#recalc_delta_from_times found by Christopher Rose.
611
- </p>
612
- </li>
613
- </ul>
614
- <h4>Changes for 0.8.7:</h4>
615
- <ul>
616
- <li><p>
617
- Fixed the misspelled POLY_PRESSURE constant, thanks to Mario Pehle.
618
- </p>
619
- </li>
620
- </ul>
621
- <h4>Changes for 0.8.6:</h4>
622
- <ul>
623
- <li><p>
624
- Added missing test/test.mid.
625
- </p>
626
- </li>
627
- </ul>
628
- <h4>Changes for 0.8.5:</h4>
629
- <ul>
630
- <li><p>
631
- Fixed bugs in <a href="MIDI/PitchBend.html">MIDI::PitchBend</a> reading and
632
- writing, thanks to Emanuel Borsboom.
633
- </p>
634
- </li>
635
- <li><p>
636
- Fixed a bug in <a
637
- href="MIDI/Track.html#method-i-quantize">MIDI::Track#quantize</a>.
638
- </p>
639
- </li>
640
- <li><p>
641
- The argument to <a
642
- href="MIDI/Track.html#method-i-quantize">MIDI::Track#quantize</a> has
643
- changed: it is now either a note name (&#8220;sixteenth&#8221;,
644
- &#8220;32nd&#8221;, &#8220;8th triplet&#8221;) or a length (1 = quarter,
645
- 0.25 = sixteenth). This is a drastic change that will break all previous
646
- calls to quantize. However, since that method was broken already, I
647
- don&#8217;t feel it&#8217;s a burden to anybody to change the arguments.
648
- </p>
649
- </li>
650
- </ul>
651
- <h4>Changes for 0.8.4:</h4>
652
- <ul>
653
- <li><p>
654
- Realtime status bytes now set @is_realtime to true and return true when
655
- realtime? is called.
656
- </p>
657
- </li>
658
- <li><p>
659
- All system common events now set @is_system to true and return true when
660
- system? is called, not just system exclusive events.
661
- </p>
662
- </li>
663
- <li><p>
664
- Added examples/from_scratch.rb, which shows how to create a sequence
665
- manually.
666
- </p>
667
- </li>
668
- <li><p>
669
- New <a href="MIDI/Sequence.html">MIDI::Sequence</a> methods that turn note
670
- length names like &#8220;32nd&#8221;, &#8220;dotted quarter&#8221;, and
671
- &#8220;16th triplet&#8221; into delta times. See the docs below and
672
- MIDI::Sequence::length_to_delta, MIDI::Sequence::note_to_length, and
673
- MIDI::Sequence::note_to_delta.
674
- </p>
675
- </li>
676
- </ul>
677
- <h4>Changes for 0.8.3:</h4>
678
- <ul>
679
- <li><p>
680
- Added <a
681
- href="MIDI/NoteEvent.html#method-i-note_to_s">MIDI::NoteEvent.note_to_s</a>,
682
- which returns note name as a string like &#8220;C4&#8221; or
683
- &#8220;F#6&#8221;.
684
- </p>
685
- </li>
686
- <li><p>
687
- Added new boolean attributes to MIDI::Event: @print_decimal_numbers and
688
- @print_note_names. These are used by all Event to_s methods. See
689
- examples/seq2text.rb for an example.
690
- </p>
691
- </li>
692
- </ul>
693
- <h4>Changes for 0.8.2:</h4>
694
- <ul>
695
- <li><p>
696
- Changed MIDI::MetaEvent.type to MIDI::MetaEvent.event_type to avoid runtime
697
- complaints about Object#type calls.
698
- </p>
699
- </li>
700
- <li><p>
701
- Added &#8216;b&#8217; binary flag to file open modes for Windows.
702
- </p>
703
- </li>
704
- <li><p>
705
- Fixed $LOAD_PATH in example files.
706
- </p>
707
- </li>
708
- <li><p>
709
- Fixed read and write block arguments.
710
- </p>
711
- </li>
712
- <li><p>
713
- Fixed other example script bugs.
714
- </p>
715
- </li>
716
- </ul>
717
- <h4>Changes for 0.8.1:</h4>
718
- <ul>
719
- <li><p>
720
- Fixed track sorting.
721
- </p>
722
- </li>
723
- <li><p>
724
- Fixed track&#8217;s recalc_delta_from_times method.
725
- </p>
726
- </li>
727
- <li><p>
728
- Fixed event quantization.
729
- </p>
730
- </li>
731
- <li><p>
732
- More tests and documentation.
733
- </p>
734
- </li>
735
- </ul>
736
- <h2>Warranty</h2>
737
- <p>
738
- This software is provided &#8220;as is&#8221; and without any express or
739
- implied warranties, including, without limitation, the implied warranties
740
- of merchantability and fitness for a particular purpose.
741
- </p>
742
-
743
- </div>
744
-
745
-
746
-
747
-
748
- <h2>Files</h2>
749
- <ul>
750
-
751
- <li class="file"><a href="README_rdoc.html">README.rdoc</a></li>
752
-
753
- <li class="file"><a href="TODO_rdoc.html">TODO.rdoc</a></li>
754
-
755
- </ul>
756
-
757
-
758
- <h2 id="classes">Classes/Modules</h2>
759
- <ul>
760
-
761
- <li class="module"><a href="MIDI.html">MIDI</a></li>
762
-
763
- <li class="class"><a href="MIDI/ActiveSense.html">MIDI::ActiveSense</a></li>
764
-
765
- <li class="class"><a href="MIDI/ChannelEvent.html">MIDI::ChannelEvent</a></li>
766
-
767
- <li class="class"><a href="MIDI/ChannelPressure.html">MIDI::ChannelPressure</a></li>
768
-
769
- <li class="class"><a href="MIDI/Clock.html">MIDI::Clock</a></li>
770
-
771
- <li class="class"><a href="MIDI/Continue.html">MIDI::Continue</a></li>
772
-
773
- <li class="class"><a href="MIDI/Controller.html">MIDI::Controller</a></li>
774
-
775
- <li class="class"><a href="MIDI/Event.html">MIDI::Event</a></li>
776
-
777
- <li class="module"><a href="MIDI/IO.html">MIDI::IO</a></li>
778
-
779
- <li class="class"><a href="MIDI/IO/MIDIFile.html">MIDI::IO::MIDIFile</a></li>
780
-
781
- <li class="class"><a href="MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a></li>
782
-
783
- <li class="class"><a href="MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a></li>
784
-
785
- <li class="class"><a href="MIDI/KeySig.html">MIDI::KeySig</a></li>
786
-
787
- <li class="class"><a href="MIDI/Marker.html">MIDI::Marker</a></li>
788
-
789
- <li class="class"><a href="MIDI/Measure.html">MIDI::Measure</a></li>
790
-
791
- <li class="class"><a href="MIDI/Measures.html">MIDI::Measures</a></li>
792
-
793
- <li class="class"><a href="MIDI/MetaEvent.html">MIDI::MetaEvent</a></li>
794
-
795
- <li class="class"><a href="MIDI/NoteEvent.html">MIDI::NoteEvent</a></li>
796
-
797
- <li class="class"><a href="MIDI/NoteOff.html">MIDI::NoteOff</a></li>
798
-
799
- <li class="class"><a href="MIDI/NoteOff.html">MIDI::NoteOff</a></li>
800
-
801
- <li class="class"><a href="MIDI/NoteOn.html">MIDI::NoteOn</a></li>
802
-
803
- <li class="class"><a href="MIDI/NoteOn.html">MIDI::NoteOn</a></li>
804
-
805
- <li class="class"><a href="MIDI/PitchBend.html">MIDI::PitchBend</a></li>
806
-
807
- <li class="class"><a href="MIDI/PolyPressure.html">MIDI::PolyPressure</a></li>
808
-
809
- <li class="class"><a href="MIDI/ProgramChange.html">MIDI::ProgramChange</a></li>
810
-
811
- <li class="class"><a href="MIDI/Realtime.html">MIDI::Realtime</a></li>
812
-
813
- <li class="class"><a href="MIDI/Sequence.html">MIDI::Sequence</a></li>
814
-
815
- <li class="class"><a href="MIDI/SongPointer.html">MIDI::SongPointer</a></li>
816
-
817
- <li class="class"><a href="MIDI/SongSelect.html">MIDI::SongSelect</a></li>
818
-
819
- <li class="class"><a href="MIDI/Start.html">MIDI::Start</a></li>
820
-
821
- <li class="class"><a href="MIDI/Stop.html">MIDI::Stop</a></li>
822
-
823
- <li class="class"><a href="MIDI/SystemCommon.html">MIDI::SystemCommon</a></li>
824
-
825
- <li class="class"><a href="MIDI/SystemExclusive.html">MIDI::SystemExclusive</a></li>
826
-
827
- <li class="class"><a href="MIDI/SystemReset.html">MIDI::SystemReset</a></li>
828
-
829
- <li class="class"><a href="MIDI/Tempo.html">MIDI::Tempo</a></li>
830
-
831
- <li class="class"><a href="MIDI/TimeSig.html">MIDI::TimeSig</a></li>
832
-
833
- <li class="class"><a href="MIDI/Track.html">MIDI::Track</a></li>
834
-
835
- <li class="class"><a href="MIDI/TuneRequest.html">MIDI::TuneRequest</a></li>
836
-
837
- <li class="class"><a href="MIDI/Utils.html">MIDI::Utils</a></li>
838
-
839
- <li class="class"><a href="Array.html">Array</a></li>
840
-
841
- <li class="class"><a href="IO.html">IO</a></li>
842
-
843
- </ul>
844
-
845
- <h2 id="methods">Methods</h2>
846
- <ul>
847
-
848
- <li><a href="MIDI/Utils.html#method-c-as_var_len">::as_var_len &mdash; MIDI::Utils</a></li>
849
-
850
- <li><a href="MIDI/Tempo.html#method-c-bpm_to_mpq">::bpm_to_mpq &mdash; MIDI::Tempo</a></li>
851
-
852
- <li><a href="MIDI/MetaEvent.html#method-c-bytes_as_str">::bytes_as_str &mdash; MIDI::MetaEvent</a></li>
853
-
854
- <li><a href="MIDI/Tempo.html#method-c-mpq_to_bpm">::mpq_to_bpm &mdash; MIDI::Tempo</a></li>
855
-
856
- <li><a href="MIDI/NoteOff.html#method-c-new">::new &mdash; MIDI::NoteOff</a></li>
857
-
858
- <li><a href="MIDI/IO/SeqWriter.html#method-c-new">::new &mdash; MIDI::IO::SeqWriter</a></li>
859
-
860
- <li><a href="MIDI/IO/SeqReader.html#method-c-new">::new &mdash; MIDI::IO::SeqReader</a></li>
861
-
862
- <li><a href="MIDI/ChannelEvent.html#method-c-new">::new &mdash; MIDI::ChannelEvent</a></li>
863
-
864
- <li><a href="MIDI/SongPointer.html#method-c-new">::new &mdash; MIDI::SongPointer</a></li>
865
-
866
- <li><a href="MIDI/NoteEvent.html#method-c-new">::new &mdash; MIDI::NoteEvent</a></li>
867
-
868
- <li><a href="MIDI/IO/MIDIFile.html#method-c-new">::new &mdash; MIDI::IO::MIDIFile</a></li>
869
-
870
- <li><a href="MIDI/KeySig.html#method-c-new">::new &mdash; MIDI::KeySig</a></li>
871
-
872
- <li><a href="MIDI/TimeSig.html#method-c-new">::new &mdash; MIDI::TimeSig</a></li>
873
-
874
- <li><a href="MIDI/NoteOn.html#method-c-new">::new &mdash; MIDI::NoteOn</a></li>
875
-
876
- <li><a href="MIDI/Tempo.html#method-c-new">::new &mdash; MIDI::Tempo</a></li>
877
-
878
- <li><a href="MIDI/NoteOn.html#method-c-new">::new &mdash; MIDI::NoteOn</a></li>
879
-
880
- <li><a href="MIDI/Measures.html#method-c-new">::new &mdash; MIDI::Measures</a></li>
881
-
882
- <li><a href="MIDI/NoteOff.html#method-c-new">::new &mdash; MIDI::NoteOff</a></li>
883
-
884
- <li><a href="MIDI/Sequence.html#method-c-new">::new &mdash; MIDI::Sequence</a></li>
885
-
886
- <li><a href="MIDI/Measure.html#method-c-new">::new &mdash; MIDI::Measure</a></li>
887
-
888
- <li><a href="MIDI/Marker.html#method-c-new">::new &mdash; MIDI::Marker</a></li>
889
-
890
- <li><a href="MIDI/PolyPressure.html#method-c-new">::new &mdash; MIDI::PolyPressure</a></li>
891
-
892
- <li><a href="MIDI/MetaEvent.html#method-c-new">::new &mdash; MIDI::MetaEvent</a></li>
893
-
894
- <li><a href="MIDI/Track.html#method-c-new">::new &mdash; MIDI::Track</a></li>
895
-
896
- <li><a href="MIDI/SystemReset.html#method-c-new">::new &mdash; MIDI::SystemReset</a></li>
897
-
898
- <li><a href="MIDI/Controller.html#method-c-new">::new &mdash; MIDI::Controller</a></li>
899
-
900
- <li><a href="MIDI/ActiveSense.html#method-c-new">::new &mdash; MIDI::ActiveSense</a></li>
901
-
902
- <li><a href="MIDI/Stop.html#method-c-new">::new &mdash; MIDI::Stop</a></li>
903
-
904
- <li><a href="MIDI/ProgramChange.html#method-c-new">::new &mdash; MIDI::ProgramChange</a></li>
905
-
906
- <li><a href="MIDI/Continue.html#method-c-new">::new &mdash; MIDI::Continue</a></li>
907
-
908
- <li><a href="MIDI/Start.html#method-c-new">::new &mdash; MIDI::Start</a></li>
909
-
910
- <li><a href="MIDI/ChannelPressure.html#method-c-new">::new &mdash; MIDI::ChannelPressure</a></li>
911
-
912
- <li><a href="MIDI/Clock.html#method-c-new">::new &mdash; MIDI::Clock</a></li>
913
-
914
- <li><a href="MIDI/Realtime.html#method-c-new">::new &mdash; MIDI::Realtime</a></li>
915
-
916
- <li><a href="MIDI/PitchBend.html#method-c-new">::new &mdash; MIDI::PitchBend</a></li>
917
-
918
- <li><a href="MIDI/TuneRequest.html#method-c-new">::new &mdash; MIDI::TuneRequest</a></li>
919
-
920
- <li><a href="MIDI/SongSelect.html#method-c-new">::new &mdash; MIDI::SongSelect</a></li>
921
-
922
- <li><a href="MIDI/SystemCommon.html#method-c-new">::new &mdash; MIDI::SystemCommon</a></li>
923
-
924
- <li><a href="MIDI/SystemExclusive.html#method-c-new">::new &mdash; MIDI::SystemExclusive</a></li>
925
-
926
- <li><a href="MIDI/Event.html#method-c-new">::new &mdash; MIDI::Event</a></li>
927
-
928
- <li><a href="MIDI/Utils.html#method-c-note_to_s">::note_to_s &mdash; MIDI::Utils</a></li>
929
-
930
- <li><a href="MIDI/MetaEvent.html#method-c-str_as_bytes">::str_as_bytes &mdash; MIDI::MetaEvent</a></li>
931
-
932
- <li><a href="MIDI/MetaEvent.html#method-c-str_as_bytes">::str_as_bytes &mdash; MIDI::MetaEvent</a></li>
933
-
934
- <li><a href="MIDI/Event.html#method-i-%3C%3D%3E">#<=> &mdash; MIDI::Event</a></li>
935
-
936
- <li><a href="MIDI/IO/MIDIFile.html#method-i-arbitrary">#arbitrary &mdash; MIDI::IO::MIDIFile</a></li>
937
-
938
- <li><a href="MIDI/IO/MIDIFile.html#method-i-bad_byte">#bad_byte &mdash; MIDI::IO::MIDIFile</a></li>
939
-
940
- <li><a href="MIDI/Sequence.html#method-i-beats_per_minute">#beats_per_minute &mdash; MIDI::Sequence</a></li>
941
-
942
- <li><a href="MIDI/Sequence.html#method-i-bpm">#bpm &mdash; MIDI::Sequence</a></li>
943
-
944
- <li><a href="MIDI/IO/MIDIFile.html#method-i-chan_message">#chan_message &mdash; MIDI::IO::MIDIFile</a></li>
945
-
946
- <li><a href="MIDI/IO/SeqReader.html#method-i-chan_pressure">#chan_pressure &mdash; MIDI::IO::SeqReader</a></li>
947
-
948
- <li><a href="MIDI/IO/MIDIFile.html#method-i-chan_pressure">#chan_pressure &mdash; MIDI::IO::MIDIFile</a></li>
949
-
950
- <li><a href="MIDI/Event.html#method-i-channel_to_s">#channel_to_s &mdash; MIDI::Event</a></li>
951
-
952
- <li><a href="MIDI/Measure.html#method-i-contains_event%3F">#contains_event? &mdash; MIDI::Measure</a></li>
953
-
954
- <li><a href="MIDI/IO/SeqReader.html#method-i-controller">#controller &mdash; MIDI::IO::SeqReader</a></li>
955
-
956
- <li><a href="MIDI/IO/MIDIFile.html#method-i-controller">#controller &mdash; MIDI::IO::MIDIFile</a></li>
957
-
958
- <li><a href="MIDI/MetaEvent.html#method-i-data%3D">#data= &mdash; MIDI::MetaEvent</a></li>
959
-
960
- <li><a href="MIDI/PitchBend.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::PitchBend</a></li>
961
-
962
- <li><a href="MIDI/ProgramChange.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::ProgramChange</a></li>
963
-
964
- <li><a href="MIDI/Realtime.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::Realtime</a></li>
965
-
966
- <li><a href="MIDI/TuneRequest.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::TuneRequest</a></li>
967
-
968
- <li><a href="MIDI/Event.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::Event</a></li>
969
-
970
- <li><a href="MIDI/Controller.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::Controller</a></li>
971
-
972
- <li><a href="MIDI/ChannelPressure.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::ChannelPressure</a></li>
973
-
974
- <li><a href="MIDI/SystemExclusive.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::SystemExclusive</a></li>
975
-
976
- <li><a href="MIDI/Tempo.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::Tempo</a></li>
977
-
978
- <li><a href="MIDI/KeySig.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::KeySig</a></li>
979
-
980
- <li><a href="MIDI/SongSelect.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::SongSelect</a></li>
981
-
982
- <li><a href="MIDI/SongPointer.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::SongPointer</a></li>
983
-
984
- <li><a href="MIDI/NoteEvent.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::NoteEvent</a></li>
985
-
986
- <li><a href="MIDI/MetaEvent.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::MetaEvent</a></li>
987
-
988
- <li><a href="MIDI/TimeSig.html#method-i-data_as_bytes">#data_as_bytes &mdash; MIDI::TimeSig</a></li>
989
-
990
- <li><a href="MIDI/MetaEvent.html#method-i-data_as_str">#data_as_str &mdash; MIDI::MetaEvent</a></li>
991
-
992
- <li><a href="MIDI/TimeSig.html#method-i-denominator">#denominator &mdash; MIDI::TimeSig</a></li>
993
-
994
- <li><a href="MIDI/Track.html#method-i-each">#each &mdash; MIDI::Track</a></li>
995
-
996
- <li><a href="MIDI/Sequence.html#method-i-each">#each &mdash; MIDI::Sequence</a></li>
997
-
998
- <li><a href="MIDI/IO/SeqReader.html#method-i-end_track">#end_track &mdash; MIDI::IO::SeqReader</a></li>
999
-
1000
- <li><a href="MIDI/IO/MIDIFile.html#method-i-end_track">#end_track &mdash; MIDI::IO::MIDIFile</a></li>
1001
-
1002
- <li><a href="MIDI/IO/MIDIFile.html#method-i-eot">#eot &mdash; MIDI::IO::MIDIFile</a></li>
1003
-
1004
- <li><a href="MIDI/IO/MIDIFile.html#method-i-error">#error &mdash; MIDI::IO::MIDIFile</a></li>
1005
-
1006
- <li><a href="MIDI/IO/MIDIFile.html#method-i-get_bytes">#get_bytes &mdash; MIDI::IO::MIDIFile</a></li>
1007
-
1008
- <li><a href="MIDI/Sequence.html#method-i-get_measures">#get_measures &mdash; MIDI::Sequence</a></li>
1009
-
1010
- <li><a href="MIDI/IO/MIDIFile.html#method-i-getc">#getc &mdash; MIDI::IO::MIDIFile</a></li>
1011
-
1012
- <li><a href="MIDI/IO/MIDIFile.html#method-i-handle_arbitrary">#handle_arbitrary &mdash; MIDI::IO::MIDIFile</a></li>
1013
-
1014
- <li><a href="MIDI/IO/MIDIFile.html#method-i-handle_sysex">#handle_sysex &mdash; MIDI::IO::MIDIFile</a></li>
1015
-
1016
- <li><a href="MIDI/IO/MIDIFile.html#method-i-header">#header &mdash; MIDI::IO::MIDIFile</a></li>
1017
-
1018
- <li><a href="MIDI/IO/SeqReader.html#method-i-header">#header &mdash; MIDI::IO::SeqReader</a></li>
1019
-
1020
- <li><a href="MIDI/Track.html#method-i-instrument">#instrument &mdash; MIDI::Track</a></li>
1021
-
1022
- <li><a href="MIDI/Track.html#method-i-instrument%3D">#instrument= &mdash; MIDI::Track</a></li>
1023
-
1024
- <li><a href="MIDI/IO/SeqReader.html#method-i-key_signature">#key_signature &mdash; MIDI::IO::SeqReader</a></li>
1025
-
1026
- <li><a href="MIDI/IO/MIDIFile.html#method-i-key_signature">#key_signature &mdash; MIDI::IO::MIDIFile</a></li>
1027
-
1028
- <li><a href="MIDI/Sequence.html#method-i-length_to_delta">#length_to_delta &mdash; MIDI::Sequence</a></li>
1029
-
1030
- <li><a href="MIDI/KeySig.html#method-i-major_key%3F">#major_key? &mdash; MIDI::KeySig</a></li>
1031
-
1032
- <li><a href="MIDI/IO/SeqReader.html#method-i-make_note_off">#make_note_off &mdash; MIDI::IO::SeqReader</a></li>
1033
-
1034
- <li><a href="MIDI/TimeSig.html#method-i-measure_duration">#measure_duration &mdash; MIDI::TimeSig</a></li>
1035
-
1036
- <li><a href="MIDI/Measures.html#method-i-measure_for_event">#measure_for_event &mdash; MIDI::Measures</a></li>
1037
-
1038
- <li><a href="MIDI/Track.html#method-i-merge">#merge &mdash; MIDI::Track</a></li>
1039
-
1040
- <li><a href="Array.html#method-i-merge">#merge &mdash; Array</a></li>
1041
-
1042
- <li><a href="MIDI/Track.html#method-i-merge_event_lists">#merge_event_lists &mdash; MIDI::Track</a></li>
1043
-
1044
- <li><a href="Array.html#method-i-mergesort">#mergesort &mdash; Array</a></li>
1045
-
1046
- <li><a href="MIDI/IO/MIDIFile.html#method-i-meta_event">#meta_event &mdash; MIDI::IO::MIDIFile</a></li>
1047
-
1048
- <li><a href="MIDI/IO/SeqReader.html#method-i-meta_misc">#meta_misc &mdash; MIDI::IO::SeqReader</a></li>
1049
-
1050
- <li><a href="MIDI/IO/MIDIFile.html#method-i-meta_misc">#meta_misc &mdash; MIDI::IO::MIDIFile</a></li>
1051
-
1052
- <li><a href="MIDI/TimeSig.html#method-i-metronome_ticks">#metronome_ticks &mdash; MIDI::TimeSig</a></li>
1053
-
1054
- <li><a href="MIDI/KeySig.html#method-i-minor_key%3F">#minor_key? &mdash; MIDI::KeySig</a></li>
1055
-
1056
- <li><a href="MIDI/IO/MIDIFile.html#method-i-msg">#msg &mdash; MIDI::IO::MIDIFile</a></li>
1057
-
1058
- <li><a href="MIDI/IO/MIDIFile.html#method-i-msg_add">#msg_add &mdash; MIDI::IO::MIDIFile</a></li>
1059
-
1060
- <li><a href="MIDI/IO/MIDIFile.html#method-i-msg_init">#msg_init &mdash; MIDI::IO::MIDIFile</a></li>
1061
-
1062
- <li><a href="MIDI/IO/MIDIFile.html#method-i-msg_read">#msg_read &mdash; MIDI::IO::MIDIFile</a></li>
1063
-
1064
- <li><a href="MIDI/Sequence.html#method-i-name">#name &mdash; MIDI::Sequence</a></li>
1065
-
1066
- <li><a href="MIDI/Track.html#method-i-name">#name &mdash; MIDI::Track</a></li>
1067
-
1068
- <li><a href="MIDI/Track.html#method-i-name%3D">#name= &mdash; MIDI::Track</a></li>
1069
-
1070
- <li><a href="MIDI/Sequence.html#method-i-name%3D">#name= &mdash; MIDI::Sequence</a></li>
1071
-
1072
- <li><a href="MIDI/IO/MIDIFile.html#method-i-note_off">#note_off &mdash; MIDI::IO::MIDIFile</a></li>
1073
-
1074
- <li><a href="MIDI/IO/SeqReader.html#method-i-note_off">#note_off &mdash; MIDI::IO::SeqReader</a></li>
1075
-
1076
- <li><a href="MIDI/IO/MIDIFile.html#method-i-note_on">#note_on &mdash; MIDI::IO::MIDIFile</a></li>
1077
-
1078
- <li><a href="MIDI/IO/SeqReader.html#method-i-note_on">#note_on &mdash; MIDI::IO::SeqReader</a></li>
1079
-
1080
- <li><a href="MIDI/Sequence.html#method-i-note_to_delta">#note_to_delta &mdash; MIDI::Sequence</a></li>
1081
-
1082
- <li><a href="MIDI/Sequence.html#method-i-note_to_length">#note_to_length &mdash; MIDI::Sequence</a></li>
1083
-
1084
- <li><a href="MIDI/NoteEvent.html#method-i-note_to_s">#note_to_s &mdash; MIDI::NoteEvent</a></li>
1085
-
1086
- <li><a href="MIDI/Event.html#method-i-number_to_s">#number_to_s &mdash; MIDI::Event</a></li>
1087
-
1088
- <li><a href="MIDI/TimeSig.html#method-i-numerator">#numerator &mdash; MIDI::TimeSig</a></li>
1089
-
1090
- <li><a href="MIDI/NoteEvent.html#method-i-pch_oct">#pch_oct &mdash; MIDI::NoteEvent</a></li>
1091
-
1092
- <li><a href="MIDI/IO/MIDIFile.html#method-i-pitch_bend">#pitch_bend &mdash; MIDI::IO::MIDIFile</a></li>
1093
-
1094
- <li><a href="MIDI/IO/SeqReader.html#method-i-pitch_bend">#pitch_bend &mdash; MIDI::IO::SeqReader</a></li>
1095
-
1096
- <li><a href="MIDI/IO/SeqWriter.html#method-i-possibly_munge_due_to_running_status_byte">#possibly_munge_due_to_running_status_byte &mdash; MIDI::IO::SeqWriter</a></li>
1097
-
1098
- <li><a href="MIDI/IO/MIDIFile.html#method-i-pressure">#pressure &mdash; MIDI::IO::MIDIFile</a></li>
1099
-
1100
- <li><a href="MIDI/IO/SeqReader.html#method-i-pressure">#pressure &mdash; MIDI::IO::SeqReader</a></li>
1101
-
1102
- <li><a href="MIDI/PolyPressure.html#method-i-pressure">#pressure &mdash; MIDI::PolyPressure</a></li>
1103
-
1104
- <li><a href="MIDI/PolyPressure.html#method-i-pressure%3D">#pressure= &mdash; MIDI::PolyPressure</a></li>
1105
-
1106
- <li><a href="MIDI/IO/MIDIFile.html#method-i-program">#program &mdash; MIDI::IO::MIDIFile</a></li>
1107
-
1108
- <li><a href="MIDI/IO/SeqReader.html#method-i-program">#program &mdash; MIDI::IO::SeqReader</a></li>
1109
-
1110
- <li><a href="MIDI/Track.html#method-i-quantize">#quantize &mdash; MIDI::Track</a></li>
1111
-
1112
- <li><a href="MIDI/Event.html#method-i-quantize_to">#quantize_to &mdash; MIDI::Event</a></li>
1113
-
1114
- <li><a href="MIDI/Sequence.html#method-i-read">#read &mdash; MIDI::Sequence</a></li>
1115
-
1116
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read16">#read16 &mdash; MIDI::IO::MIDIFile</a></li>
1117
-
1118
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read32">#read32 &mdash; MIDI::IO::MIDIFile</a></li>
1119
-
1120
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read_from">#read_from &mdash; MIDI::IO::MIDIFile</a></li>
1121
-
1122
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read_header">#read_header &mdash; MIDI::IO::MIDIFile</a></li>
1123
-
1124
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read_mt_header_string">#read_mt_header_string &mdash; MIDI::IO::MIDIFile</a></li>
1125
-
1126
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read_track">#read_track &mdash; MIDI::IO::MIDIFile</a></li>
1127
-
1128
- <li><a href="MIDI/IO/MIDIFile.html#method-i-read_var_len">#read_var_len &mdash; MIDI::IO::MIDIFile</a></li>
1129
-
1130
- <li><a href="IO.html#method-i-readbyte">#readbyte &mdash; IO</a></li>
1131
-
1132
- <li><a href="MIDI/Track.html#method-i-recalc_delta_from_times">#recalc_delta_from_times &mdash; MIDI::Track</a></li>
1133
-
1134
- <li><a href="MIDI/Track.html#method-i-recalc_times">#recalc_times &mdash; MIDI::Track</a></li>
1135
-
1136
- <li><a href="MIDI/IO/MIDIFile.html#method-i-sequence_number">#sequence_number &mdash; MIDI::IO::MIDIFile</a></li>
1137
-
1138
- <li><a href="MIDI/IO/MIDIFile.html#method-i-sequencer_specific">#sequencer_specific &mdash; MIDI::IO::MIDIFile</a></li>
1139
-
1140
- <li><a href="MIDI/KeySig.html#method-i-sharpflat">#sharpflat &mdash; MIDI::KeySig</a></li>
1141
-
1142
- <li><a href="MIDI/IO/MIDIFile.html#method-i-smpte">#smpte &mdash; MIDI::IO::MIDIFile</a></li>
1143
-
1144
- <li><a href="MIDI/Track.html#method-i-sort">#sort &mdash; MIDI::Track</a></li>
1145
-
1146
- <li><a href="Array.html#method-i-split">#split &mdash; Array</a></li>
1147
-
1148
- <li><a href="MIDI/IO/SeqReader.html#method-i-start_track">#start_track &mdash; MIDI::IO::SeqReader</a></li>
1149
-
1150
- <li><a href="MIDI/IO/MIDIFile.html#method-i-start_track">#start_track &mdash; MIDI::IO::MIDIFile</a></li>
1151
-
1152
- <li><a href="MIDI/IO/MIDIFile.html#method-i-sysex">#sysex &mdash; MIDI::IO::MIDIFile</a></li>
1153
-
1154
- <li><a href="MIDI/IO/SeqReader.html#method-i-sysex">#sysex &mdash; MIDI::IO::SeqReader</a></li>
1155
-
1156
- <li><a href="MIDI/Tempo.html#method-i-tempo">#tempo &mdash; MIDI::Tempo</a></li>
1157
-
1158
- <li><a href="MIDI/IO/SeqReader.html#method-i-tempo">#tempo &mdash; MIDI::IO::SeqReader</a></li>
1159
-
1160
- <li><a href="MIDI/Sequence.html#method-i-tempo">#tempo &mdash; MIDI::Sequence</a></li>
1161
-
1162
- <li><a href="MIDI/IO/MIDIFile.html#method-i-tempo">#tempo &mdash; MIDI::IO::MIDIFile</a></li>
1163
-
1164
- <li><a href="MIDI/Tempo.html#method-i-tempo%3D">#tempo= &mdash; MIDI::Tempo</a></li>
1165
-
1166
- <li><a href="MIDI/IO/SeqReader.html#method-i-text">#text &mdash; MIDI::IO::SeqReader</a></li>
1167
-
1168
- <li><a href="MIDI/IO/MIDIFile.html#method-i-text">#text &mdash; MIDI::IO::MIDIFile</a></li>
1169
-
1170
- <li><a href="MIDI/IO/SeqReader.html#method-i-time_signature">#time_signature &mdash; MIDI::IO::SeqReader</a></li>
1171
-
1172
- <li><a href="MIDI/IO/MIDIFile.html#method-i-time_signature">#time_signature &mdash; MIDI::IO::MIDIFile</a></li>
1173
-
1174
- <li><a href="MIDI/Sequence.html#method-i-time_signature">#time_signature &mdash; MIDI::Sequence</a></li>
1175
-
1176
- <li><a href="MIDI/Measures.html#method-i-to_mbt">#to_mbt &mdash; MIDI::Measures</a></li>
1177
-
1178
- <li><a href="MIDI/ChannelPressure.html#method-i-to_s">#to_s &mdash; MIDI::ChannelPressure</a></li>
1179
-
1180
- <li><a href="MIDI/Clock.html#method-i-to_s">#to_s &mdash; MIDI::Clock</a></li>
1181
-
1182
- <li><a href="MIDI/ProgramChange.html#method-i-to_s">#to_s &mdash; MIDI::ProgramChange</a></li>
1183
-
1184
- <li><a href="MIDI/Realtime.html#method-i-to_s">#to_s &mdash; MIDI::Realtime</a></li>
1185
-
1186
- <li><a href="MIDI/Measure.html#method-i-to_s">#to_s &mdash; MIDI::Measure</a></li>
1187
-
1188
- <li><a href="MIDI/KeySig.html#method-i-to_s">#to_s &mdash; MIDI::KeySig</a></li>
1189
-
1190
- <li><a href="MIDI/TuneRequest.html#method-i-to_s">#to_s &mdash; MIDI::TuneRequest</a></li>
1191
-
1192
- <li><a href="MIDI/TimeSig.html#method-i-to_s">#to_s &mdash; MIDI::TimeSig</a></li>
1193
-
1194
- <li><a href="MIDI/SongSelect.html#method-i-to_s">#to_s &mdash; MIDI::SongSelect</a></li>
1195
-
1196
- <li><a href="MIDI/Tempo.html#method-i-to_s">#to_s &mdash; MIDI::Tempo</a></li>
1197
-
1198
- <li><a href="MIDI/ChannelEvent.html#method-i-to_s">#to_s &mdash; MIDI::ChannelEvent</a></li>
1199
-
1200
- <li><a href="MIDI/PitchBend.html#method-i-to_s">#to_s &mdash; MIDI::PitchBend</a></li>
1201
-
1202
- <li><a href="MIDI/Continue.html#method-i-to_s">#to_s &mdash; MIDI::Continue</a></li>
1203
-
1204
- <li><a href="MIDI/SongPointer.html#method-i-to_s">#to_s &mdash; MIDI::SongPointer</a></li>
1205
-
1206
- <li><a href="MIDI/NoteOn.html#method-i-to_s">#to_s &mdash; MIDI::NoteOn</a></li>
1207
-
1208
- <li><a href="MIDI/NoteOn.html#method-i-to_s">#to_s &mdash; MIDI::NoteOn</a></li>
1209
-
1210
- <li><a href="MIDI/NoteOff.html#method-i-to_s">#to_s &mdash; MIDI::NoteOff</a></li>
1211
-
1212
- <li><a href="MIDI/NoteOff.html#method-i-to_s">#to_s &mdash; MIDI::NoteOff</a></li>
1213
-
1214
- <li><a href="MIDI/MetaEvent.html#method-i-to_s">#to_s &mdash; MIDI::MetaEvent</a></li>
1215
-
1216
- <li><a href="MIDI/SystemReset.html#method-i-to_s">#to_s &mdash; MIDI::SystemReset</a></li>
1217
-
1218
- <li><a href="MIDI/Start.html#method-i-to_s">#to_s &mdash; MIDI::Start</a></li>
1219
-
1220
- <li><a href="MIDI/PolyPressure.html#method-i-to_s">#to_s &mdash; MIDI::PolyPressure</a></li>
1221
-
1222
- <li><a href="MIDI/ActiveSense.html#method-i-to_s">#to_s &mdash; MIDI::ActiveSense</a></li>
1223
-
1224
- <li><a href="MIDI/Stop.html#method-i-to_s">#to_s &mdash; MIDI::Stop</a></li>
1225
-
1226
- <li><a href="MIDI/Event.html#method-i-to_s">#to_s &mdash; MIDI::Event</a></li>
1227
-
1228
- <li><a href="MIDI/Controller.html#method-i-to_s">#to_s &mdash; MIDI::Controller</a></li>
1229
-
1230
- <li><a href="MIDI/SystemExclusive.html#method-i-to_s">#to_s &mdash; MIDI::SystemExclusive</a></li>
1231
-
1232
- <li><a href="MIDI/IO/SeqReader.html#method-i-track_uses_channel">#track_uses_channel &mdash; MIDI::IO::SeqReader</a></li>
1233
-
1234
- <li><a href="MIDI/Sequence.html#method-i-write">#write &mdash; MIDI::Sequence</a></li>
1235
-
1236
- <li><a href="MIDI/IO/MIDIFile.html#method-i-write16">#write16 &mdash; MIDI::IO::MIDIFile</a></li>
1237
-
1238
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write16">#write16 &mdash; MIDI::IO::SeqWriter</a></li>
1239
-
1240
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write32">#write32 &mdash; MIDI::IO::SeqWriter</a></li>
1241
-
1242
- <li><a href="MIDI/IO/MIDIFile.html#method-i-write32">#write32 &mdash; MIDI::IO::MIDIFile</a></li>
1243
-
1244
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write_bytes">#write_bytes &mdash; MIDI::IO::SeqWriter</a></li>
1245
-
1246
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write_header">#write_header &mdash; MIDI::IO::SeqWriter</a></li>
1247
-
1248
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write_instrument">#write_instrument &mdash; MIDI::IO::SeqWriter</a></li>
1249
-
1250
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write_to">#write_to &mdash; MIDI::IO::SeqWriter</a></li>
1251
-
1252
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write_track">#write_track &mdash; MIDI::IO::SeqWriter</a></li>
1253
-
1254
- <li><a href="MIDI/IO/SeqWriter.html#method-i-write_var_len">#write_var_len &mdash; MIDI::IO::SeqWriter</a></li>
1255
-
1256
- <li><a href="MIDI/IO/MIDIFile.html#method-i-write_var_len">#write_var_len &mdash; MIDI::IO::MIDIFile</a></li>
1257
-
1258
- </ul>
1259
-
1260
- <div id="validator-badges">
1261
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1262
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
1263
- Rdoc Generator</a> 1.1.6</small>.</p>
1264
- </div>
1265
- </body>
1266
- </html>