midilib 2.0.4 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +2 -1
  3. data/Credits +44 -2
  4. data/README.rdoc +13 -9
  5. data/Rakefile +36 -53
  6. data/TODO.rdoc +13 -2
  7. data/examples/from_scratch.rb +4 -6
  8. data/examples/measures_mbt.rb +11 -11
  9. data/examples/print_program_changes.rb +11 -11
  10. data/examples/reader2text.rb +191 -191
  11. data/examples/seq2text.rb +18 -18
  12. data/examples/split.rb +21 -20
  13. data/examples/strings.rb +15 -15
  14. data/examples/transpose.rb +41 -42
  15. data/html/MIDI/ActiveSense.html +89 -213
  16. data/html/MIDI/ChannelEvent.html +95 -224
  17. data/html/MIDI/ChannelPressure.html +103 -241
  18. data/html/MIDI/Clock.html +89 -213
  19. data/html/MIDI/Continue.html +89 -213
  20. data/html/MIDI/Controller.html +105 -246
  21. data/html/MIDI/Event.html +134 -358
  22. data/html/MIDI/IO/MIDIFile.html +544 -1148
  23. data/html/MIDI/IO/SeqReader.html +273 -577
  24. data/html/MIDI/IO/SeqWriter.html +233 -439
  25. data/html/MIDI/IO.html +48 -164
  26. data/html/MIDI/KeySig.html +148 -291
  27. data/html/MIDI/Marker.html +73 -192
  28. data/html/MIDI/Measure.html +104 -267
  29. data/html/MIDI/Measures.html +106 -259
  30. data/html/MIDI/MetaEvent.html +171 -352
  31. data/html/MIDI/NoteEvent.html +114 -276
  32. data/html/MIDI/NoteOff.html +95 -223
  33. data/html/MIDI/NoteOn.html +95 -223
  34. data/html/MIDI/PitchBend.html +104 -242
  35. data/html/MIDI/PolyPressure.html +102 -246
  36. data/html/MIDI/ProgramChange.html +103 -241
  37. data/html/MIDI/Realtime.html +96 -230
  38. data/html/MIDI/Sequence.html +256 -576
  39. data/html/MIDI/SongPointer.html +104 -242
  40. data/html/MIDI/SongSelect.html +103 -241
  41. data/html/MIDI/Start.html +89 -213
  42. data/html/MIDI/Stop.html +89 -213
  43. data/html/MIDI/SystemCommon.html +73 -192
  44. data/html/MIDI/SystemExclusive.html +106 -244
  45. data/html/MIDI/SystemReset.html +89 -213
  46. data/html/MIDI/Tempo.html +127 -309
  47. data/html/MIDI/TimeSig.html +119 -300
  48. data/html/MIDI/Track.html +214 -494
  49. data/html/MIDI/TuneRequest.html +96 -230
  50. data/html/MIDI/Utils.html +91 -233
  51. data/html/MIDI.html +142 -526
  52. data/html/Object.html +197 -0
  53. data/html/README_rdoc.html +280 -486
  54. data/html/TODO_rdoc.html +68 -145
  55. data/html/created.rid +15 -14
  56. data/html/css/fonts.css +167 -0
  57. data/html/css/rdoc.css +639 -0
  58. data/html/fonts/Lato-Light.ttf +0 -0
  59. data/html/fonts/Lato-LightItalic.ttf +0 -0
  60. data/html/fonts/Lato-Regular.ttf +0 -0
  61. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  62. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  63. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  64. data/html/images/add.png +0 -0
  65. data/html/images/arrow_up.png +0 -0
  66. data/html/images/delete.png +0 -0
  67. data/html/images/tag_blue.png +0 -0
  68. data/html/index.html +230 -446
  69. data/html/js/darkfish.js +22 -91
  70. data/html/js/navigation.js +4 -41
  71. data/html/js/navigation.js.gz +0 -0
  72. data/html/js/search.js +41 -25
  73. data/html/js/search_index.js +1 -1
  74. data/html/js/search_index.js.gz +0 -0
  75. data/html/js/searcher.js +9 -8
  76. data/html/js/searcher.js.gz +0 -0
  77. data/html/table_of_contents.html +1111 -505
  78. data/install.rb +53 -34
  79. data/lib/midilib/consts.rb +406 -408
  80. data/lib/midilib/event.rb +335 -306
  81. data/lib/midilib/info.rb +5 -7
  82. data/lib/midilib/io/midifile.rb +424 -452
  83. data/lib/midilib/io/seqreader.rb +200 -192
  84. data/lib/midilib/io/seqwriter.rb +151 -147
  85. data/lib/midilib/measure.rb +78 -80
  86. data/lib/midilib/mergesort.rb +39 -0
  87. data/lib/midilib/sequence.rb +93 -87
  88. data/lib/midilib/track.rb +71 -118
  89. data/lib/midilib/utils.rb +17 -20
  90. data/lib/midilib.rb +5 -5
  91. data/test/event_equality.rb +50 -52
  92. data/test/test_event.rb +120 -124
  93. data/test/test_io.rb +118 -38
  94. data/test/test_mergesort.rb +37 -0
  95. data/test/test_midifile.rb +6 -19
  96. data/test/test_sequence.rb +62 -61
  97. data/test/test_track.rb +126 -155
  98. data/test/test_varlen.rb +23 -27
  99. metadata +67 -62
  100. data/html/IO.html +0 -259
  101. data/html/MIDI/MIDI/MIDI/Array.html +0 -353
  102. data/html/MIDI/MIDI/MIDI.html +0 -204
  103. data/html/MIDI/MIDI.html +0 -204
  104. data/html/js/jquery.js +0 -18
  105. data/html/rdoc.css +0 -543
@@ -2,334 +2,161 @@
2
2
 
3
3
  <html>
4
4
  <head>
5
- <meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
5
+ <meta charset="UTF-8">
6
6
 
7
7
  <title>class MIDI::IO::MIDIFile - midilib</title>
8
8
 
9
- <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet">
10
-
11
9
  <script type="text/javascript">
12
10
  var rdoc_rel_prefix = "../../";
11
+ var index_rel_prefix = "../../";
13
12
  </script>
14
13
 
15
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
16
- <script type="text/javascript" charset="utf-8" src="../../js/navigation.js"></script>
17
- <script type="text/javascript" charset="utf-8" src="../../js/search_index.js"></script>
18
- <script type="text/javascript" charset="utf-8" src="../../js/search.js"></script>
19
- <script type="text/javascript" charset="utf-8" src="../../js/searcher.js"></script>
20
- <script type="text/javascript" charset="utf-8" src="../../js/darkfish.js"></script>
14
+ <script src="../../js/navigation.js" defer></script>
15
+ <script src="../../js/search.js" defer></script>
16
+ <script src="../../js/search_index.js" defer></script>
17
+ <script src="../../js/searcher.js" defer></script>
18
+ <script src="../../js/darkfish.js" defer></script>
19
+
20
+ <link href="../../css/fonts.css" rel="stylesheet">
21
+ <link href="../../css/rdoc.css" rel="stylesheet">
22
+
21
23
 
24
+ <body id="top" role="document" class="class">
25
+ <nav role="navigation">
26
+ <div id="project-navigation">
27
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
28
+ <h2>
29
+ <a href="../../index.html" rel="home">Home</a>
30
+ </h2>
22
31
 
23
- <body id="top" class="class">
24
- <nav id="metadata">
25
- <nav id="home-section" class="section">
26
- <h3 class="section-header">
27
- <a href="../../index.html">Home</a>
32
+ <div id="table-of-contents-navigation">
33
+ <a href="../../table_of_contents.html#pages">Pages</a>
28
34
  <a href="../../table_of_contents.html#classes">Classes</a>
29
35
  <a href="../../table_of_contents.html#methods">Methods</a>
30
- </h3>
31
- </nav>
32
-
36
+ </div>
37
+ </div>
33
38
 
34
- <nav id="search-section" class="section project-section" class="initially-hidden">
39
+ <div id="search-section" role="search" class="project-section initially-hidden">
35
40
  <form action="#" method="get" accept-charset="utf-8">
36
- <h3 class="section-header">
37
- <input type="text" name="search" placeholder="Search" id="search-field"
41
+ <div id="search-field-wrapper">
42
+ <input id="search-field" role="combobox" aria-label="Search"
43
+ aria-autocomplete="list" aria-controls="search-results"
44
+ type="text" name="search" placeholder="Search" spellcheck="false"
38
45
  title="Type to search, Up and Down to navigate, Enter to load">
39
- </h3>
40
- </form>
41
-
42
- <ul id="search-results" class="initially-hidden"></ul>
43
- </nav>
46
+ </div>
44
47
 
48
+ <ul id="search-results" aria-label="Search Results"
49
+ aria-busy="false" aria-expanded="false"
50
+ aria-atomic="false" class="initially-hidden"></ul>
51
+ </form>
52
+ </div>
45
53
 
46
- <div id="file-metadata">
47
- <nav id="file-list-section" class="section">
48
- <h3 class="section-header">Defined In</h3>
49
- <ul>
50
- <li>lib/midilib/io/midifile.rb
51
- </ul>
52
- </nav>
53
-
54
-
55
54
  </div>
56
55
 
57
- <div id="class-metadata">
58
-
59
- <nav id="parent-class-section" class="section">
60
- <h3 class="section-header">Parent</h3>
61
-
62
- <p class="link">Object
63
56
 
64
- </nav>
65
57
 
58
+ <div id="class-metadata">
66
59
 
67
- <!-- Method Quickref -->
68
- <nav id="method-list-section" class="section">
69
- <h3 class="section-header">Methods</h3>
70
-
71
- <ul class="link-list">
72
-
73
- <li><a href="#method-c-new">::new</a>
74
-
75
- <li><a href="#method-i-arbitrary">#arbitrary</a>
76
-
77
- <li><a href="#method-i-bad_byte">#bad_byte</a>
78
-
79
- <li><a href="#method-i-chan_message">#chan_message</a>
80
-
81
- <li><a href="#method-i-chan_pressure">#chan_pressure</a>
82
-
83
- <li><a href="#method-i-controller">#controller</a>
84
-
85
- <li><a href="#method-i-end_track">#end_track</a>
86
-
87
- <li><a href="#method-i-eot">#eot</a>
88
-
89
- <li><a href="#method-i-error">#error</a>
90
-
91
- <li><a href="#method-i-get_bytes">#get_bytes</a>
92
-
93
- <li><a href="#method-i-getc">#getc</a>
94
-
95
- <li><a href="#method-i-handle_arbitrary">#handle_arbitrary</a>
96
-
97
- <li><a href="#method-i-handle_sysex">#handle_sysex</a>
98
-
99
- <li><a href="#method-i-header">#header</a>
100
-
101
- <li><a href="#method-i-key_signature">#key_signature</a>
102
-
103
- <li><a href="#method-i-meta_event">#meta_event</a>
104
-
105
- <li><a href="#method-i-meta_misc">#meta_misc</a>
106
-
107
- <li><a href="#method-i-msg">#msg</a>
108
-
109
- <li><a href="#method-i-msg_add">#msg_add</a>
110
-
111
- <li><a href="#method-i-msg_init">#msg_init</a>
112
-
113
- <li><a href="#method-i-msg_read">#msg_read</a>
114
-
115
- <li><a href="#method-i-note_off">#note_off</a>
116
-
117
- <li><a href="#method-i-note_on">#note_on</a>
118
-
119
- <li><a href="#method-i-pitch_bend">#pitch_bend</a>
120
-
121
- <li><a href="#method-i-pressure">#pressure</a>
122
-
123
- <li><a href="#method-i-program">#program</a>
124
-
125
- <li><a href="#method-i-read16">#read16</a>
126
-
127
- <li><a href="#method-i-read32">#read32</a>
128
-
129
- <li><a href="#method-i-read_from">#read_from</a>
130
-
131
- <li><a href="#method-i-read_header">#read_header</a>
132
-
133
- <li><a href="#method-i-read_mt_header_string">#read_mt_header_string</a>
134
-
135
- <li><a href="#method-i-read_track">#read_track</a>
136
-
137
- <li><a href="#method-i-read_var_len">#read_var_len</a>
138
-
139
- <li><a href="#method-i-sequence_number">#sequence_number</a>
140
-
141
- <li><a href="#method-i-sequencer_specific">#sequencer_specific</a>
142
-
143
- <li><a href="#method-i-smpte">#smpte</a>
144
-
145
- <li><a href="#method-i-start_track">#start_track</a>
146
-
147
- <li><a href="#method-i-sysex">#sysex</a>
148
-
149
- <li><a href="#method-i-tempo">#tempo</a>
150
-
151
- <li><a href="#method-i-text">#text</a>
152
-
153
- <li><a href="#method-i-time_signature">#time_signature</a>
154
-
155
- <li><a href="#method-i-write16">#write16</a>
156
-
157
- <li><a href="#method-i-write32">#write32</a>
158
-
159
- <li><a href="#method-i-write_var_len">#write_var_len</a>
160
60
 
61
+ <div id="parent-class-section" class="nav-section">
62
+ <h3>Parent</h3>
63
+
64
+ <p class="link"><a href="../../Object.html">Object</a>
65
+ </div>
66
+
67
+
68
+
69
+
70
+ <!-- Method Quickref -->
71
+ <div id="method-list-section" class="nav-section">
72
+ <h3>Methods</h3>
73
+
74
+ <ul class="link-list" role="directory">
75
+ <li ><a href="#method-c-new">::new</a>
76
+ <li ><a href="#method-i-arbitrary">#arbitrary</a>
77
+ <li ><a href="#method-i-bad_byte">#bad_byte</a>
78
+ <li ><a href="#method-i-chan_message">#chan_message</a>
79
+ <li ><a href="#method-i-chan_pressure">#chan_pressure</a>
80
+ <li ><a href="#method-i-controller">#controller</a>
81
+ <li ><a href="#method-i-end_track">#end_track</a>
82
+ <li ><a href="#method-i-eot">#eot</a>
83
+ <li ><a href="#method-i-error">#error</a>
84
+ <li ><a href="#method-i-get_bytes">#get_bytes</a>
85
+ <li ><a href="#method-i-getc">#getc</a>
86
+ <li ><a href="#method-i-handle_arbitrary">#handle_arbitrary</a>
87
+ <li ><a href="#method-i-handle_sysex">#handle_sysex</a>
88
+ <li ><a href="#method-i-header">#header</a>
89
+ <li ><a href="#method-i-key_signature">#key_signature</a>
90
+ <li ><a href="#method-i-meta_event">#meta_event</a>
91
+ <li ><a href="#method-i-meta_misc">#meta_misc</a>
92
+ <li ><a href="#method-i-msg">#msg</a>
93
+ <li ><a href="#method-i-msg_add">#msg_add</a>
94
+ <li ><a href="#method-i-msg_init">#msg_init</a>
95
+ <li ><a href="#method-i-msg_read">#msg_read</a>
96
+ <li ><a href="#method-i-note_off">#note_off</a>
97
+ <li ><a href="#method-i-note_on">#note_on</a>
98
+ <li ><a href="#method-i-pitch_bend">#pitch_bend</a>
99
+ <li ><a href="#method-i-pressure">#pressure</a>
100
+ <li ><a href="#method-i-program">#program</a>
101
+ <li ><a href="#method-i-read16">#read16</a>
102
+ <li ><a href="#method-i-read32">#read32</a>
103
+ <li ><a href="#method-i-read_from">#read_from</a>
104
+ <li ><a href="#method-i-read_header">#read_header</a>
105
+ <li ><a href="#method-i-read_mt_header_string">#read_mt_header_string</a>
106
+ <li ><a href="#method-i-read_track">#read_track</a>
107
+ <li ><a href="#method-i-read_var_len">#read_var_len</a>
108
+ <li ><a href="#method-i-sequence_number">#sequence_number</a>
109
+ <li ><a href="#method-i-sequencer_specific">#sequencer_specific</a>
110
+ <li ><a href="#method-i-smpte">#smpte</a>
111
+ <li ><a href="#method-i-start_track">#start_track</a>
112
+ <li ><a href="#method-i-sysex">#sysex</a>
113
+ <li ><a href="#method-i-tempo">#tempo</a>
114
+ <li ><a href="#method-i-text">#text</a>
115
+ <li ><a href="#method-i-time_signature">#time_signature</a>
116
+ <li ><a href="#method-i-write16">#write16</a>
117
+ <li ><a href="#method-i-write32">#write32</a>
118
+ <li ><a href="#method-i-write_var_len">#write_var_len</a>
161
119
  </ul>
162
- </nav>
120
+ </div>
163
121
 
164
122
  </div>
165
-
166
- <div id="project-metadata">
167
- <nav id="fileindex-section" class="section project-section">
168
- <h3 class="section-header">Pages</h3>
169
-
170
- <ul>
171
-
172
- <li class="file"><a href="../../README_rdoc.html">README</a>
173
-
174
- <li class="file"><a href="../../TODO_rdoc.html">TODO</a>
175
-
176
- </ul>
177
123
  </nav>
178
124
 
179
- <nav id="classindex-section" class="section project-section">
180
- <h3 class="section-header">Class and Module Index</h3>
125
+ <main role="main" aria-labelledby="class-MIDI::IO::MIDIFile">
126
+ <h1 id="class-MIDI::IO::MIDIFile" class="class">
127
+ class MIDI::IO::MIDIFile
128
+ </h1>
181
129
 
182
- <ul class="link-list">
183
-
184
- <li><a href="../../MIDI.html">MIDI</a>
185
-
186
- <li><a href="../../MIDI/ActiveSense.html">MIDI::ActiveSense</a>
187
-
188
- <li><a href="../../MIDI/ChannelEvent.html">MIDI::ChannelEvent</a>
189
-
190
- <li><a href="../../MIDI/ChannelPressure.html">MIDI::ChannelPressure</a>
191
-
192
- <li><a href="../../MIDI/Clock.html">MIDI::Clock</a>
193
-
194
- <li><a href="../../MIDI/Continue.html">MIDI::Continue</a>
195
-
196
- <li><a href="../../MIDI/Controller.html">MIDI::Controller</a>
197
-
198
- <li><a href="../../MIDI/Event.html">MIDI::Event</a>
199
-
200
- <li><a href="../../MIDI/IO.html">MIDI::IO</a>
201
-
202
- <li><a href="../../MIDI/IO/MIDIFile.html">MIDI::IO::MIDIFile</a>
203
-
204
- <li><a href="../../MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a>
205
-
206
- <li><a href="../../MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a>
207
-
208
- <li><a href="../../MIDI/KeySig.html">MIDI::KeySig</a>
209
-
210
- <li><a href="../../MIDI/MIDI.html">MIDI::MIDI</a>
211
-
212
- <li><a href="../../MIDI/MIDI/MIDI.html">MIDI::MIDI::MIDI</a>
213
-
214
- <li><a href="../../MIDI/MIDI/MIDI/Array.html">MIDI::MIDI::MIDI::Array</a>
215
-
216
- <li><a href="../../MIDI/Marker.html">MIDI::Marker</a>
217
-
218
- <li><a href="../../MIDI/Measure.html">MIDI::Measure</a>
219
-
220
- <li><a href="../../MIDI/Measures.html">MIDI::Measures</a>
221
-
222
- <li><a href="../../MIDI/MetaEvent.html">MIDI::MetaEvent</a>
223
-
224
- <li><a href="../../MIDI/NoteEvent.html">MIDI::NoteEvent</a>
225
-
226
- <li><a href="../../MIDI/NoteOff.html">MIDI::NoteOff</a>
227
-
228
- <li><a href="../../MIDI/NoteOff.html">MIDI::NoteOffEvent</a>
229
-
230
- <li><a href="../../MIDI/NoteOn.html">MIDI::NoteOn</a>
231
-
232
- <li><a href="../../MIDI/NoteOn.html">MIDI::NoteOnEvent</a>
233
-
234
- <li><a href="../../MIDI/PitchBend.html">MIDI::PitchBend</a>
235
-
236
- <li><a href="../../MIDI/PolyPressure.html">MIDI::PolyPressure</a>
237
-
238
- <li><a href="../../MIDI/ProgramChange.html">MIDI::ProgramChange</a>
239
-
240
- <li><a href="../../MIDI/Realtime.html">MIDI::Realtime</a>
241
-
242
- <li><a href="../../MIDI/Sequence.html">MIDI::Sequence</a>
243
-
244
- <li><a href="../../MIDI/SongPointer.html">MIDI::SongPointer</a>
245
-
246
- <li><a href="../../MIDI/SongSelect.html">MIDI::SongSelect</a>
247
-
248
- <li><a href="../../MIDI/Start.html">MIDI::Start</a>
249
-
250
- <li><a href="../../MIDI/Stop.html">MIDI::Stop</a>
251
-
252
- <li><a href="../../MIDI/SystemCommon.html">MIDI::SystemCommon</a>
253
-
254
- <li><a href="../../MIDI/SystemExclusive.html">MIDI::SystemExclusive</a>
255
-
256
- <li><a href="../../MIDI/SystemReset.html">MIDI::SystemReset</a>
257
-
258
- <li><a href="../../MIDI/Tempo.html">MIDI::Tempo</a>
259
-
260
- <li><a href="../../MIDI/TimeSig.html">MIDI::TimeSig</a>
261
-
262
- <li><a href="../../MIDI/Track.html">MIDI::Track</a>
263
-
264
- <li><a href="../../MIDI/TuneRequest.html">MIDI::TuneRequest</a>
265
-
266
- <li><a href="../../MIDI/Utils.html">MIDI::Utils</a>
267
-
268
- <li><a href="../../IO.html">IO</a>
269
-
270
- </ul>
271
- </nav>
272
-
273
- </div>
274
- </nav>
275
-
276
- <div id="documentation">
277
- <h1 class="class">class MIDI::IO::MIDIFile</h1>
278
-
279
- <div id="description" class="description">
130
+ <section class="description">
280
131
 
281
- <p>A <a href="MIDIFile.html">MIDIFile</a> parses a <a
282
- href="../MIDI.html">MIDI</a> file and calls methods when it sees <a
283
- href="../MIDI.html">MIDI</a> events. Most of the methods are stubs. To do
284
- anything interesting with the events, override these methods (those between
285
- the "The rest of these are NOPs by default" and "End of NOPs" comments).</p>
132
+ <p>A <a href="MIDIFile.html"><code>MIDIFile</code></a> parses a <a href="../../MIDI.html"><code>MIDI</code></a> file and calls methods when it sees <a href="../../MIDI.html"><code>MIDI</code></a> events. Most of the methods are stubs. To do anything interesting with the events, override these methods (those between the “The rest of these are NOPs by default” and “End of NOPs” comments).</p>
286
133
 
287
- <p>See <a href="SeqReader.html">SeqReader</a> for a subclass that uses these
288
- methods to create <a href="../Event.html">Event</a> objects.</p>
134
+ <p>See <a href="SeqReader.html"><code>SeqReader</code></a> for a subclass that uses these methods to create <a href="../Event.html"><code>Event</code></a> objects.</p>
289
135
 
290
- </div><!-- description -->
136
+ </section>
291
137
 
292
-
293
-
294
-
295
138
  <section id="5Buntitled-5D" class="documentation-section">
296
-
297
139
 
298
-
299
140
 
300
-
301
- <!-- Constants -->
302
- <section id="constants-list" class="section">
303
- <h3 class="section-header">Constants</h3>
141
+ <section class="constants-list">
142
+ <header>
143
+ <h3>Constants</h3>
144
+ </header>
304
145
  <dl>
305
-
306
146
  <dt id="MThd_BYTE_ARRAY">MThd_BYTE_ARRAY
307
-
308
- <dd class="description">
309
-
310
-
147
+ <dd>
311
148
  <dt id="MTrk_BYTE_ARRAY">MTrk_BYTE_ARRAY
312
-
313
- <dd class="description">
314
-
315
-
149
+ <dd>
316
150
  <dt id="NUM_DATA_BYTES">NUM_DATA_BYTES
317
-
318
- <dd class="description"><p>This array is indexed by the high half of a status byte. Its value is
319
- either the number of bytes needed (1 or 2) for a channel message, or 0 if
320
- it's not a channel message.</p>
321
-
322
-
151
+ <dd><p>This array is indexed by the high half of a status byte. Its value is either the number of bytes needed (1 or 2) for a channel message, or 0 if it’s not a channel message.</p>
323
152
  </dl>
324
153
  </section>
325
-
326
154
 
327
-
328
- <!-- Attributes -->
329
- <section id="attribute-method-details" class="method-section section">
330
- <h3 class="section-header">Attributes</h3>
155
+ <section class="attribute-method-details" class="method-section">
156
+ <header>
157
+ <h3>Attributes</h3>
158
+ </header>
331
159
 
332
-
333
160
  <div id="attribute-i-bytes_to_be_read" class="method-detail">
334
161
  <div class="method-heading attribute-method-heading">
335
162
  <span class="method-name">bytes_to_be_read</span><span
@@ -338,11 +165,8 @@ it's not a channel message.</p>
338
165
 
339
166
  <div class="method-description">
340
167
 
341
-
342
-
343
168
  </div>
344
169
  </div>
345
-
346
170
  <div id="attribute-i-curr_ticks" class="method-detail">
347
171
  <div class="method-heading attribute-method-heading">
348
172
  <span class="method-name">curr_ticks</span><span
@@ -351,11 +175,8 @@ it's not a channel message.</p>
351
175
 
352
176
  <div class="method-description">
353
177
 
354
-
355
-
356
178
  </div>
357
179
  </div>
358
-
359
180
  <div id="attribute-i-no_merge" class="method-detail">
360
181
  <div class="method-heading attribute-method-heading">
361
182
  <span class="method-name">no_merge</span><span
@@ -364,11 +185,8 @@ it's not a channel message.</p>
364
185
 
365
186
  <div class="method-description">
366
187
 
367
-
368
-
369
188
  </div>
370
189
  </div>
371
-
372
190
  <div id="attribute-i-raw_data" class="method-detail">
373
191
  <div class="method-heading attribute-method-heading">
374
192
  <span class="method-name">raw_data</span><span
@@ -377,11 +195,8 @@ it's not a channel message.</p>
377
195
 
378
196
  <div class="method-description">
379
197
 
380
-
381
-
382
198
  </div>
383
199
  </div>
384
-
385
200
  <div id="attribute-i-raw_time_stamp_data" class="method-detail">
386
201
  <div class="method-heading attribute-method-heading">
387
202
  <span class="method-name">raw_time_stamp_data</span><span
@@ -389,12 +204,9 @@ it's not a channel message.</p>
389
204
  </div>
390
205
 
391
206
  <div class="method-description">
392
-
393
207
  <p>Raw data info</p>
394
-
395
208
  </div>
396
209
  </div>
397
-
398
210
  <div id="attribute-i-raw_var_num_data" class="method-detail">
399
211
  <div class="method-heading attribute-method-heading">
400
212
  <span class="method-name">raw_var_num_data</span><span
@@ -403,11 +215,8 @@ it's not a channel message.</p>
403
215
 
404
216
  <div class="method-description">
405
217
 
406
-
407
-
408
218
  </div>
409
219
  </div>
410
-
411
220
  <div id="attribute-i-skip_init" class="method-detail">
412
221
  <div class="method-heading attribute-method-heading">
413
222
  <span class="method-name">skip_init</span><span
@@ -416,11 +225,8 @@ it's not a channel message.</p>
416
225
 
417
226
  <div class="method-description">
418
227
 
419
-
420
-
421
228
  </div>
422
229
  </div>
423
-
424
230
  <div id="attribute-i-ticks_so_far" class="method-detail">
425
231
  <div class="method-heading attribute-method-heading">
426
232
  <span class="method-name">ticks_so_far</span><span
@@ -429,1568 +235,1158 @@ it's not a channel message.</p>
429
235
 
430
236
  <div class="method-description">
431
237
 
432
-
433
-
434
238
  </div>
435
239
  </div>
436
-
437
- </section><!-- attribute-method-details -->
438
-
240
+ </section>
439
241
 
440
- <!-- Methods -->
441
-
442
- <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
443
- <h3 class="section-header">Public Class Methods</h3>
444
242
 
445
-
243
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
244
+ <header>
245
+ <h3>Public Class Methods</h3>
246
+ </header>
247
+
446
248
  <div id="method-c-new" class="method-detail ">
447
-
448
249
  <div class="method-heading">
449
250
  <span class="method-name">new</span><span
450
251
  class="method-args">()</span>
451
252
  <span class="method-click-advice">click to toggle source</span>
452
253
  </div>
453
-
454
254
 
455
255
  <div class="method-description">
456
256
 
457
-
458
-
459
257
 
460
-
461
258
  <div class="method-source-code" id="new-source">
462
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 49</span>
463
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>
464
- <span class="ruby-ivar">@no_merge</span> = <span class="ruby-keyword">false</span>
465
- <span class="ruby-ivar">@skip_init</span> = <span class="ruby-keyword">true</span>
466
- <span class="ruby-ivar">@io</span> = <span class="ruby-keyword">nil</span>
467
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
468
- <span class="ruby-ivar">@msg_buf</span> = <span class="ruby-keyword">nil</span>
259
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 29</span>
260
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>
261
+ <span class="ruby-ivar">@no_merge</span> = <span class="ruby-keyword">false</span>
262
+ <span class="ruby-ivar">@skip_init</span> = <span class="ruby-keyword">true</span>
263
+ <span class="ruby-ivar">@io</span> = <span class="ruby-keyword">nil</span>
264
+ <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
265
+ <span class="ruby-ivar">@msg_buf</span> = <span class="ruby-keyword">nil</span>
469
266
  <span class="ruby-keyword">end</span></pre>
470
- </div><!-- new-source -->
471
-
267
+ </div>
472
268
  </div>
473
269
 
474
-
475
270
 
476
-
477
- </div><!-- new-method -->
271
+ </div>
478
272
 
479
-
480
- </section><!-- public-class-method-details -->
481
-
482
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
483
- <h3 class="section-header">Public Instance Methods</h3>
273
+ </section>
274
+
275
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
276
+ <header>
277
+ <h3>Public Instance Methods</h3>
278
+ </header>
484
279
 
485
-
486
280
  <div id="method-i-arbitrary" class="method-detail ">
487
-
488
281
  <div class="method-heading">
489
282
  <span class="method-name">arbitrary</span><span
490
283
  class="method-args">(msg)</span>
491
284
  <span class="method-click-advice">click to toggle source</span>
492
285
  </div>
493
-
494
286
 
495
287
  <div class="method-description">
496
288
 
497
-
498
-
499
289
 
500
-
501
290
  <div class="method-source-code" id="arbitrary-source">
502
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 152</span>
503
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">arbitrary</span>(<span class="ruby-identifier">msg</span>)
291
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 132</span>
292
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">arbitrary</span>(<span class="ruby-identifier">msg</span>)
504
293
  <span class="ruby-keyword">end</span></pre>
505
- </div><!-- arbitrary-source -->
506
-
294
+ </div>
507
295
  </div>
508
296
 
509
-
510
297
 
511
-
512
- </div><!-- arbitrary-method -->
298
+ </div>
513
299
 
514
-
515
300
  <div id="method-i-bad_byte" class="method-detail ">
516
-
517
301
  <div class="method-heading">
518
302
  <span class="method-name">bad_byte</span><span
519
303
  class="method-args">(c)</span>
520
304
  <span class="method-click-advice">click to toggle source</span>
521
305
  </div>
522
-
523
306
 
524
307
  <div class="method-description">
525
-
526
308
  <p>Handle an unexpected byte.</p>
527
-
528
309
 
529
-
530
310
  <div class="method-source-code" id="bad_byte-source">
531
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 294</span>
532
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">bad_byte</span>(<span class="ruby-identifier">c</span>)
533
- <span class="ruby-identifier">error</span>(<span class="ruby-identifier">sprintf</span>(<span class="ruby-string">&quot;unexpected byte: 0x%02x&quot;</span>, <span class="ruby-identifier">c</span>))
311
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 268</span>
312
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">bad_byte</span>(<span class="ruby-identifier">c</span>)
313
+ <span class="ruby-identifier">error</span>(<span class="ruby-identifier">format</span>(<span class="ruby-string">&#39;unexpected byte: 0x%02x&#39;</span>, <span class="ruby-identifier">c</span>))
534
314
  <span class="ruby-keyword">end</span></pre>
535
- </div><!-- bad_byte-source -->
536
-
315
+ </div>
537
316
  </div>
538
317
 
539
-
540
318
 
541
-
542
- </div><!-- bad_byte-method -->
319
+ </div>
543
320
 
544
-
545
321
  <div id="method-i-chan_message" class="method-detail ">
546
-
547
322
  <div class="method-heading">
548
323
  <span class="method-name">chan_message</span><span
549
324
  class="method-args">(running, status, c1, c2)</span>
550
325
  <span class="method-click-advice">click to toggle source</span>
551
326
  </div>
552
-
553
327
 
554
328
  <div class="method-description">
555
-
556
329
  <p>Handle a channel message (note on, note off, etc.)</p>
557
-
558
330
 
559
-
560
331
  <div class="method-source-code" id="chan_message-source">
561
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 335</span>
562
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">chan_message</span>(<span class="ruby-identifier">running</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
563
- <span class="ruby-ivar">@raw_data</span> = []
564
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">running</span>
565
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c1</span>
566
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c2</span>
567
-
568
- <span class="ruby-identifier">chan</span> = <span class="ruby-identifier">status</span> &amp; <span class="ruby-value">0x0f</span>
569
-
570
- <span class="ruby-keyword">case</span> (<span class="ruby-identifier">status</span> &amp; <span class="ruby-value">0xf0</span>)
571
- <span class="ruby-keyword">when</span> <span class="ruby-constant">NOTE_OFF</span>
572
- <span class="ruby-identifier">note_off</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
573
- <span class="ruby-keyword">when</span> <span class="ruby-constant">NOTE_ON</span>
574
- <span class="ruby-identifier">note_on</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
575
- <span class="ruby-keyword">when</span> <span class="ruby-constant">POLY_PRESSURE</span>
576
- <span class="ruby-identifier">pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
577
- <span class="ruby-keyword">when</span> <span class="ruby-constant">CONTROLLER</span>
578
- <span class="ruby-identifier">controller</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
579
- <span class="ruby-keyword">when</span> <span class="ruby-constant">PITCH_BEND</span>
580
- <span class="ruby-identifier">pitch_bend</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
581
- <span class="ruby-keyword">when</span> <span class="ruby-constant">PROGRAM_CHANGE</span>
582
- <span class="ruby-identifier">program</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>)
583
- <span class="ruby-keyword">when</span> <span class="ruby-constant">CHANNEL_PRESSURE</span>
584
- <span class="ruby-identifier">chan_pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>)
585
- <span class="ruby-keyword">else</span>
586
- <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;illegal chan message 0x#{'%02x' % (status &amp; 0xf0)}\n&quot;</span>)
587
- <span class="ruby-keyword">end</span>
332
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 309</span>
333
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">chan_message</span>(<span class="ruby-identifier">running</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
334
+ <span class="ruby-ivar">@raw_data</span> = []
335
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">running</span>
336
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c1</span>
337
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c2</span>
338
+
339
+ <span class="ruby-identifier">chan</span> = <span class="ruby-identifier">status</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x0f</span>
340
+
341
+ <span class="ruby-keyword">case</span> (<span class="ruby-identifier">status</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xf0</span>)
342
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">NOTE_OFF</span>
343
+ <span class="ruby-identifier">note_off</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
344
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">NOTE_ON</span>
345
+ <span class="ruby-identifier">note_on</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
346
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">POLY_PRESSURE</span>
347
+ <span class="ruby-identifier">pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
348
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">CONTROLLER</span>
349
+ <span class="ruby-identifier">controller</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
350
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">PITCH_BEND</span>
351
+ <span class="ruby-identifier">pitch_bend</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
352
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">PROGRAM_CHANGE</span>
353
+ <span class="ruby-identifier">program</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>)
354
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">CHANNEL_PRESSURE</span>
355
+ <span class="ruby-identifier">chan_pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>)
356
+ <span class="ruby-keyword">else</span>
357
+ <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;illegal chan message 0x#{format(&#39;%02x&#39;, (status &amp; 0xf0))}\n&quot;</span>)
358
+ <span class="ruby-keyword">end</span>
588
359
  <span class="ruby-keyword">end</span></pre>
589
- </div><!-- chan_message-source -->
590
-
360
+ </div>
591
361
  </div>
592
362
 
593
-
594
363
 
595
-
596
- </div><!-- chan_message-method -->
364
+ </div>
597
365
 
598
-
599
366
  <div id="method-i-chan_pressure" class="method-detail ">
600
-
601
367
  <div class="method-heading">
602
368
  <span class="method-name">chan_pressure</span><span
603
369
  class="method-args">(chan, press)</span>
604
370
  <span class="method-click-advice">click to toggle source</span>
605
371
  </div>
606
-
607
372
 
608
373
  <div class="method-description">
609
374
 
610
-
611
-
612
375
 
613
-
614
376
  <div class="method-source-code" id="chan_pressure-source">
615
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 119</span>
616
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">chan_pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">press</span>)
377
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 99</span>
378
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">chan_pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">press</span>)
617
379
  <span class="ruby-keyword">end</span></pre>
618
- </div><!-- chan_pressure-source -->
619
-
380
+ </div>
620
381
  </div>
621
382
 
622
-
623
383
 
624
-
625
- </div><!-- chan_pressure-method -->
384
+ </div>
626
385
 
627
-
628
386
  <div id="method-i-controller" class="method-detail ">
629
-
630
387
  <div class="method-heading">
631
388
  <span class="method-name">controller</span><span
632
389
  class="method-args">(chan, control, value)</span>
633
390
  <span class="method-click-advice">click to toggle source</span>
634
391
  </div>
635
-
636
392
 
637
393
  <div class="method-description">
638
394
 
639
-
640
-
641
395
 
642
-
643
396
  <div class="method-source-code" id="controller-source">
644
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 110</span>
645
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">controller</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">control</span>, <span class="ruby-identifier">value</span>)
397
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 90</span>
398
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">controller</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">control</span>, <span class="ruby-identifier">value</span>)
646
399
  <span class="ruby-keyword">end</span></pre>
647
- </div><!-- controller-source -->
648
-
400
+ </div>
649
401
  </div>
650
402
 
651
-
652
403
 
653
-
654
- </div><!-- controller-method -->
404
+ </div>
655
405
 
656
-
657
406
  <div id="method-i-end_track" class="method-detail ">
658
-
659
407
  <div class="method-heading">
660
408
  <span class="method-name">end_track</span><span
661
409
  class="method-args">()</span>
662
410
  <span class="method-click-advice">click to toggle source</span>
663
411
  </div>
664
-
665
412
 
666
413
  <div class="method-description">
667
414
 
668
-
669
-
670
415
 
671
-
672
416
  <div class="method-source-code" id="end_track-source">
673
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 98</span>
674
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">end_track</span>()
417
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 78</span>
418
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">end_track</span>
675
419
  <span class="ruby-keyword">end</span></pre>
676
- </div><!-- end_track-source -->
677
-
420
+ </div>
678
421
  </div>
679
422
 
680
-
681
423
 
682
-
683
- </div><!-- end_track-method -->
424
+ </div>
684
425
 
685
-
686
426
  <div id="method-i-eot" class="method-detail ">
687
-
688
427
  <div class="method-heading">
689
428
  <span class="method-name">eot</span><span
690
429
  class="method-args">()</span>
691
430
  <span class="method-click-advice">click to toggle source</span>
692
431
  </div>
693
-
694
432
 
695
433
  <div class="method-description">
696
434
 
697
-
698
-
699
435
 
700
-
701
436
  <div class="method-source-code" id="eot-source">
702
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 137</span>
703
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">eot</span>()
437
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 117</span>
438
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">eot</span>
704
439
  <span class="ruby-keyword">end</span></pre>
705
- </div><!-- eot-source -->
706
-
440
+ </div>
707
441
  </div>
708
442
 
709
-
710
443
 
711
-
712
- </div><!-- eot-method -->
444
+ </div>
713
445
 
714
-
715
446
  <div id="method-i-error" class="method-detail ">
716
-
717
447
  <div class="method-heading">
718
448
  <span class="method-name">error</span><span
719
449
  class="method-args">(str)</span>
720
450
  <span class="method-click-advice">click to toggle source</span>
721
451
  </div>
722
-
723
452
 
724
453
  <div class="method-description">
725
-
726
454
  <p>The default error handler.</p>
727
-
728
455
 
729
-
730
456
  <div class="method-source-code" id="error-source">
731
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 84</span>
732
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">str</span>)
733
- <span class="ruby-identifier">loc</span> = <span class="ruby-ivar">@io</span>.<span class="ruby-identifier">tell</span>() <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
734
- <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;#{self.class.name} error at byte #{loc} (0x#{'%02x' % loc}): #{str}&quot;</span>
457
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 64</span>
458
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">error</span>(<span class="ruby-identifier">str</span>)
459
+ <span class="ruby-identifier">loc</span> = <span class="ruby-ivar">@io</span>.<span class="ruby-identifier">tell</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
460
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;#{self.class.name} error at byte #{loc} (0x#{&#39;%02x&#39; % loc}): #{str}&quot;</span>
735
461
  <span class="ruby-keyword">end</span></pre>
736
- </div><!-- error-source -->
737
-
462
+ </div>
738
463
  </div>
739
464
 
740
-
741
465
 
742
-
743
- </div><!-- error-method -->
466
+ </div>
744
467
 
745
-
746
468
  <div id="method-i-get_bytes" class="method-detail ">
747
-
748
469
  <div class="method-heading">
749
470
  <span class="method-name">get_bytes</span><span
750
471
  class="method-args">(n)</span>
751
472
  <span class="method-click-advice">click to toggle source</span>
752
473
  </div>
753
-
754
474
 
755
475
  <div class="method-description">
756
-
757
476
  <p>Return the next <code>n</code> bytes from @io as an array.</p>
758
-
759
477
 
760
-
761
478
  <div class="method-source-code" id="get_bytes-source">
762
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 77</span>
763
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">n</span>)
764
- <span class="ruby-identifier">buf</span> = []
765
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">getc</span>() }
766
- <span class="ruby-identifier">buf</span>
479
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 57</span>
480
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_bytes</span>(<span class="ruby-identifier">n</span>)
481
+ <span class="ruby-identifier">buf</span> = []
482
+ <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">getc</span> }
483
+ <span class="ruby-identifier">buf</span>
767
484
  <span class="ruby-keyword">end</span></pre>
768
- </div><!-- get_bytes-source -->
769
-
485
+ </div>
770
486
  </div>
771
487
 
772
-
773
488
 
774
-
775
- </div><!-- get_bytes-method -->
489
+ </div>
776
490
 
777
-
778
491
  <div id="method-i-getc" class="method-detail ">
779
-
780
492
  <div class="method-heading">
781
493
  <span class="method-name">getc</span><span
782
494
  class="method-args">()</span>
783
495
  <span class="method-click-advice">click to toggle source</span>
784
496
  </div>
785
-
786
497
 
787
498
  <div class="method-description">
788
-
789
- <p>This default getc implementation tries to read a single byte from io and
790
- returns it as an integer.</p>
791
-
499
+ <p>This default getc implementation tries to read a single byte from io and returns it as an integer.</p>
792
500
 
793
-
794
501
  <div class="method-source-code" id="getc-source">
795
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 71</span>
796
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">getc</span>
502
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 51</span>
503
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">getc</span>
797
504
  <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
798
- <span class="ruby-ivar">@io</span>.<span class="ruby-identifier">readbyte</span>()
505
+ <span class="ruby-ivar">@io</span>.<span class="ruby-identifier">readbyte</span>
799
506
  <span class="ruby-keyword">end</span></pre>
800
- </div><!-- getc-source -->
801
-
507
+ </div>
802
508
  </div>
803
509
 
804
-
805
510
 
806
-
807
- </div><!-- getc-method -->
511
+ </div>
808
512
 
809
-
810
513
  <div id="method-i-handle_arbitrary" class="method-detail ">
811
-
812
514
  <div class="method-heading">
813
515
  <span class="method-name">handle_arbitrary</span><span
814
516
  class="method-args">(msg)</span>
815
517
  <span class="method-click-advice">click to toggle source</span>
816
518
  </div>
817
-
818
519
 
819
520
  <div class="method-description">
820
-
821
521
  <p>Copy message into raw data array, then call arbitrary().</p>
822
-
823
522
 
824
-
825
523
  <div class="method-source-code" id="handle_arbitrary-source">
826
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 370</span>
827
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">handle_arbitrary</span>(<span class="ruby-identifier">msg</span>)
828
- <span class="ruby-ivar">@raw_data</span> = <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">dup</span>()
829
- <span class="ruby-identifier">arbitrary</span>(<span class="ruby-identifier">msg</span>)
524
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 344</span>
525
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">handle_arbitrary</span>(<span class="ruby-identifier">msg</span>)
526
+ <span class="ruby-ivar">@raw_data</span> = <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">dup</span>
527
+ <span class="ruby-identifier">arbitrary</span>(<span class="ruby-identifier">msg</span>)
830
528
  <span class="ruby-keyword">end</span></pre>
831
- </div><!-- handle_arbitrary-source -->
832
-
529
+ </div>
833
530
  </div>
834
531
 
835
-
836
532
 
837
-
838
- </div><!-- handle_arbitrary-method -->
533
+ </div>
839
534
 
840
-
841
535
  <div id="method-i-handle_sysex" class="method-detail ">
842
-
843
536
  <div class="method-heading">
844
537
  <span class="method-name">handle_sysex</span><span
845
538
  class="method-args">(msg)</span>
846
539
  <span class="method-click-advice">click to toggle source</span>
847
540
  </div>
848
-
849
541
 
850
542
  <div class="method-description">
851
-
852
543
  <p>Copy message into raw data array, then call sysex().</p>
853
-
854
544
 
855
-
856
545
  <div class="method-source-code" id="handle_sysex-source">
857
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 364</span>
858
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>)
859
- <span class="ruby-ivar">@raw_data</span> = <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">dup</span>()
860
- <span class="ruby-identifier">sysex</span>(<span class="ruby-identifier">msg</span>)
546
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 338</span>
547
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">handle_sysex</span>(<span class="ruby-identifier">msg</span>)
548
+ <span class="ruby-ivar">@raw_data</span> = <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">dup</span>
549
+ <span class="ruby-identifier">sysex</span>(<span class="ruby-identifier">msg</span>)
861
550
  <span class="ruby-keyword">end</span></pre>
862
- </div><!-- handle_sysex-source -->
863
-
551
+ </div>
864
552
  </div>
865
553
 
866
-
867
554
 
868
-
869
- </div><!-- handle_sysex-method -->
555
+ </div>
870
556
 
871
-
872
557
  <div id="method-i-header" class="method-detail ">
873
-
874
558
  <div class="method-heading">
875
559
  <span class="method-name">header</span><span
876
560
  class="method-args">(format, ntrks, division)</span>
877
561
  <span class="method-click-advice">click to toggle source</span>
878
562
  </div>
879
-
880
563
 
881
564
  <div class="method-description">
882
-
883
- <p><a href="../MIDI.html">MIDI</a> header.</p>
884
-
565
+ <p><a href="../../MIDI.html"><code>MIDI</code></a> header.</p>
885
566
 
886
-
887
567
  <div class="method-source-code" id="header-source">
888
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 92</span>
889
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">header</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">ntrks</span>, <span class="ruby-identifier">division</span>)
568
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 72</span>
569
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">header</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">ntrks</span>, <span class="ruby-identifier">division</span>)
890
570
  <span class="ruby-keyword">end</span></pre>
891
- </div><!-- header-source -->
892
-
571
+ </div>
893
572
  </div>
894
573
 
895
-
896
574
 
897
-
898
- </div><!-- header-method -->
575
+ </div>
899
576
 
900
-
901
577
  <div id="method-i-key_signature" class="method-detail ">
902
-
903
578
  <div class="method-heading">
904
579
  <span class="method-name">key_signature</span><span
905
580
  class="method-args">(sharpflat, is_minor)</span>
906
581
  <span class="method-click-advice">click to toggle source</span>
907
582
  </div>
908
-
909
583
 
910
584
  <div class="method-description">
911
585
 
912
-
913
-
914
586
 
915
-
916
587
  <div class="method-source-code" id="key_signature-source">
917
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 149</span>
918
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">key_signature</span>(<span class="ruby-identifier">sharpflat</span>, <span class="ruby-identifier">is_minor</span>)
588
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 129</span>
589
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">key_signature</span>(<span class="ruby-identifier">sharpflat</span>, <span class="ruby-identifier">is_minor</span>)
919
590
  <span class="ruby-keyword">end</span></pre>
920
- </div><!-- key_signature-source -->
921
-
591
+ </div>
922
592
  </div>
923
593
 
924
-
925
594
 
926
-
927
- </div><!-- key_signature-method -->
595
+ </div>
928
596
 
929
-
930
597
  <div id="method-i-meta_event" class="method-detail ">
931
-
932
598
  <div class="method-heading">
933
599
  <span class="method-name">meta_event</span><span
934
600
  class="method-args">(type)</span>
935
601
  <span class="method-click-advice">click to toggle source</span>
936
602
  </div>
937
-
938
603
 
939
604
  <div class="method-description">
940
-
941
605
  <p>Handle a meta event.</p>
942
-
943
606
 
944
-
945
607
  <div class="method-source-code" id="meta_event-source">
946
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 299</span>
947
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">meta_event</span>(<span class="ruby-identifier">type</span>)
948
- <span class="ruby-identifier">m</span> = <span class="ruby-identifier">msg</span>() <span class="ruby-comment"># Copy of internal message buffer</span>
949
-
950
- <span class="ruby-comment"># Create raw data array</span>
951
- <span class="ruby-ivar">@raw_data</span> = []
952
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">META_EVENT</span>
953
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">type</span>
954
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@raw_var_num_data</span>
955
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>
956
- <span class="ruby-ivar">@raw_data</span>.<span class="ruby-identifier">flatten!</span>
957
-
958
- <span class="ruby-keyword">case</span> <span class="ruby-identifier">type</span>
959
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_NUM</span>
960
- <span class="ruby-identifier">sequence_number</span>((<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>])
961
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TEXT</span>, <span class="ruby-constant">META_COPYRIGHT</span>, <span class="ruby-constant">META_SEQ_NAME</span>, <span class="ruby-constant">META_INSTRUMENT</span>,
962
- <span class="ruby-constant">META_LYRIC</span>, <span class="ruby-constant">META_MARKER</span>, <span class="ruby-constant">META_CUE</span>, <span class="ruby-value">0x08</span>, <span class="ruby-value">0x09</span>, <span class="ruby-value">0x0a</span>,
963
- <span class="ruby-value">0x0b</span>, <span class="ruby-value">0x0c</span>, <span class="ruby-value">0x0d</span>, <span class="ruby-value">0x0e</span>, <span class="ruby-value">0x0f</span>
964
- <span class="ruby-identifier">text</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
965
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TRACK_END</span>
966
- <span class="ruby-identifier">eot</span>()
967
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SET_TEMPO</span>
968
- <span class="ruby-identifier">tempo</span>((<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>])
969
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SMPTE</span>
970
- <span class="ruby-identifier">smpte</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">4</span>])
971
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TIME_SIG</span>
972
- <span class="ruby-identifier">time_signature</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>])
973
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_KEY_SIG</span>
974
- <span class="ruby-identifier">key_signature</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">false</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">true</span>)
975
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_SPECIF</span>
976
- <span class="ruby-identifier">sequencer_specific</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
977
- <span class="ruby-keyword">else</span>
978
- <span class="ruby-identifier">meta_misc</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
979
- <span class="ruby-keyword">end</span>
608
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 273</span>
609
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">meta_event</span>(<span class="ruby-identifier">type</span>)
610
+ <span class="ruby-identifier">m</span> = <span class="ruby-identifier">msg</span> <span class="ruby-comment"># Copy of internal message buffer</span>
611
+
612
+ <span class="ruby-comment"># Create raw data array</span>
613
+ <span class="ruby-ivar">@raw_data</span> = []
614
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">META_EVENT</span>
615
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">type</span>
616
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@raw_var_num_data</span>
617
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>
618
+ <span class="ruby-ivar">@raw_data</span>.<span class="ruby-identifier">flatten!</span>
619
+
620
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">type</span>
621
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_NUM</span>
622
+ <span class="ruby-identifier">sequence_number</span>((<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>])
623
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TEXT</span>, <span class="ruby-constant">META_COPYRIGHT</span>, <span class="ruby-constant">META_SEQ_NAME</span>, <span class="ruby-constant">META_INSTRUMENT</span>,
624
+ <span class="ruby-constant">META_LYRIC</span>, <span class="ruby-constant">META_MARKER</span>, <span class="ruby-constant">META_CUE</span>, <span class="ruby-value">0x08</span>, <span class="ruby-value">0x09</span>, <span class="ruby-value">0x0a</span>,
625
+ <span class="ruby-value">0x0b</span>, <span class="ruby-value">0x0c</span>, <span class="ruby-value">0x0d</span>, <span class="ruby-value">0x0e</span>, <span class="ruby-value">0x0f</span>
626
+ <span class="ruby-identifier">text</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
627
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TRACK_END</span>
628
+ <span class="ruby-identifier">eot</span>
629
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SET_TEMPO</span>
630
+ <span class="ruby-identifier">tempo</span>((<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>])
631
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SMPTE</span>
632
+ <span class="ruby-identifier">smpte</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">4</span>])
633
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TIME_SIG</span>
634
+ <span class="ruby-identifier">time_signature</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>])
635
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_KEY_SIG</span>
636
+ <span class="ruby-identifier">key_signature</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-operator">!</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>))
637
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_SPECIF</span>
638
+ <span class="ruby-identifier">sequencer_specific</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
639
+ <span class="ruby-keyword">else</span>
640
+ <span class="ruby-identifier">meta_misc</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
641
+ <span class="ruby-keyword">end</span>
980
642
  <span class="ruby-keyword">end</span></pre>
981
- </div><!-- meta_event-source -->
982
-
643
+ </div>
983
644
  </div>
984
645
 
985
-
986
646
 
987
-
988
- </div><!-- meta_event-method -->
647
+ </div>
989
648
 
990
-
991
649
  <div id="method-i-meta_misc" class="method-detail ">
992
-
993
650
  <div class="method-heading">
994
651
  <span class="method-name">meta_misc</span><span
995
652
  class="method-args">(type, msg)</span>
996
653
  <span class="method-click-advice">click to toggle source</span>
997
654
  </div>
998
-
999
655
 
1000
656
  <div class="method-description">
1001
657
 
1002
-
1003
-
1004
658
 
1005
-
1006
659
  <div class="method-source-code" id="meta_misc-source">
1007
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 125</span>
1008
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">meta_misc</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
660
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 105</span>
661
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">meta_misc</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
1009
662
  <span class="ruby-keyword">end</span></pre>
1010
- </div><!-- meta_misc-source -->
1011
-
663
+ </div>
1012
664
  </div>
1013
665
 
1014
-
1015
666
 
1016
-
1017
- </div><!-- meta_misc-method -->
667
+ </div>
1018
668
 
1019
-
1020
669
  <div id="method-i-msg" class="method-detail ">
1021
-
1022
670
  <div class="method-heading">
1023
671
  <span class="method-name">msg</span><span
1024
672
  class="method-args">()</span>
1025
673
  <span class="method-click-advice">click to toggle source</span>
1026
674
  </div>
1027
-
1028
675
 
1029
676
  <div class="method-description">
1030
-
1031
677
  <p>Return a copy of the internal message buffer.</p>
1032
-
1033
678
 
1034
-
1035
679
  <div class="method-source-code" id="msg-source">
1036
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 460</span>
1037
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">msg</span>
1038
- <span class="ruby-keyword">return</span> <span class="ruby-ivar">@msg_buf</span>.<span class="ruby-identifier">dup</span>()
680
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 434</span>
681
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">msg</span>
682
+ <span class="ruby-ivar">@msg_buf</span>.<span class="ruby-identifier">dup</span>
1039
683
  <span class="ruby-keyword">end</span></pre>
1040
- </div><!-- msg-source -->
1041
-
684
+ </div>
1042
685
  </div>
1043
686
 
1044
-
1045
687
 
1046
-
1047
- </div><!-- msg-method -->
688
+ </div>
1048
689
 
1049
-
1050
690
  <div id="method-i-msg_add" class="method-detail ">
1051
-
1052
691
  <div class="method-heading">
1053
692
  <span class="method-name">msg_add</span><span
1054
693
  class="method-args">(c)</span>
1055
694
  <span class="method-click-advice">click to toggle source</span>
1056
695
  </div>
1057
-
1058
696
 
1059
697
  <div class="method-description">
1060
-
1061
698
  <p>Add a byte to the current message buffer.</p>
1062
-
1063
699
 
1064
-
1065
700
  <div class="method-source-code" id="msg_add-source">
1066
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 442</span>
1067
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">msg_add</span>(<span class="ruby-identifier">c</span>)
1068
- <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
701
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 416</span>
702
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">msg_add</span>(<span class="ruby-identifier">c</span>)
703
+ <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1069
704
  <span class="ruby-keyword">end</span></pre>
1070
- </div><!-- msg_add-source -->
1071
-
705
+ </div>
1072
706
  </div>
1073
707
 
1074
-
1075
708
 
1076
-
1077
- </div><!-- msg_add-method -->
709
+ </div>
1078
710
 
1079
-
1080
711
  <div id="method-i-msg_init" class="method-detail ">
1081
-
1082
712
  <div class="method-heading">
1083
713
  <span class="method-name">msg_init</span><span
1084
714
  class="method-args">()</span>
1085
715
  <span class="method-click-advice">click to toggle source</span>
1086
716
  </div>
1087
-
1088
717
 
1089
718
  <div class="method-description">
1090
-
1091
719
  <p>Initialize the internal message buffer.</p>
1092
-
1093
720
 
1094
-
1095
721
  <div class="method-source-code" id="msg_init-source">
1096
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 455</span>
1097
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">msg_init</span>
1098
- <span class="ruby-ivar">@msg_buf</span> = []
722
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 429</span>
723
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">msg_init</span>
724
+ <span class="ruby-ivar">@msg_buf</span> = []
1099
725
  <span class="ruby-keyword">end</span></pre>
1100
- </div><!-- msg_init-source -->
1101
-
726
+ </div>
1102
727
  </div>
1103
728
 
1104
-
1105
729
 
1106
-
1107
- </div><!-- msg_init-method -->
730
+ </div>
1108
731
 
1109
-
1110
732
  <div id="method-i-msg_read" class="method-detail ">
1111
-
1112
733
  <div class="method-heading">
1113
734
  <span class="method-name">msg_read</span><span
1114
735
  class="method-args">(n_bytes)</span>
1115
736
  <span class="method-click-advice">click to toggle source</span>
1116
737
  </div>
1117
-
1118
738
 
1119
739
  <div class="method-description">
1120
-
1121
- <p>Read and add a number of bytes to the message buffer. Return the last byte
1122
- (so we can see if it's an EOX or not).</p>
1123
-
740
+ <p>Read and add a number of bytes to the message buffer. Return the last byte (so we can see if it’s an EOX or not).</p>
1124
741
 
1125
-
1126
742
  <div class="method-source-code" id="msg_read-source">
1127
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 448</span>
1128
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">n_bytes</span>)
1129
- <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">n_bytes</span>)
1130
- <span class="ruby-ivar">@msg_buf</span>.<span class="ruby-identifier">flatten!</span>
1131
- <span class="ruby-keyword">return</span> <span class="ruby-ivar">@msg_buf</span>[<span class="ruby-value">-1</span>]
743
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 422</span>
744
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">msg_read</span>(<span class="ruby-identifier">n_bytes</span>)
745
+ <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">n_bytes</span>)
746
+ <span class="ruby-ivar">@msg_buf</span>.<span class="ruby-identifier">flatten!</span>
747
+ <span class="ruby-ivar">@msg_buf</span>[<span class="ruby-value">-1</span>]
1132
748
  <span class="ruby-keyword">end</span></pre>
1133
- </div><!-- msg_read-source -->
1134
-
749
+ </div>
1135
750
  </div>
1136
751
 
1137
-
1138
752
 
1139
-
1140
- </div><!-- msg_read-method -->
753
+ </div>
1141
754
 
1142
-
1143
755
  <div id="method-i-note_off" class="method-detail ">
1144
-
1145
756
  <div class="method-heading">
1146
757
  <span class="method-name">note_off</span><span
1147
758
  class="method-args">(chan, note, vel)</span>
1148
759
  <span class="method-click-advice">click to toggle source</span>
1149
760
  </div>
1150
-
1151
761
 
1152
762
  <div class="method-description">
1153
763
 
1154
-
1155
-
1156
764
 
1157
-
1158
765
  <div class="method-source-code" id="note_off-source">
1159
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 104</span>
1160
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">note_off</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">vel</span>)
766
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 84</span>
767
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">note_off</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">vel</span>)
1161
768
  <span class="ruby-keyword">end</span></pre>
1162
- </div><!-- note_off-source -->
1163
-
769
+ </div>
1164
770
  </div>
1165
771
 
1166
-
1167
772
 
1168
-
1169
- </div><!-- note_off-method -->
773
+ </div>
1170
774
 
1171
-
1172
775
  <div id="method-i-note_on" class="method-detail ">
1173
-
1174
776
  <div class="method-heading">
1175
777
  <span class="method-name">note_on</span><span
1176
778
  class="method-args">(chan, note, vel)</span>
1177
779
  <span class="method-click-advice">click to toggle source</span>
1178
780
  </div>
1179
-
1180
781
 
1181
782
  <div class="method-description">
1182
783
 
1183
-
1184
-
1185
784
 
1186
-
1187
785
  <div class="method-source-code" id="note_on-source">
1188
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 101</span>
1189
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">note_on</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">vel</span>)
786
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 81</span>
787
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">note_on</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">vel</span>)
1190
788
  <span class="ruby-keyword">end</span></pre>
1191
- </div><!-- note_on-source -->
1192
-
789
+ </div>
1193
790
  </div>
1194
791
 
1195
-
1196
792
 
1197
-
1198
- </div><!-- note_on-method -->
793
+ </div>
1199
794
 
1200
-
1201
795
  <div id="method-i-pitch_bend" class="method-detail ">
1202
-
1203
796
  <div class="method-heading">
1204
797
  <span class="method-name">pitch_bend</span><span
1205
798
  class="method-args">(chan, msb, lsb)</span>
1206
799
  <span class="method-click-advice">click to toggle source</span>
1207
800
  </div>
1208
-
1209
801
 
1210
802
  <div class="method-description">
1211
803
 
1212
-
1213
-
1214
804
 
1215
-
1216
805
  <div class="method-source-code" id="pitch_bend-source">
1217
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 113</span>
1218
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">pitch_bend</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">msb</span>, <span class="ruby-identifier">lsb</span>)
806
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 93</span>
807
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">pitch_bend</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">msb</span>, <span class="ruby-identifier">lsb</span>)
1219
808
  <span class="ruby-keyword">end</span></pre>
1220
- </div><!-- pitch_bend-source -->
1221
-
809
+ </div>
1222
810
  </div>
1223
811
 
1224
-
1225
812
 
1226
-
1227
- </div><!-- pitch_bend-method -->
813
+ </div>
1228
814
 
1229
-
1230
815
  <div id="method-i-pressure" class="method-detail ">
1231
-
1232
816
  <div class="method-heading">
1233
817
  <span class="method-name">pressure</span><span
1234
818
  class="method-args">(chan, note, press)</span>
1235
819
  <span class="method-click-advice">click to toggle source</span>
1236
820
  </div>
1237
-
1238
821
 
1239
822
  <div class="method-description">
1240
823
 
1241
-
1242
-
1243
824
 
1244
-
1245
825
  <div class="method-source-code" id="pressure-source">
1246
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 107</span>
1247
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">press</span>)
826
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 87</span>
827
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">press</span>)
1248
828
  <span class="ruby-keyword">end</span></pre>
1249
- </div><!-- pressure-source -->
1250
-
829
+ </div>
1251
830
  </div>
1252
831
 
1253
-
1254
832
 
1255
-
1256
- </div><!-- pressure-method -->
833
+ </div>
1257
834
 
1258
-
1259
835
  <div id="method-i-program" class="method-detail ">
1260
-
1261
836
  <div class="method-heading">
1262
837
  <span class="method-name">program</span><span
1263
838
  class="method-args">(chan, program)</span>
1264
839
  <span class="method-click-advice">click to toggle source</span>
1265
840
  </div>
1266
-
1267
841
 
1268
842
  <div class="method-description">
1269
843
 
1270
-
1271
-
1272
844
 
1273
-
1274
845
  <div class="method-source-code" id="program-source">
1275
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 116</span>
1276
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">program</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">program</span>)
846
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 96</span>
847
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">program</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">program</span>)
1277
848
  <span class="ruby-keyword">end</span></pre>
1278
- </div><!-- program-source -->
1279
-
849
+ </div>
1280
850
  </div>
1281
851
 
1282
-
1283
852
 
1284
-
1285
- </div><!-- program-method -->
853
+ </div>
1286
854
 
1287
-
1288
855
  <div id="method-i-read16" class="method-detail ">
1289
-
1290
856
  <div class="method-heading">
1291
857
  <span class="method-name">read16</span><span
1292
858
  class="method-args">()</span>
1293
859
  <span class="method-click-advice">click to toggle source</span>
1294
860
  </div>
1295
-
1296
861
 
1297
862
  <div class="method-description">
1298
-
1299
863
  <p>Read and return a sixteen bit value.</p>
1300
-
1301
864
 
1302
-
1303
865
  <div class="method-source-code" id="read16-source">
1304
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 376</span>
1305
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read16</span>
1306
- <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">getc</span>()
1307
- <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7fff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x8000</span>).<span class="ruby-identifier">nonzero?</span>
1308
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
866
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 350</span>
867
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read16</span>
868
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">getc</span>
869
+ <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7fff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x8000</span>).<span class="ruby-identifier">nonzero?</span>
870
+ <span class="ruby-identifier">val</span>
1309
871
  <span class="ruby-keyword">end</span></pre>
1310
- </div><!-- read16-source -->
1311
-
872
+ </div>
1312
873
  </div>
1313
874
 
1314
-
1315
875
 
1316
-
1317
- </div><!-- read16-method -->
876
+ </div>
1318
877
 
1319
-
1320
878
  <div id="method-i-read32" class="method-detail ">
1321
-
1322
879
  <div class="method-heading">
1323
880
  <span class="method-name">read32</span><span
1324
881
  class="method-args">()</span>
1325
882
  <span class="method-click-advice">click to toggle source</span>
1326
883
  </div>
1327
-
1328
884
 
1329
885
  <div class="method-description">
1330
-
1331
886
  <p>Read and return a 32-bit value.</p>
1332
-
1333
887
 
1334
-
1335
888
  <div class="method-source-code" id="read32-source">
1336
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 383</span>
1337
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read32</span>
1338
- <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span>
1339
- <span class="ruby-identifier">getc</span>()
1340
- <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7fffffff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x80000000</span>).<span class="ruby-identifier">nonzero?</span>
1341
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
889
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 357</span>
890
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read32</span>
891
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span>
892
+ <span class="ruby-identifier">getc</span>
893
+ <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7fffffff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x80000000</span>).<span class="ruby-identifier">nonzero?</span>
894
+ <span class="ruby-identifier">val</span>
1342
895
  <span class="ruby-keyword">end</span></pre>
1343
- </div><!-- read32-source -->
1344
-
896
+ </div>
1345
897
  </div>
1346
898
 
1347
-
1348
899
 
1349
-
1350
- </div><!-- read32-method -->
900
+ </div>
1351
901
 
1352
-
1353
902
  <div id="method-i-read_from" class="method-detail ">
1354
-
1355
903
  <div class="method-heading">
1356
904
  <span class="method-name">read_from</span><span
1357
905
  class="method-args">(io)</span>
1358
906
  <span class="method-click-advice">click to toggle source</span>
1359
907
  </div>
1360
-
1361
908
 
1362
909
  <div class="method-description">
1363
-
1364
- <p>The only public method. Each <a href="../MIDI.html">MIDI</a> event in the
1365
- file causes a method to be called.</p>
1366
-
910
+ <p>The only public method. Each <a href="../../MIDI.html"><code>MIDI</code></a> event in the file causes a method to be called.</p>
1367
911
 
1368
-
1369
912
  <div class="method-source-code" id="read_from-source">
1370
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 59</span>
1371
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read_from</span>(<span class="ruby-identifier">io</span>)
1372
- <span class="ruby-identifier">error</span>(<span class="ruby-string">'must specify non-nil input stream'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">io</span>.<span class="ruby-identifier">nil?</span>
1373
- <span class="ruby-ivar">@io</span> = <span class="ruby-identifier">io</span>
913
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 39</span>
914
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_from</span>(<span class="ruby-identifier">io</span>)
915
+ <span class="ruby-identifier">error</span>(<span class="ruby-string">&#39;must specify non-nil input stream&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">io</span>.<span class="ruby-identifier">nil?</span>
916
+ <span class="ruby-ivar">@io</span> = <span class="ruby-identifier">io</span>
1374
917
 
1375
- <span class="ruby-identifier">ntrks</span> = <span class="ruby-identifier">read_header</span>()
1376
- <span class="ruby-identifier">error</span>(<span class="ruby-string">'No tracks!'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">ntrks</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0</span>
918
+ <span class="ruby-identifier">ntrks</span> = <span class="ruby-identifier">read_header</span>
919
+ <span class="ruby-identifier">error</span>(<span class="ruby-string">&#39;No tracks!&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">ntrks</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0</span>
1377
920
 
1378
- <span class="ruby-identifier">ntrks</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">read_track</span>() }
921
+ <span class="ruby-identifier">ntrks</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">read_track</span> }
1379
922
  <span class="ruby-keyword">end</span></pre>
1380
- </div><!-- read_from-source -->
1381
-
923
+ </div>
1382
924
  </div>
1383
925
 
1384
-
1385
926
 
1386
-
1387
- </div><!-- read_from-method -->
927
+ </div>
1388
928
 
1389
-
1390
929
  <div id="method-i-read_header" class="method-detail ">
1391
-
1392
930
  <div class="method-heading">
1393
931
  <span class="method-name">read_header</span><span
1394
932
  class="method-args">()</span>
1395
933
  <span class="method-click-advice">click to toggle source</span>
1396
934
  </div>
1397
-
1398
935
 
1399
936
  <div class="method-description">
1400
-
1401
937
  <p>Read a header chunk.</p>
1402
-
1403
938
 
1404
-
1405
939
  <div class="method-source-code" id="read_header-source">
1406
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 190</span>
1407
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read_header</span>
1408
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1409
- <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-constant">MThd_BYTE_ARRAY</span>, <span class="ruby-ivar">@skip_init</span>) <span class="ruby-comment"># &quot;MThd&quot;</span>
940
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 166</span>
941
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_header</span>
942
+ <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
943
+ <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-constant">MThd_BYTE_ARRAY</span>, <span class="ruby-ivar">@skip_init</span>) <span class="ruby-comment"># &quot;MThd&quot;</span>
1410
944
 
1411
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-identifier">read32</span>()
1412
- <span class="ruby-identifier">format</span> = <span class="ruby-identifier">read16</span>()
1413
- <span class="ruby-identifier">ntrks</span> = <span class="ruby-identifier">read16</span>()
1414
- <span class="ruby-identifier">division</span> = <span class="ruby-identifier">read16</span>()
945
+ <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-identifier">read32</span>
946
+ <span class="ruby-identifier">format</span> = <span class="ruby-identifier">read16</span>
947
+ <span class="ruby-identifier">ntrks</span> = <span class="ruby-identifier">read16</span>
948
+ <span class="ruby-identifier">division</span> = <span class="ruby-identifier">read16</span>
1415
949
 
1416
- <span class="ruby-identifier">header</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">ntrks</span>, <span class="ruby-identifier">division</span>)
950
+ <span class="ruby-identifier">header</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">ntrks</span>, <span class="ruby-identifier">division</span>)
1417
951
 
1418
- <span class="ruby-comment"># Flush any extra stuff, in case the length of the header is not 6</span>
1419
- <span class="ruby-keyword">if</span> <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1420
- <span class="ruby-identifier">get_bytes</span>(<span class="ruby-ivar">@bytes_to_be_read</span>)
1421
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1422
- <span class="ruby-keyword">end</span>
952
+ <span class="ruby-comment"># Flush any extra stuff, in case the length of the header is not 6</span>
953
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
954
+ <span class="ruby-identifier">get_bytes</span>(<span class="ruby-ivar">@bytes_to_be_read</span>)
955
+ <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
956
+ <span class="ruby-keyword">end</span>
1423
957
 
1424
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">ntrks</span>
958
+ <span class="ruby-identifier">ntrks</span>
1425
959
  <span class="ruby-keyword">end</span></pre>
1426
- </div><!-- read_header-source -->
1427
-
960
+ </div>
1428
961
  </div>
1429
962
 
1430
-
1431
963
 
1432
-
1433
- </div><!-- read_header-method -->
964
+ </div>
1434
965
 
1435
-
1436
966
  <div id="method-i-read_mt_header_string" class="method-detail ">
1437
-
1438
967
  <div class="method-heading">
1439
968
  <span class="method-name">read_mt_header_string</span><span
1440
969
  class="method-args">(bytes, skip)</span>
1441
970
  <span class="method-click-advice">click to toggle source</span>
1442
971
  </div>
1443
-
1444
972
 
1445
973
  <div class="method-description">
1446
-
1447
- <p>Read through 'MThd' or 'MTrk' header string. If skip is true, attempt to
1448
- skip initial trash. If there is an error, <a
1449
- href="MIDIFile.html#method-i-error">error</a> is called.</p>
1450
-
974
+ <p>Read through ‘MThd’ or ‘MTrk’ header string. If skip is true, attempt to skip initial trash. If there is an error, <a href="MIDIFile.html#method-i-error"><code>error</code></a> is called.</p>
1451
975
 
1452
-
1453
976
  <div class="method-source-code" id="read_mt_header_string-source">
1454
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 160</span>
1455
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-identifier">bytes</span>, <span class="ruby-identifier">skip</span>)
1456
- <span class="ruby-identifier">b</span> = []
1457
- <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span>
1458
- <span class="ruby-keyword">while</span> <span class="ruby-keyword">true</span>
1459
- <span class="ruby-identifier">data</span> = <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">bytes_to_read</span>)
1460
- <span class="ruby-identifier">b</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">data</span>
1461
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">4</span>
1462
- <span class="ruby-identifier">error</span>(<span class="ruby-string">&quot;unexpected EOF while trying to read header&quot;</span> <span class="ruby-operator">+</span>
1463
- <span class="ruby-node">&quot; string #{s}&quot;</span>)
1464
- <span class="ruby-keyword">end</span>
1465
-
1466
- <span class="ruby-comment"># See if we found the bytes we're looking for</span>
1467
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">bytes</span>
1468
-
1469
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">skip</span> <span class="ruby-comment"># Try again with the next char</span>
1470
- <span class="ruby-identifier">i</span> = <span class="ruby-identifier">b</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">index</span>(<span class="ruby-identifier">bytes</span>[<span class="ruby-value">0</span>])
1471
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">i</span>.<span class="ruby-identifier">nil?</span>
1472
- <span class="ruby-identifier">b</span> = []
1473
- <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span>
1474
- <span class="ruby-keyword">else</span>
1475
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
1476
- <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>
1477
- <span class="ruby-keyword">end</span>
1478
- <span class="ruby-keyword">else</span>
1479
- <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;header string #{bytes.collect{|b| b.chr}.join} not found&quot;</span>)
1480
- <span class="ruby-keyword">end</span>
977
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 139</span>
978
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_mt_header_string</span>(<span class="ruby-identifier">bytes</span>, <span class="ruby-identifier">skip</span>)
979
+ <span class="ruby-identifier">b</span> = []
980
+ <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span>
981
+ <span class="ruby-keyword">while</span> <span class="ruby-keyword">true</span>
982
+ <span class="ruby-identifier">data</span> = <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">bytes_to_read</span>)
983
+ <span class="ruby-identifier">b</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">data</span>
984
+ <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;unexpected EOF while trying to read header string #{s}&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">4</span>
985
+
986
+ <span class="ruby-comment"># See if we found the bytes we&#39;re looking for</span>
987
+ <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">bytes</span>
988
+
989
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">skip</span> <span class="ruby-comment"># Try again with the next char</span>
990
+ <span class="ruby-identifier">i</span> = <span class="ruby-identifier">b</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">index</span>(<span class="ruby-identifier">bytes</span>[<span class="ruby-value">0</span>])
991
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">i</span>.<span class="ruby-identifier">nil?</span>
992
+ <span class="ruby-identifier">b</span> = []
993
+ <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span>
994
+ <span class="ruby-keyword">else</span>
995
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
996
+ <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>
997
+ <span class="ruby-keyword">end</span>
998
+ <span class="ruby-keyword">else</span>
999
+ <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;header string #{bytes.collect { |b| b.chr }.join} not found&quot;</span>)
1481
1000
  <span class="ruby-keyword">end</span>
1001
+ <span class="ruby-keyword">end</span>
1482
1002
  <span class="ruby-keyword">end</span></pre>
1483
- </div><!-- read_mt_header_string-source -->
1484
-
1003
+ </div>
1485
1004
  </div>
1486
1005
 
1487
-
1488
1006
 
1489
-
1490
- </div><!-- read_mt_header_string-method -->
1007
+ </div>
1491
1008
 
1492
-
1493
1009
  <div id="method-i-read_track" class="method-detail ">
1494
-
1495
1010
  <div class="method-heading">
1496
1011
  <span class="method-name">read_track</span><span
1497
1012
  class="method-args">()</span>
1498
1013
  <span class="method-click-advice">click to toggle source</span>
1499
1014
  </div>
1500
-
1501
1015
 
1502
1016
  <div class="method-description">
1503
-
1504
1017
  <p>Read a track chunk.</p>
1505
-
1506
1018
 
1507
-
1508
1019
  <div class="method-source-code" id="read_track-source">
1509
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 211</span>
1510
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read_track</span>
1511
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">c1</span> = <span class="ruby-identifier">type</span> = <span class="ruby-identifier">needed</span> = <span class="ruby-value">0</span>
1512
- <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">false</span> <span class="ruby-comment"># True if last msg was unfinished</span>
1513
- <span class="ruby-identifier">running</span> = <span class="ruby-keyword">false</span> <span class="ruby-comment"># True when running status used</span>
1514
- <span class="ruby-identifier">status</span> = <span class="ruby-value">0</span> <span class="ruby-comment"># (Possibly running) status byte</span>
1020
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 187</span>
1021
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_track</span>
1022
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">c1</span> = <span class="ruby-identifier">type</span> = <span class="ruby-identifier">needed</span> = <span class="ruby-value">0</span>
1023
+ <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">false</span> <span class="ruby-comment"># True if last msg was unfinished</span>
1024
+ <span class="ruby-identifier">running</span> = <span class="ruby-keyword">false</span> <span class="ruby-comment"># True when running status used</span>
1025
+ <span class="ruby-identifier">status</span> = <span class="ruby-value">0</span> <span class="ruby-comment"># (Possibly running) status byte</span>
1515
1026
 
1516
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1517
- <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-constant">MTrk_BYTE_ARRAY</span>, <span class="ruby-keyword">false</span>)
1518
-
1519
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-identifier">read32</span>()
1520
- <span class="ruby-ivar">@curr_ticks</span> = <span class="ruby-ivar">@ticks_so_far</span> = <span class="ruby-value">0</span>
1521
-
1522
- <span class="ruby-identifier">start_track</span>()
1523
-
1524
- <span class="ruby-keyword">while</span> <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1525
- <span class="ruby-ivar">@curr_ticks</span> = <span class="ruby-identifier">read_var_len</span>() <span class="ruby-comment"># Delta time</span>
1526
- <span class="ruby-ivar">@ticks_so_far</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@curr_ticks</span>
1527
-
1528
- <span class="ruby-comment"># Copy raw var num data into raw time stamp data</span>
1529
- <span class="ruby-ivar">@raw_time_stamp_data</span> = <span class="ruby-ivar">@raw_var_num_data</span>.<span class="ruby-identifier">dup</span>()
1530
-
1531
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>() <span class="ruby-comment"># Read first byte</span>
1532
-
1533
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">sysex_continue</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">EOX</span>
1534
- <span class="ruby-identifier">error</span>(<span class="ruby-string">&quot;didn't find expected continuation of a sysex&quot;</span>)
1535
- <span class="ruby-keyword">end</span>
1536
-
1537
- <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> &amp; <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span> <span class="ruby-comment"># Running status?</span>
1538
- <span class="ruby-identifier">error</span>(<span class="ruby-string">'unexpected running status'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">status</span>.<span class="ruby-identifier">zero?</span>
1539
- <span class="ruby-identifier">running</span> = <span class="ruby-keyword">true</span>
1540
- <span class="ruby-keyword">else</span>
1541
- <span class="ruby-identifier">status</span> = <span class="ruby-identifier">c</span>
1542
- <span class="ruby-identifier">running</span> = <span class="ruby-keyword">false</span>
1543
- <span class="ruby-keyword">end</span>
1544
-
1545
- <span class="ruby-identifier">needed</span> = <span class="ruby-constant">NUM_DATA_BYTES</span>[(<span class="ruby-identifier">status</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">4</span>) &amp; <span class="ruby-value">0x0f</span>]
1546
-
1547
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">needed</span>.<span class="ruby-identifier">nonzero?</span> <span class="ruby-comment"># i.e., is it a channel message?</span>
1548
- <span class="ruby-identifier">c1</span> = <span class="ruby-identifier">running</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">:</span> (<span class="ruby-identifier">getc</span>() &amp; <span class="ruby-value">0x7f</span>)
1549
-
1550
- <span class="ruby-comment"># The &quot;&amp; 0x7f&quot; here may seem unnecessary, but I've seen</span>
1551
- <span class="ruby-comment"># &quot;bad&quot; MIDI files that had, for example, volume bytes</span>
1552
- <span class="ruby-comment"># with the upper bit set. This code should not harm</span>
1553
- <span class="ruby-comment"># proper data.</span>
1554
- <span class="ruby-identifier">chan_message</span>(<span class="ruby-identifier">running</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">c1</span>,
1555
- (<span class="ruby-identifier">needed</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>) <span class="ruby-operator">?</span> (<span class="ruby-identifier">getc</span>() &amp; <span class="ruby-value">0x7f</span>) <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
1556
- <span class="ruby-keyword">next</span>
1557
- <span class="ruby-keyword">end</span>
1558
-
1559
- <span class="ruby-keyword">case</span> <span class="ruby-identifier">c</span>
1560
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_EVENT</span> <span class="ruby-comment"># Meta event</span>
1561
- <span class="ruby-identifier">type</span> = <span class="ruby-identifier">getc</span>()
1562
- <span class="ruby-identifier">msg_init</span>()
1563
- <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>())
1564
- <span class="ruby-identifier">meta_event</span>(<span class="ruby-identifier">type</span>)
1565
- <span class="ruby-keyword">when</span> <span class="ruby-constant">SYSEX</span> <span class="ruby-comment"># Start of system exclusive</span>
1566
- <span class="ruby-identifier">msg_init</span>()
1567
- <span class="ruby-identifier">msg_add</span>(<span class="ruby-constant">SYSEX</span>)
1568
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>())
1569
-
1570
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-constant">EOX</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@no_merge</span>
1571
- <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>())
1572
- <span class="ruby-keyword">else</span>
1573
- <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">true</span>
1574
- <span class="ruby-keyword">end</span>
1575
- <span class="ruby-keyword">when</span> <span class="ruby-constant">EOX</span> <span class="ruby-comment"># Sysex continuation or arbitrary stuff</span>
1576
- <span class="ruby-identifier">msg_init</span>() <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sysex_continue</span>
1577
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>())
1578
-
1579
- <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sysex_continue</span>
1580
- <span class="ruby-identifier">handle_arbitrary</span>(<span class="ruby-identifier">msg</span>())
1581
- <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-constant">EOX</span>
1582
- <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>())
1583
- <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">false</span>
1584
- <span class="ruby-keyword">end</span>
1585
- <span class="ruby-keyword">else</span>
1586
- <span class="ruby-identifier">bad_byte</span>(<span class="ruby-identifier">c</span>)
1587
- <span class="ruby-keyword">end</span>
1027
+ <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1028
+ <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-constant">MTrk_BYTE_ARRAY</span>, <span class="ruby-keyword">false</span>)
1029
+
1030
+ <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-identifier">read32</span>
1031
+ <span class="ruby-ivar">@curr_ticks</span> = <span class="ruby-ivar">@ticks_so_far</span> = <span class="ruby-value">0</span>
1032
+
1033
+ <span class="ruby-identifier">start_track</span>
1034
+
1035
+ <span class="ruby-keyword">while</span> <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1036
+ <span class="ruby-ivar">@curr_ticks</span> = <span class="ruby-identifier">read_var_len</span> <span class="ruby-comment"># Delta time</span>
1037
+ <span class="ruby-ivar">@ticks_so_far</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@curr_ticks</span>
1038
+
1039
+ <span class="ruby-comment"># Copy raw var num data into raw time stamp data</span>
1040
+ <span class="ruby-ivar">@raw_time_stamp_data</span> = <span class="ruby-ivar">@raw_var_num_data</span>.<span class="ruby-identifier">dup</span>
1041
+
1042
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span> <span class="ruby-comment"># Read first byte</span>
1043
+
1044
+ <span class="ruby-identifier">error</span>(<span class="ruby-string">&quot;didn&#39;t find expected continuation of a sysex&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">sysex_continue</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">EOX</span>
1045
+
1046
+ <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span> <span class="ruby-comment"># Running status?</span>
1047
+ <span class="ruby-identifier">error</span>(<span class="ruby-string">&#39;unexpected running status&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">status</span>.<span class="ruby-identifier">zero?</span>
1048
+ <span class="ruby-identifier">running</span> = <span class="ruby-keyword">true</span>
1049
+ <span class="ruby-keyword">else</span>
1050
+ <span class="ruby-identifier">status</span> = <span class="ruby-identifier">c</span>
1051
+ <span class="ruby-identifier">running</span> = <span class="ruby-keyword">false</span>
1052
+ <span class="ruby-keyword">end</span>
1053
+
1054
+ <span class="ruby-identifier">needed</span> = <span class="ruby-constant">NUM_DATA_BYTES</span>[(<span class="ruby-identifier">status</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">4</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x0f</span>]
1055
+
1056
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">needed</span>.<span class="ruby-identifier">nonzero?</span> <span class="ruby-comment"># i.e., is it a channel message?</span>
1057
+ <span class="ruby-identifier">c1</span> = <span class="ruby-identifier">running</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">:</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>)
1058
+
1059
+ <span class="ruby-comment"># The &quot;&amp; 0x7f&quot; here may seem unnecessary, but I&#39;ve seen</span>
1060
+ <span class="ruby-comment"># &quot;bad&quot; MIDI files that had, for example, volume bytes</span>
1061
+ <span class="ruby-comment"># with the upper bit set. This code should not harm</span>
1062
+ <span class="ruby-comment"># proper data.</span>
1063
+ <span class="ruby-identifier">chan_message</span>(<span class="ruby-identifier">running</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">c1</span>,
1064
+ <span class="ruby-identifier">needed</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>) <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
1065
+ <span class="ruby-keyword">next</span>
1066
+ <span class="ruby-keyword">end</span>
1067
+
1068
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">c</span>
1069
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">META_EVENT</span> <span class="ruby-comment"># Meta event</span>
1070
+ <span class="ruby-identifier">type</span> = <span class="ruby-identifier">getc</span>
1071
+ <span class="ruby-identifier">msg_init</span>
1072
+ <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>)
1073
+ <span class="ruby-identifier">meta_event</span>(<span class="ruby-identifier">type</span>)
1074
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">SYSEX</span> <span class="ruby-comment"># Start of system exclusive</span>
1075
+ <span class="ruby-identifier">msg_init</span>
1076
+ <span class="ruby-identifier">msg_add</span>(<span class="ruby-constant">SYSEX</span>)
1077
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>)
1078
+
1079
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-constant">EOX</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@no_merge</span>
1080
+ <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>)
1081
+ <span class="ruby-keyword">else</span>
1082
+ <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">true</span>
1083
+ <span class="ruby-keyword">end</span>
1084
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">EOX</span> <span class="ruby-comment"># Sysex continuation or arbitrary stuff</span>
1085
+ <span class="ruby-identifier">msg_init</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">sysex_continue</span>
1086
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>)
1087
+
1088
+ <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sysex_continue</span>
1089
+ <span class="ruby-identifier">handle_arbitrary</span>(<span class="ruby-identifier">msg</span>)
1090
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-constant">EOX</span>
1091
+ <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>)
1092
+ <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">false</span>
1093
+ <span class="ruby-keyword">end</span>
1094
+ <span class="ruby-keyword">else</span>
1095
+ <span class="ruby-identifier">bad_byte</span>(<span class="ruby-identifier">c</span>)
1588
1096
  <span class="ruby-keyword">end</span>
1589
- <span class="ruby-identifier">end_track</span>()
1097
+ <span class="ruby-keyword">end</span>
1098
+ <span class="ruby-identifier">end_track</span>
1590
1099
  <span class="ruby-keyword">end</span></pre>
1591
- </div><!-- read_track-source -->
1592
-
1100
+ </div>
1593
1101
  </div>
1594
1102
 
1595
-
1596
1103
 
1597
-
1598
- </div><!-- read_track-method -->
1104
+ </div>
1599
1105
 
1600
-
1601
1106
  <div id="method-i-read_var_len" class="method-detail ">
1602
-
1603
1107
  <div class="method-heading">
1604
1108
  <span class="method-name">read_var_len</span><span
1605
1109
  class="method-args">()</span>
1606
1110
  <span class="method-click-advice">click to toggle source</span>
1607
1111
  </div>
1608
-
1609
1112
 
1610
1113
  <div class="method-description">
1611
-
1612
1114
  <p>Read a varlen value.</p>
1613
-
1614
1115
 
1615
-
1616
1116
  <div class="method-source-code" id="read_var_len-source">
1617
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 391</span>
1618
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">read_var_len</span>
1619
- <span class="ruby-ivar">@raw_var_num_data</span> = []
1620
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>()
1621
- <span class="ruby-ivar">@raw_var_num_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1622
- <span class="ruby-identifier">val</span> = <span class="ruby-identifier">c</span>
1623
- <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x80</span>).<span class="ruby-identifier">nonzero?</span>
1624
- <span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;=</span> <span class="ruby-value">0x7f</span>
1625
- <span class="ruby-keyword">while</span> <span class="ruby-keyword">true</span>
1626
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>()
1627
- <span class="ruby-ivar">@raw_var_num_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1628
- <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">7</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">c</span> &amp; <span class="ruby-value">0x7f</span>)
1629
- <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> &amp; <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span>
1630
- <span class="ruby-keyword">end</span>
1117
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 365</span>
1118
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">read_var_len</span>
1119
+ <span class="ruby-ivar">@raw_var_num_data</span> = []
1120
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>
1121
+ <span class="ruby-ivar">@raw_var_num_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1122
+ <span class="ruby-identifier">val</span> = <span class="ruby-identifier">c</span>
1123
+ <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">nonzero?</span>
1124
+ <span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;=</span> <span class="ruby-value">0x7f</span>
1125
+ <span class="ruby-keyword">while</span> <span class="ruby-keyword">true</span>
1126
+ <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>
1127
+ <span class="ruby-ivar">@raw_var_num_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1128
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">7</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>)
1129
+ <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span>
1631
1130
  <span class="ruby-keyword">end</span>
1632
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
1131
+ <span class="ruby-keyword">end</span>
1132
+ <span class="ruby-identifier">val</span>
1633
1133
  <span class="ruby-keyword">end</span></pre>
1634
- </div><!-- read_var_len-source -->
1635
-
1134
+ </div>
1636
1135
  </div>
1637
1136
 
1638
-
1639
1137
 
1640
-
1641
- </div><!-- read_var_len-method -->
1138
+ </div>
1642
1139
 
1643
-
1644
1140
  <div id="method-i-sequence_number" class="method-detail ">
1645
-
1646
1141
  <div class="method-heading">
1647
1142
  <span class="method-name">sequence_number</span><span
1648
1143
  class="method-args">(num)</span>
1649
1144
  <span class="method-click-advice">click to toggle source</span>
1650
1145
  </div>
1651
-
1652
1146
 
1653
1147
  <div class="method-description">
1654
1148
 
1655
-
1656
-
1657
1149
 
1658
-
1659
1150
  <div class="method-source-code" id="sequence_number-source">
1660
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 131</span>
1661
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">sequence_number</span>(<span class="ruby-identifier">num</span>)
1151
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 111</span>
1152
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sequence_number</span>(<span class="ruby-identifier">num</span>)
1662
1153
  <span class="ruby-keyword">end</span></pre>
1663
- </div><!-- sequence_number-source -->
1664
-
1154
+ </div>
1665
1155
  </div>
1666
1156
 
1667
-
1668
1157
 
1669
-
1670
- </div><!-- sequence_number-method -->
1158
+ </div>
1671
1159
 
1672
-
1673
1160
  <div id="method-i-sequencer_specific" class="method-detail ">
1674
-
1675
1161
  <div class="method-heading">
1676
1162
  <span class="method-name">sequencer_specific</span><span
1677
1163
  class="method-args">(type, msg)</span>
1678
1164
  <span class="method-click-advice">click to toggle source</span>
1679
1165
  </div>
1680
-
1681
1166
 
1682
1167
  <div class="method-description">
1683
1168
 
1684
-
1685
-
1686
1169
 
1687
-
1688
1170
  <div class="method-source-code" id="sequencer_specific-source">
1689
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 128</span>
1690
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">sequencer_specific</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
1171
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 108</span>
1172
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sequencer_specific</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
1691
1173
  <span class="ruby-keyword">end</span></pre>
1692
- </div><!-- sequencer_specific-source -->
1693
-
1174
+ </div>
1694
1175
  </div>
1695
1176
 
1696
-
1697
1177
 
1698
-
1699
- </div><!-- sequencer_specific-method -->
1178
+ </div>
1700
1179
 
1701
-
1702
1180
  <div id="method-i-smpte" class="method-detail ">
1703
-
1704
1181
  <div class="method-heading">
1705
1182
  <span class="method-name">smpte</span><span
1706
1183
  class="method-args">(hour, min, sec, frame, fract)</span>
1707
1184
  <span class="method-click-advice">click to toggle source</span>
1708
1185
  </div>
1709
-
1710
1186
 
1711
1187
  <div class="method-description">
1712
1188
 
1713
-
1714
-
1715
1189
 
1716
-
1717
1190
  <div class="method-source-code" id="smpte-source">
1718
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 143</span>
1719
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">smpte</span>(<span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">frame</span>, <span class="ruby-identifier">fract</span>)
1191
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 123</span>
1192
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">smpte</span>(<span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">frame</span>, <span class="ruby-identifier">fract</span>)
1720
1193
  <span class="ruby-keyword">end</span></pre>
1721
- </div><!-- smpte-source -->
1722
-
1194
+ </div>
1723
1195
  </div>
1724
1196
 
1725
-
1726
1197
 
1727
-
1728
- </div><!-- smpte-method -->
1198
+ </div>
1729
1199
 
1730
-
1731
1200
  <div id="method-i-start_track" class="method-detail ">
1732
-
1733
1201
  <div class="method-heading">
1734
1202
  <span class="method-name">start_track</span><span
1735
1203
  class="method-args">(bytes_to_be_read)</span>
1736
1204
  <span class="method-click-advice">click to toggle source</span>
1737
1205
  </div>
1738
-
1739
1206
 
1740
1207
  <div class="method-description">
1741
1208
 
1742
-
1743
-
1744
1209
 
1745
-
1746
1210
  <div class="method-source-code" id="start_track-source">
1747
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 95</span>
1748
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">start_track</span>(<span class="ruby-identifier">bytes_to_be_read</span>)
1211
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 75</span>
1212
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">start_track</span>(<span class="ruby-identifier">bytes_to_be_read</span>)
1749
1213
  <span class="ruby-keyword">end</span></pre>
1750
- </div><!-- start_track-source -->
1751
-
1214
+ </div>
1752
1215
  </div>
1753
1216
 
1754
-
1755
1217
 
1756
-
1757
- </div><!-- start_track-method -->
1218
+ </div>
1758
1219
 
1759
-
1760
1220
  <div id="method-i-sysex" class="method-detail ">
1761
-
1762
1221
  <div class="method-heading">
1763
1222
  <span class="method-name">sysex</span><span
1764
1223
  class="method-args">(msg)</span>
1765
1224
  <span class="method-click-advice">click to toggle source</span>
1766
1225
  </div>
1767
-
1768
1226
 
1769
1227
  <div class="method-description">
1770
1228
 
1771
-
1772
-
1773
1229
 
1774
-
1775
1230
  <div class="method-source-code" id="sysex-source">
1776
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 122</span>
1777
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">sysex</span>(<span class="ruby-identifier">msg</span>)
1231
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 102</span>
1232
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sysex</span>(<span class="ruby-identifier">msg</span>)
1778
1233
  <span class="ruby-keyword">end</span></pre>
1779
- </div><!-- sysex-source -->
1780
-
1234
+ </div>
1781
1235
  </div>
1782
1236
 
1783
-
1784
1237
 
1785
-
1786
- </div><!-- sysex-method -->
1238
+ </div>
1787
1239
 
1788
-
1789
1240
  <div id="method-i-tempo" class="method-detail ">
1790
-
1791
1241
  <div class="method-heading">
1792
1242
  <span class="method-name">tempo</span><span
1793
1243
  class="method-args">(microsecs)</span>
1794
1244
  <span class="method-click-advice">click to toggle source</span>
1795
1245
  </div>
1796
-
1797
1246
 
1798
1247
  <div class="method-description">
1799
1248
 
1800
-
1801
-
1802
1249
 
1803
-
1804
1250
  <div class="method-source-code" id="tempo-source">
1805
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 146</span>
1806
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">tempo</span>(<span class="ruby-identifier">microsecs</span>)
1251
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 126</span>
1252
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">tempo</span>(<span class="ruby-identifier">microsecs</span>)
1807
1253
  <span class="ruby-keyword">end</span></pre>
1808
- </div><!-- tempo-source -->
1809
-
1254
+ </div>
1810
1255
  </div>
1811
1256
 
1812
-
1813
1257
 
1814
-
1815
- </div><!-- tempo-method -->
1258
+ </div>
1816
1259
 
1817
-
1818
1260
  <div id="method-i-text" class="method-detail ">
1819
-
1820
1261
  <div class="method-heading">
1821
1262
  <span class="method-name">text</span><span
1822
1263
  class="method-args">(type, msg)</span>
1823
1264
  <span class="method-click-advice">click to toggle source</span>
1824
1265
  </div>
1825
-
1826
1266
 
1827
1267
  <div class="method-description">
1828
1268
 
1829
-
1830
-
1831
1269
 
1832
-
1833
1270
  <div class="method-source-code" id="text-source">
1834
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 134</span>
1835
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
1271
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 114</span>
1272
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">text</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
1836
1273
  <span class="ruby-keyword">end</span></pre>
1837
- </div><!-- text-source -->
1838
-
1274
+ </div>
1839
1275
  </div>
1840
1276
 
1841
-
1842
1277
 
1843
-
1844
- </div><!-- text-method -->
1278
+ </div>
1845
1279
 
1846
-
1847
1280
  <div id="method-i-time_signature" class="method-detail ">
1848
-
1849
1281
  <div class="method-heading">
1850
1282
  <span class="method-name">time_signature</span><span
1851
1283
  class="method-args">(numer, denom, clocks, qnotes)</span>
1852
1284
  <span class="method-click-advice">click to toggle source</span>
1853
1285
  </div>
1854
-
1855
1286
 
1856
1287
  <div class="method-description">
1857
1288
 
1858
-
1859
-
1860
1289
 
1861
-
1862
1290
  <div class="method-source-code" id="time_signature-source">
1863
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 140</span>
1864
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">time_signature</span>(<span class="ruby-identifier">numer</span>, <span class="ruby-identifier">denom</span>, <span class="ruby-identifier">clocks</span>, <span class="ruby-identifier">qnotes</span>)
1291
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 120</span>
1292
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">time_signature</span>(<span class="ruby-identifier">numer</span>, <span class="ruby-identifier">denom</span>, <span class="ruby-identifier">clocks</span>, <span class="ruby-identifier">qnotes</span>)
1865
1293
  <span class="ruby-keyword">end</span></pre>
1866
- </div><!-- time_signature-source -->
1867
-
1294
+ </div>
1868
1295
  </div>
1869
1296
 
1870
-
1871
1297
 
1872
-
1873
- </div><!-- time_signature-method -->
1298
+ </div>
1874
1299
 
1875
-
1876
1300
  <div id="method-i-write16" class="method-detail ">
1877
-
1878
1301
  <div class="method-heading">
1879
1302
  <span class="method-name">write16</span><span
1880
1303
  class="method-args">(val)</span>
1881
1304
  <span class="method-click-advice">click to toggle source</span>
1882
1305
  </div>
1883
-
1884
1306
 
1885
1307
  <div class="method-description">
1886
-
1887
1308
  <p>Write a sixteen-bit value.</p>
1888
-
1889
1309
 
1890
-
1891
1310
  <div class="method-source-code" id="write16-source">
1892
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 409</span>
1893
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">write16</span>(<span class="ruby-identifier">val</span>)
1894
- <span class="ruby-identifier">val</span> = (<span class="ruby-operator">-</span><span class="ruby-identifier">val</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x8000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
1895
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) &amp; <span class="ruby-value">0xff</span>)
1896
- <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0xff</span>)
1311
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 383</span>
1312
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">write16</span>(<span class="ruby-identifier">val</span>)
1313
+ <span class="ruby-identifier">val</span> = (<span class="ruby-operator">-</span><span class="ruby-identifier">val</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x8000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
1314
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1315
+ <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1897
1316
  <span class="ruby-keyword">end</span></pre>
1898
- </div><!-- write16-source -->
1899
-
1317
+ </div>
1900
1318
  </div>
1901
1319
 
1902
-
1903
1320
 
1904
-
1905
- </div><!-- write16-method -->
1321
+ </div>
1906
1322
 
1907
-
1908
1323
  <div id="method-i-write32" class="method-detail ">
1909
-
1910
1324
  <div class="method-heading">
1911
1325
  <span class="method-name">write32</span><span
1912
1326
  class="method-args">(val)</span>
1913
1327
  <span class="method-click-advice">click to toggle source</span>
1914
1328
  </div>
1915
-
1916
1329
 
1917
1330
  <div class="method-description">
1918
-
1919
1331
  <p>Write a 32-bit value.</p>
1920
-
1921
1332
 
1922
-
1923
1333
  <div class="method-source-code" id="write32-source">
1924
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 416</span>
1925
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">write32</span>(<span class="ruby-identifier">val</span>)
1926
- <span class="ruby-identifier">val</span> = (<span class="ruby-operator">-</span><span class="ruby-identifier">val</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80000000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
1927
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>) &amp; <span class="ruby-value">0xff</span>)
1928
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) &amp; <span class="ruby-value">0xff</span>)
1929
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) &amp; <span class="ruby-value">0xff</span>)
1930
- <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0xff</span>)
1334
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 390</span>
1335
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">write32</span>(<span class="ruby-identifier">val</span>)
1336
+ <span class="ruby-identifier">val</span> = (<span class="ruby-operator">-</span><span class="ruby-identifier">val</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80000000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
1337
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1338
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1339
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1340
+ <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1931
1341
  <span class="ruby-keyword">end</span></pre>
1932
- </div><!-- write32-source -->
1933
-
1342
+ </div>
1934
1343
  </div>
1935
1344
 
1936
-
1937
1345
 
1938
-
1939
- </div><!-- write32-method -->
1346
+ </div>
1940
1347
 
1941
-
1942
1348
  <div id="method-i-write_var_len" class="method-detail ">
1943
-
1944
1349
  <div class="method-heading">
1945
1350
  <span class="method-name">write_var_len</span><span
1946
1351
  class="method-args">(val)</span>
1947
1352
  <span class="method-click-advice">click to toggle source</span>
1948
1353
  </div>
1949
-
1950
1354
 
1951
1355
  <div class="method-description">
1952
-
1953
1356
  <p>Write a variable length value.</p>
1954
-
1955
1357
 
1956
-
1957
1358
  <div class="method-source-code" id="write_var_len-source">
1958
- <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 425</span>
1959
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_var_len</span>(<span class="ruby-identifier">val</span>)
1960
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">zero?</span>
1961
- <span class="ruby-identifier">putc</span>(<span class="ruby-value">0</span>)
1962
- <span class="ruby-keyword">return</span>
1963
- <span class="ruby-keyword">end</span>
1359
+ <pre><span class="ruby-comment"># File lib/midilib/io/midifile.rb, line 399</span>
1360
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">write_var_len</span>(<span class="ruby-identifier">val</span>)
1361
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">zero?</span>
1362
+ <span class="ruby-identifier">putc</span>(<span class="ruby-value">0</span>)
1363
+ <span class="ruby-keyword">return</span>
1364
+ <span class="ruby-keyword">end</span>
1964
1365
 
1965
- <span class="ruby-identifier">buf</span> = []
1366
+ <span class="ruby-identifier">buf</span> = []
1966
1367
 
1967
- <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7f</span>)
1968
- <span class="ruby-keyword">while</span> (<span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;&gt;=</span> <span class="ruby-value">7</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1969
- <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7f</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80</span>
1970
- <span class="ruby-keyword">end</span>
1368
+ <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>)
1369
+ <span class="ruby-keyword">while</span> (<span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;&gt;=</span> <span class="ruby-value">7</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1370
+ <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80</span>
1371
+ <span class="ruby-keyword">end</span>
1971
1372
 
1972
- <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">b</span>) }
1373
+ <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">b</span>) }
1973
1374
  <span class="ruby-keyword">end</span></pre>
1974
- </div><!-- write_var_len-source -->
1975
-
1375
+ </div>
1976
1376
  </div>
1977
1377
 
1978
-
1979
1378
 
1980
-
1981
- </div><!-- write_var_len-method -->
1379
+ </div>
1982
1380
 
1983
-
1984
- </section><!-- public-instance-method-details -->
1985
-
1986
- </section><!-- 5Buntitled-5D -->
1381
+ </section>
1987
1382
 
1988
- </div><!-- documentation -->
1383
+ </section>
1384
+ </main>
1989
1385
 
1990
1386
 
1991
- <footer id="validator-badges">
1992
- <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
1993
- <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
1994
- <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
1387
+ <footer id="validator-badges" role="contentinfo">
1388
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
1389
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.4.0.
1390
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
1995
1391
  </footer>
1996
1392