midilib 3.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +12 -12
  3. data/Credits +7 -0
  4. data/README.rdoc +10 -1
  5. data/Rakefile +0 -1
  6. data/TODO.rdoc +8 -7
  7. data/lib/midilib/event.rb +2 -2
  8. data/lib/midilib/info.rb +3 -3
  9. data/lib/midilib/io/seqreader.rb +11 -27
  10. data/lib/midilib/io/seqwriter.rb +6 -4
  11. data/lib/midilib/track.rb +38 -6
  12. data/test/test_event.rb +12 -0
  13. data/test/test_io.rb +28 -2
  14. data/test/test_track.rb +65 -1
  15. metadata +3 -87
  16. data/html/MIDI/ActiveSense.html +0 -171
  17. data/html/MIDI/ChannelEvent.html +0 -190
  18. data/html/MIDI/ChannelPressure.html +0 -212
  19. data/html/MIDI/Clock.html +0 -171
  20. data/html/MIDI/Continue.html +0 -171
  21. data/html/MIDI/Controller.html +0 -224
  22. data/html/MIDI/Event.html +0 -349
  23. data/html/MIDI/IO/MIDIFile.html +0 -1392
  24. data/html/MIDI/IO/SeqReader.html +0 -642
  25. data/html/MIDI/IO/SeqWriter.html +0 -442
  26. data/html/MIDI/IO.html +0 -91
  27. data/html/MIDI/KeySig.html +0 -292
  28. data/html/MIDI/Marker.html +0 -138
  29. data/html/MIDI/Measure.html +0 -260
  30. data/html/MIDI/Measures.html +0 -222
  31. data/html/MIDI/MetaEvent.html +0 -353
  32. data/html/MIDI/NoteEvent.html +0 -255
  33. data/html/MIDI/NoteOff.html +0 -188
  34. data/html/MIDI/NoteOn.html +0 -188
  35. data/html/MIDI/PitchBend.html +0 -213
  36. data/html/MIDI/PolyPressure.html +0 -216
  37. data/html/MIDI/ProgramChange.html +0 -212
  38. data/html/MIDI/Realtime.html +0 -194
  39. data/html/MIDI/Sequence.html +0 -641
  40. data/html/MIDI/SongPointer.html +0 -213
  41. data/html/MIDI/SongSelect.html +0 -212
  42. data/html/MIDI/Start.html +0 -171
  43. data/html/MIDI/Stop.html +0 -171
  44. data/html/MIDI/SystemCommon.html +0 -138
  45. data/html/MIDI/SystemExclusive.html +0 -215
  46. data/html/MIDI/SystemReset.html +0 -171
  47. data/html/MIDI/Tempo.html +0 -292
  48. data/html/MIDI/TimeSig.html +0 -286
  49. data/html/MIDI/Track.html +0 -489
  50. data/html/MIDI/TuneRequest.html +0 -194
  51. data/html/MIDI/Utils.html +0 -178
  52. data/html/MIDI.html +0 -281
  53. data/html/Object.html +0 -197
  54. data/html/README_rdoc.html +0 -545
  55. data/html/TODO_rdoc.html +0 -123
  56. data/html/created.rid +0 -15
  57. data/html/css/fonts.css +0 -167
  58. data/html/css/rdoc.css +0 -639
  59. data/html/fonts/Lato-Light.ttf +0 -0
  60. data/html/fonts/Lato-LightItalic.ttf +0 -0
  61. data/html/fonts/Lato-Regular.ttf +0 -0
  62. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  63. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  64. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  65. data/html/images/add.png +0 -0
  66. data/html/images/arrow_up.png +0 -0
  67. data/html/images/brick.png +0 -0
  68. data/html/images/brick_link.png +0 -0
  69. data/html/images/bug.png +0 -0
  70. data/html/images/bullet_black.png +0 -0
  71. data/html/images/bullet_toggle_minus.png +0 -0
  72. data/html/images/bullet_toggle_plus.png +0 -0
  73. data/html/images/date.png +0 -0
  74. data/html/images/delete.png +0 -0
  75. data/html/images/find.png +0 -0
  76. data/html/images/loadingAnimation.gif +0 -0
  77. data/html/images/macFFBgHack.png +0 -0
  78. data/html/images/package.png +0 -0
  79. data/html/images/page_green.png +0 -0
  80. data/html/images/page_white_text.png +0 -0
  81. data/html/images/page_white_width.png +0 -0
  82. data/html/images/plugin.png +0 -0
  83. data/html/images/ruby.png +0 -0
  84. data/html/images/tag_blue.png +0 -0
  85. data/html/images/tag_green.png +0 -0
  86. data/html/images/transparent.png +0 -0
  87. data/html/images/wrench.png +0 -0
  88. data/html/images/wrench_orange.png +0 -0
  89. data/html/images/zoom.png +0 -0
  90. data/html/index.html +0 -534
  91. data/html/js/darkfish.js +0 -84
  92. data/html/js/navigation.js +0 -105
  93. data/html/js/navigation.js.gz +0 -0
  94. data/html/js/search.js +0 -110
  95. data/html/js/search_index.js +0 -1
  96. data/html/js/search_index.js.gz +0 -0
  97. data/html/js/searcher.js +0 -229
  98. data/html/js/searcher.js.gz +0 -0
  99. data/html/table_of_contents.html +0 -1258
@@ -1,1392 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class MIDI::IO::MIDIFile - midilib</title>
8
-
9
- <script type="text/javascript">
10
- var rdoc_rel_prefix = "../../";
11
- var index_rel_prefix = "../../";
12
- </script>
13
-
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
-
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>
31
-
32
- <div id="table-of-contents-navigation">
33
- <a href="../../table_of_contents.html#pages">Pages</a>
34
- <a href="../../table_of_contents.html#classes">Classes</a>
35
- <a href="../../table_of_contents.html#methods">Methods</a>
36
- </div>
37
- </div>
38
-
39
- <div id="search-section" role="search" class="project-section initially-hidden">
40
- <form action="#" method="get" accept-charset="utf-8">
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"
45
- title="Type to search, Up and Down to navigate, Enter to load">
46
- </div>
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>
53
-
54
- </div>
55
-
56
-
57
-
58
- <div id="class-metadata">
59
-
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>
119
- </ul>
120
- </div>
121
-
122
- </div>
123
- </nav>
124
-
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>
129
-
130
- <section class="description">
131
-
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>
133
-
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>
135
-
136
- </section>
137
-
138
- <section id="5Buntitled-5D" class="documentation-section">
139
-
140
-
141
- <section class="constants-list">
142
- <header>
143
- <h3>Constants</h3>
144
- </header>
145
- <dl>
146
- <dt id="MThd_BYTE_ARRAY">MThd_BYTE_ARRAY
147
- <dd>
148
- <dt id="MTrk_BYTE_ARRAY">MTrk_BYTE_ARRAY
149
- <dd>
150
- <dt id="NUM_DATA_BYTES">NUM_DATA_BYTES
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>
152
- </dl>
153
- </section>
154
-
155
- <section class="attribute-method-details" class="method-section">
156
- <header>
157
- <h3>Attributes</h3>
158
- </header>
159
-
160
- <div id="attribute-i-bytes_to_be_read" class="method-detail">
161
- <div class="method-heading attribute-method-heading">
162
- <span class="method-name">bytes_to_be_read</span><span
163
- class="attribute-access-type">[RW]</span>
164
- </div>
165
-
166
- <div class="method-description">
167
-
168
- </div>
169
- </div>
170
- <div id="attribute-i-curr_ticks" class="method-detail">
171
- <div class="method-heading attribute-method-heading">
172
- <span class="method-name">curr_ticks</span><span
173
- class="attribute-access-type">[RW]</span>
174
- </div>
175
-
176
- <div class="method-description">
177
-
178
- </div>
179
- </div>
180
- <div id="attribute-i-no_merge" class="method-detail">
181
- <div class="method-heading attribute-method-heading">
182
- <span class="method-name">no_merge</span><span
183
- class="attribute-access-type">[RW]</span>
184
- </div>
185
-
186
- <div class="method-description">
187
-
188
- </div>
189
- </div>
190
- <div id="attribute-i-raw_data" class="method-detail">
191
- <div class="method-heading attribute-method-heading">
192
- <span class="method-name">raw_data</span><span
193
- class="attribute-access-type">[RW]</span>
194
- </div>
195
-
196
- <div class="method-description">
197
-
198
- </div>
199
- </div>
200
- <div id="attribute-i-raw_time_stamp_data" class="method-detail">
201
- <div class="method-heading attribute-method-heading">
202
- <span class="method-name">raw_time_stamp_data</span><span
203
- class="attribute-access-type">[RW]</span>
204
- </div>
205
-
206
- <div class="method-description">
207
- <p>Raw data info</p>
208
- </div>
209
- </div>
210
- <div id="attribute-i-raw_var_num_data" class="method-detail">
211
- <div class="method-heading attribute-method-heading">
212
- <span class="method-name">raw_var_num_data</span><span
213
- class="attribute-access-type">[RW]</span>
214
- </div>
215
-
216
- <div class="method-description">
217
-
218
- </div>
219
- </div>
220
- <div id="attribute-i-skip_init" class="method-detail">
221
- <div class="method-heading attribute-method-heading">
222
- <span class="method-name">skip_init</span><span
223
- class="attribute-access-type">[RW]</span>
224
- </div>
225
-
226
- <div class="method-description">
227
-
228
- </div>
229
- </div>
230
- <div id="attribute-i-ticks_so_far" class="method-detail">
231
- <div class="method-heading attribute-method-heading">
232
- <span class="method-name">ticks_so_far</span><span
233
- class="attribute-access-type">[RW]</span>
234
- </div>
235
-
236
- <div class="method-description">
237
-
238
- </div>
239
- </div>
240
- </section>
241
-
242
-
243
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
244
- <header>
245
- <h3>Public Class Methods</h3>
246
- </header>
247
-
248
- <div id="method-c-new" class="method-detail ">
249
- <div class="method-heading">
250
- <span class="method-name">new</span><span
251
- class="method-args">()</span>
252
- <span class="method-click-advice">click to toggle source</span>
253
- </div>
254
-
255
- <div class="method-description">
256
-
257
-
258
- <div class="method-source-code" id="new-source">
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>
266
- <span class="ruby-keyword">end</span></pre>
267
- </div>
268
- </div>
269
-
270
-
271
- </div>
272
-
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>
279
-
280
- <div id="method-i-arbitrary" class="method-detail ">
281
- <div class="method-heading">
282
- <span class="method-name">arbitrary</span><span
283
- class="method-args">(msg)</span>
284
- <span class="method-click-advice">click to toggle source</span>
285
- </div>
286
-
287
- <div class="method-description">
288
-
289
-
290
- <div class="method-source-code" id="arbitrary-source">
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>)
293
- <span class="ruby-keyword">end</span></pre>
294
- </div>
295
- </div>
296
-
297
-
298
- </div>
299
-
300
- <div id="method-i-bad_byte" class="method-detail ">
301
- <div class="method-heading">
302
- <span class="method-name">bad_byte</span><span
303
- class="method-args">(c)</span>
304
- <span class="method-click-advice">click to toggle source</span>
305
- </div>
306
-
307
- <div class="method-description">
308
- <p>Handle an unexpected byte.</p>
309
-
310
- <div class="method-source-code" id="bad_byte-source">
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>))
314
- <span class="ruby-keyword">end</span></pre>
315
- </div>
316
- </div>
317
-
318
-
319
- </div>
320
-
321
- <div id="method-i-chan_message" class="method-detail ">
322
- <div class="method-heading">
323
- <span class="method-name">chan_message</span><span
324
- class="method-args">(running, status, c1, c2)</span>
325
- <span class="method-click-advice">click to toggle source</span>
326
- </div>
327
-
328
- <div class="method-description">
329
- <p>Handle a channel message (note on, note off, etc.)</p>
330
-
331
- <div class="method-source-code" id="chan_message-source">
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>
359
- <span class="ruby-keyword">end</span></pre>
360
- </div>
361
- </div>
362
-
363
-
364
- </div>
365
-
366
- <div id="method-i-chan_pressure" class="method-detail ">
367
- <div class="method-heading">
368
- <span class="method-name">chan_pressure</span><span
369
- class="method-args">(chan, press)</span>
370
- <span class="method-click-advice">click to toggle source</span>
371
- </div>
372
-
373
- <div class="method-description">
374
-
375
-
376
- <div class="method-source-code" id="chan_pressure-source">
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>)
379
- <span class="ruby-keyword">end</span></pre>
380
- </div>
381
- </div>
382
-
383
-
384
- </div>
385
-
386
- <div id="method-i-controller" class="method-detail ">
387
- <div class="method-heading">
388
- <span class="method-name">controller</span><span
389
- class="method-args">(chan, control, value)</span>
390
- <span class="method-click-advice">click to toggle source</span>
391
- </div>
392
-
393
- <div class="method-description">
394
-
395
-
396
- <div class="method-source-code" id="controller-source">
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>)
399
- <span class="ruby-keyword">end</span></pre>
400
- </div>
401
- </div>
402
-
403
-
404
- </div>
405
-
406
- <div id="method-i-end_track" class="method-detail ">
407
- <div class="method-heading">
408
- <span class="method-name">end_track</span><span
409
- class="method-args">()</span>
410
- <span class="method-click-advice">click to toggle source</span>
411
- </div>
412
-
413
- <div class="method-description">
414
-
415
-
416
- <div class="method-source-code" id="end_track-source">
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>
419
- <span class="ruby-keyword">end</span></pre>
420
- </div>
421
- </div>
422
-
423
-
424
- </div>
425
-
426
- <div id="method-i-eot" class="method-detail ">
427
- <div class="method-heading">
428
- <span class="method-name">eot</span><span
429
- class="method-args">()</span>
430
- <span class="method-click-advice">click to toggle source</span>
431
- </div>
432
-
433
- <div class="method-description">
434
-
435
-
436
- <div class="method-source-code" id="eot-source">
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>
439
- <span class="ruby-keyword">end</span></pre>
440
- </div>
441
- </div>
442
-
443
-
444
- </div>
445
-
446
- <div id="method-i-error" class="method-detail ">
447
- <div class="method-heading">
448
- <span class="method-name">error</span><span
449
- class="method-args">(str)</span>
450
- <span class="method-click-advice">click to toggle source</span>
451
- </div>
452
-
453
- <div class="method-description">
454
- <p>The default error handler.</p>
455
-
456
- <div class="method-source-code" id="error-source">
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>
461
- <span class="ruby-keyword">end</span></pre>
462
- </div>
463
- </div>
464
-
465
-
466
- </div>
467
-
468
- <div id="method-i-get_bytes" class="method-detail ">
469
- <div class="method-heading">
470
- <span class="method-name">get_bytes</span><span
471
- class="method-args">(n)</span>
472
- <span class="method-click-advice">click to toggle source</span>
473
- </div>
474
-
475
- <div class="method-description">
476
- <p>Return the next <code>n</code> bytes from @io as an array.</p>
477
-
478
- <div class="method-source-code" id="get_bytes-source">
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>
484
- <span class="ruby-keyword">end</span></pre>
485
- </div>
486
- </div>
487
-
488
-
489
- </div>
490
-
491
- <div id="method-i-getc" class="method-detail ">
492
- <div class="method-heading">
493
- <span class="method-name">getc</span><span
494
- class="method-args">()</span>
495
- <span class="method-click-advice">click to toggle source</span>
496
- </div>
497
-
498
- <div class="method-description">
499
- <p>This default getc implementation tries to read a single byte from io and returns it as an integer.</p>
500
-
501
- <div class="method-source-code" id="getc-source">
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>
504
- <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
505
- <span class="ruby-ivar">@io</span>.<span class="ruby-identifier">readbyte</span>
506
- <span class="ruby-keyword">end</span></pre>
507
- </div>
508
- </div>
509
-
510
-
511
- </div>
512
-
513
- <div id="method-i-handle_arbitrary" class="method-detail ">
514
- <div class="method-heading">
515
- <span class="method-name">handle_arbitrary</span><span
516
- class="method-args">(msg)</span>
517
- <span class="method-click-advice">click to toggle source</span>
518
- </div>
519
-
520
- <div class="method-description">
521
- <p>Copy message into raw data array, then call arbitrary().</p>
522
-
523
- <div class="method-source-code" id="handle_arbitrary-source">
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>)
528
- <span class="ruby-keyword">end</span></pre>
529
- </div>
530
- </div>
531
-
532
-
533
- </div>
534
-
535
- <div id="method-i-handle_sysex" class="method-detail ">
536
- <div class="method-heading">
537
- <span class="method-name">handle_sysex</span><span
538
- class="method-args">(msg)</span>
539
- <span class="method-click-advice">click to toggle source</span>
540
- </div>
541
-
542
- <div class="method-description">
543
- <p>Copy message into raw data array, then call sysex().</p>
544
-
545
- <div class="method-source-code" id="handle_sysex-source">
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>)
550
- <span class="ruby-keyword">end</span></pre>
551
- </div>
552
- </div>
553
-
554
-
555
- </div>
556
-
557
- <div id="method-i-header" class="method-detail ">
558
- <div class="method-heading">
559
- <span class="method-name">header</span><span
560
- class="method-args">(format, ntrks, division)</span>
561
- <span class="method-click-advice">click to toggle source</span>
562
- </div>
563
-
564
- <div class="method-description">
565
- <p><a href="../../MIDI.html"><code>MIDI</code></a> header.</p>
566
-
567
- <div class="method-source-code" id="header-source">
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>)
570
- <span class="ruby-keyword">end</span></pre>
571
- </div>
572
- </div>
573
-
574
-
575
- </div>
576
-
577
- <div id="method-i-key_signature" class="method-detail ">
578
- <div class="method-heading">
579
- <span class="method-name">key_signature</span><span
580
- class="method-args">(sharpflat, is_minor)</span>
581
- <span class="method-click-advice">click to toggle source</span>
582
- </div>
583
-
584
- <div class="method-description">
585
-
586
-
587
- <div class="method-source-code" id="key_signature-source">
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>)
590
- <span class="ruby-keyword">end</span></pre>
591
- </div>
592
- </div>
593
-
594
-
595
- </div>
596
-
597
- <div id="method-i-meta_event" class="method-detail ">
598
- <div class="method-heading">
599
- <span class="method-name">meta_event</span><span
600
- class="method-args">(type)</span>
601
- <span class="method-click-advice">click to toggle source</span>
602
- </div>
603
-
604
- <div class="method-description">
605
- <p>Handle a meta event.</p>
606
-
607
- <div class="method-source-code" id="meta_event-source">
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>
642
- <span class="ruby-keyword">end</span></pre>
643
- </div>
644
- </div>
645
-
646
-
647
- </div>
648
-
649
- <div id="method-i-meta_misc" class="method-detail ">
650
- <div class="method-heading">
651
- <span class="method-name">meta_misc</span><span
652
- class="method-args">(type, msg)</span>
653
- <span class="method-click-advice">click to toggle source</span>
654
- </div>
655
-
656
- <div class="method-description">
657
-
658
-
659
- <div class="method-source-code" id="meta_misc-source">
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>)
662
- <span class="ruby-keyword">end</span></pre>
663
- </div>
664
- </div>
665
-
666
-
667
- </div>
668
-
669
- <div id="method-i-msg" class="method-detail ">
670
- <div class="method-heading">
671
- <span class="method-name">msg</span><span
672
- class="method-args">()</span>
673
- <span class="method-click-advice">click to toggle source</span>
674
- </div>
675
-
676
- <div class="method-description">
677
- <p>Return a copy of the internal message buffer.</p>
678
-
679
- <div class="method-source-code" id="msg-source">
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>
683
- <span class="ruby-keyword">end</span></pre>
684
- </div>
685
- </div>
686
-
687
-
688
- </div>
689
-
690
- <div id="method-i-msg_add" class="method-detail ">
691
- <div class="method-heading">
692
- <span class="method-name">msg_add</span><span
693
- class="method-args">(c)</span>
694
- <span class="method-click-advice">click to toggle source</span>
695
- </div>
696
-
697
- <div class="method-description">
698
- <p>Add a byte to the current message buffer.</p>
699
-
700
- <div class="method-source-code" id="msg_add-source">
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>
704
- <span class="ruby-keyword">end</span></pre>
705
- </div>
706
- </div>
707
-
708
-
709
- </div>
710
-
711
- <div id="method-i-msg_init" class="method-detail ">
712
- <div class="method-heading">
713
- <span class="method-name">msg_init</span><span
714
- class="method-args">()</span>
715
- <span class="method-click-advice">click to toggle source</span>
716
- </div>
717
-
718
- <div class="method-description">
719
- <p>Initialize the internal message buffer.</p>
720
-
721
- <div class="method-source-code" id="msg_init-source">
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> = []
725
- <span class="ruby-keyword">end</span></pre>
726
- </div>
727
- </div>
728
-
729
-
730
- </div>
731
-
732
- <div id="method-i-msg_read" class="method-detail ">
733
- <div class="method-heading">
734
- <span class="method-name">msg_read</span><span
735
- class="method-args">(n_bytes)</span>
736
- <span class="method-click-advice">click to toggle source</span>
737
- </div>
738
-
739
- <div class="method-description">
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>
741
-
742
- <div class="method-source-code" id="msg_read-source">
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>]
748
- <span class="ruby-keyword">end</span></pre>
749
- </div>
750
- </div>
751
-
752
-
753
- </div>
754
-
755
- <div id="method-i-note_off" class="method-detail ">
756
- <div class="method-heading">
757
- <span class="method-name">note_off</span><span
758
- class="method-args">(chan, note, vel)</span>
759
- <span class="method-click-advice">click to toggle source</span>
760
- </div>
761
-
762
- <div class="method-description">
763
-
764
-
765
- <div class="method-source-code" id="note_off-source">
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>)
768
- <span class="ruby-keyword">end</span></pre>
769
- </div>
770
- </div>
771
-
772
-
773
- </div>
774
-
775
- <div id="method-i-note_on" class="method-detail ">
776
- <div class="method-heading">
777
- <span class="method-name">note_on</span><span
778
- class="method-args">(chan, note, vel)</span>
779
- <span class="method-click-advice">click to toggle source</span>
780
- </div>
781
-
782
- <div class="method-description">
783
-
784
-
785
- <div class="method-source-code" id="note_on-source">
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>)
788
- <span class="ruby-keyword">end</span></pre>
789
- </div>
790
- </div>
791
-
792
-
793
- </div>
794
-
795
- <div id="method-i-pitch_bend" class="method-detail ">
796
- <div class="method-heading">
797
- <span class="method-name">pitch_bend</span><span
798
- class="method-args">(chan, msb, lsb)</span>
799
- <span class="method-click-advice">click to toggle source</span>
800
- </div>
801
-
802
- <div class="method-description">
803
-
804
-
805
- <div class="method-source-code" id="pitch_bend-source">
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>)
808
- <span class="ruby-keyword">end</span></pre>
809
- </div>
810
- </div>
811
-
812
-
813
- </div>
814
-
815
- <div id="method-i-pressure" class="method-detail ">
816
- <div class="method-heading">
817
- <span class="method-name">pressure</span><span
818
- class="method-args">(chan, note, press)</span>
819
- <span class="method-click-advice">click to toggle source</span>
820
- </div>
821
-
822
- <div class="method-description">
823
-
824
-
825
- <div class="method-source-code" id="pressure-source">
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>)
828
- <span class="ruby-keyword">end</span></pre>
829
- </div>
830
- </div>
831
-
832
-
833
- </div>
834
-
835
- <div id="method-i-program" class="method-detail ">
836
- <div class="method-heading">
837
- <span class="method-name">program</span><span
838
- class="method-args">(chan, program)</span>
839
- <span class="method-click-advice">click to toggle source</span>
840
- </div>
841
-
842
- <div class="method-description">
843
-
844
-
845
- <div class="method-source-code" id="program-source">
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>)
848
- <span class="ruby-keyword">end</span></pre>
849
- </div>
850
- </div>
851
-
852
-
853
- </div>
854
-
855
- <div id="method-i-read16" class="method-detail ">
856
- <div class="method-heading">
857
- <span class="method-name">read16</span><span
858
- class="method-args">()</span>
859
- <span class="method-click-advice">click to toggle source</span>
860
- </div>
861
-
862
- <div class="method-description">
863
- <p>Read and return a sixteen bit value.</p>
864
-
865
- <div class="method-source-code" id="read16-source">
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>
871
- <span class="ruby-keyword">end</span></pre>
872
- </div>
873
- </div>
874
-
875
-
876
- </div>
877
-
878
- <div id="method-i-read32" class="method-detail ">
879
- <div class="method-heading">
880
- <span class="method-name">read32</span><span
881
- class="method-args">()</span>
882
- <span class="method-click-advice">click to toggle source</span>
883
- </div>
884
-
885
- <div class="method-description">
886
- <p>Read and return a 32-bit value.</p>
887
-
888
- <div class="method-source-code" id="read32-source">
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>
895
- <span class="ruby-keyword">end</span></pre>
896
- </div>
897
- </div>
898
-
899
-
900
- </div>
901
-
902
- <div id="method-i-read_from" class="method-detail ">
903
- <div class="method-heading">
904
- <span class="method-name">read_from</span><span
905
- class="method-args">(io)</span>
906
- <span class="method-click-advice">click to toggle source</span>
907
- </div>
908
-
909
- <div class="method-description">
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>
911
-
912
- <div class="method-source-code" id="read_from-source">
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>
917
-
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>
920
-
921
- <span class="ruby-identifier">ntrks</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">read_track</span> }
922
- <span class="ruby-keyword">end</span></pre>
923
- </div>
924
- </div>
925
-
926
-
927
- </div>
928
-
929
- <div id="method-i-read_header" class="method-detail ">
930
- <div class="method-heading">
931
- <span class="method-name">read_header</span><span
932
- class="method-args">()</span>
933
- <span class="method-click-advice">click to toggle source</span>
934
- </div>
935
-
936
- <div class="method-description">
937
- <p>Read a header chunk.</p>
938
-
939
- <div class="method-source-code" id="read_header-source">
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>
944
-
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>
949
-
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>)
951
-
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>
957
-
958
- <span class="ruby-identifier">ntrks</span>
959
- <span class="ruby-keyword">end</span></pre>
960
- </div>
961
- </div>
962
-
963
-
964
- </div>
965
-
966
- <div id="method-i-read_mt_header_string" class="method-detail ">
967
- <div class="method-heading">
968
- <span class="method-name">read_mt_header_string</span><span
969
- class="method-args">(bytes, skip)</span>
970
- <span class="method-click-advice">click to toggle source</span>
971
- </div>
972
-
973
- <div class="method-description">
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>
975
-
976
- <div class="method-source-code" id="read_mt_header_string-source">
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>)
1000
- <span class="ruby-keyword">end</span>
1001
- <span class="ruby-keyword">end</span>
1002
- <span class="ruby-keyword">end</span></pre>
1003
- </div>
1004
- </div>
1005
-
1006
-
1007
- </div>
1008
-
1009
- <div id="method-i-read_track" class="method-detail ">
1010
- <div class="method-heading">
1011
- <span class="method-name">read_track</span><span
1012
- class="method-args">()</span>
1013
- <span class="method-click-advice">click to toggle source</span>
1014
- </div>
1015
-
1016
- <div class="method-description">
1017
- <p>Read a track chunk.</p>
1018
-
1019
- <div class="method-source-code" id="read_track-source">
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>
1026
-
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>)
1096
- <span class="ruby-keyword">end</span>
1097
- <span class="ruby-keyword">end</span>
1098
- <span class="ruby-identifier">end_track</span>
1099
- <span class="ruby-keyword">end</span></pre>
1100
- </div>
1101
- </div>
1102
-
1103
-
1104
- </div>
1105
-
1106
- <div id="method-i-read_var_len" class="method-detail ">
1107
- <div class="method-heading">
1108
- <span class="method-name">read_var_len</span><span
1109
- class="method-args">()</span>
1110
- <span class="method-click-advice">click to toggle source</span>
1111
- </div>
1112
-
1113
- <div class="method-description">
1114
- <p>Read a varlen value.</p>
1115
-
1116
- <div class="method-source-code" id="read_var_len-source">
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>
1130
- <span class="ruby-keyword">end</span>
1131
- <span class="ruby-keyword">end</span>
1132
- <span class="ruby-identifier">val</span>
1133
- <span class="ruby-keyword">end</span></pre>
1134
- </div>
1135
- </div>
1136
-
1137
-
1138
- </div>
1139
-
1140
- <div id="method-i-sequence_number" class="method-detail ">
1141
- <div class="method-heading">
1142
- <span class="method-name">sequence_number</span><span
1143
- class="method-args">(num)</span>
1144
- <span class="method-click-advice">click to toggle source</span>
1145
- </div>
1146
-
1147
- <div class="method-description">
1148
-
1149
-
1150
- <div class="method-source-code" id="sequence_number-source">
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>)
1153
- <span class="ruby-keyword">end</span></pre>
1154
- </div>
1155
- </div>
1156
-
1157
-
1158
- </div>
1159
-
1160
- <div id="method-i-sequencer_specific" class="method-detail ">
1161
- <div class="method-heading">
1162
- <span class="method-name">sequencer_specific</span><span
1163
- class="method-args">(type, msg)</span>
1164
- <span class="method-click-advice">click to toggle source</span>
1165
- </div>
1166
-
1167
- <div class="method-description">
1168
-
1169
-
1170
- <div class="method-source-code" id="sequencer_specific-source">
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>)
1173
- <span class="ruby-keyword">end</span></pre>
1174
- </div>
1175
- </div>
1176
-
1177
-
1178
- </div>
1179
-
1180
- <div id="method-i-smpte" class="method-detail ">
1181
- <div class="method-heading">
1182
- <span class="method-name">smpte</span><span
1183
- class="method-args">(hour, min, sec, frame, fract)</span>
1184
- <span class="method-click-advice">click to toggle source</span>
1185
- </div>
1186
-
1187
- <div class="method-description">
1188
-
1189
-
1190
- <div class="method-source-code" id="smpte-source">
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>)
1193
- <span class="ruby-keyword">end</span></pre>
1194
- </div>
1195
- </div>
1196
-
1197
-
1198
- </div>
1199
-
1200
- <div id="method-i-start_track" class="method-detail ">
1201
- <div class="method-heading">
1202
- <span class="method-name">start_track</span><span
1203
- class="method-args">(bytes_to_be_read)</span>
1204
- <span class="method-click-advice">click to toggle source</span>
1205
- </div>
1206
-
1207
- <div class="method-description">
1208
-
1209
-
1210
- <div class="method-source-code" id="start_track-source">
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>)
1213
- <span class="ruby-keyword">end</span></pre>
1214
- </div>
1215
- </div>
1216
-
1217
-
1218
- </div>
1219
-
1220
- <div id="method-i-sysex" class="method-detail ">
1221
- <div class="method-heading">
1222
- <span class="method-name">sysex</span><span
1223
- class="method-args">(msg)</span>
1224
- <span class="method-click-advice">click to toggle source</span>
1225
- </div>
1226
-
1227
- <div class="method-description">
1228
-
1229
-
1230
- <div class="method-source-code" id="sysex-source">
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>)
1233
- <span class="ruby-keyword">end</span></pre>
1234
- </div>
1235
- </div>
1236
-
1237
-
1238
- </div>
1239
-
1240
- <div id="method-i-tempo" class="method-detail ">
1241
- <div class="method-heading">
1242
- <span class="method-name">tempo</span><span
1243
- class="method-args">(microsecs)</span>
1244
- <span class="method-click-advice">click to toggle source</span>
1245
- </div>
1246
-
1247
- <div class="method-description">
1248
-
1249
-
1250
- <div class="method-source-code" id="tempo-source">
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>)
1253
- <span class="ruby-keyword">end</span></pre>
1254
- </div>
1255
- </div>
1256
-
1257
-
1258
- </div>
1259
-
1260
- <div id="method-i-text" class="method-detail ">
1261
- <div class="method-heading">
1262
- <span class="method-name">text</span><span
1263
- class="method-args">(type, msg)</span>
1264
- <span class="method-click-advice">click to toggle source</span>
1265
- </div>
1266
-
1267
- <div class="method-description">
1268
-
1269
-
1270
- <div class="method-source-code" id="text-source">
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>)
1273
- <span class="ruby-keyword">end</span></pre>
1274
- </div>
1275
- </div>
1276
-
1277
-
1278
- </div>
1279
-
1280
- <div id="method-i-time_signature" class="method-detail ">
1281
- <div class="method-heading">
1282
- <span class="method-name">time_signature</span><span
1283
- class="method-args">(numer, denom, clocks, qnotes)</span>
1284
- <span class="method-click-advice">click to toggle source</span>
1285
- </div>
1286
-
1287
- <div class="method-description">
1288
-
1289
-
1290
- <div class="method-source-code" id="time_signature-source">
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>)
1293
- <span class="ruby-keyword">end</span></pre>
1294
- </div>
1295
- </div>
1296
-
1297
-
1298
- </div>
1299
-
1300
- <div id="method-i-write16" class="method-detail ">
1301
- <div class="method-heading">
1302
- <span class="method-name">write16</span><span
1303
- class="method-args">(val)</span>
1304
- <span class="method-click-advice">click to toggle source</span>
1305
- </div>
1306
-
1307
- <div class="method-description">
1308
- <p>Write a sixteen-bit value.</p>
1309
-
1310
- <div class="method-source-code" id="write16-source">
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>)
1316
- <span class="ruby-keyword">end</span></pre>
1317
- </div>
1318
- </div>
1319
-
1320
-
1321
- </div>
1322
-
1323
- <div id="method-i-write32" class="method-detail ">
1324
- <div class="method-heading">
1325
- <span class="method-name">write32</span><span
1326
- class="method-args">(val)</span>
1327
- <span class="method-click-advice">click to toggle source</span>
1328
- </div>
1329
-
1330
- <div class="method-description">
1331
- <p>Write a 32-bit value.</p>
1332
-
1333
- <div class="method-source-code" id="write32-source">
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>)
1341
- <span class="ruby-keyword">end</span></pre>
1342
- </div>
1343
- </div>
1344
-
1345
-
1346
- </div>
1347
-
1348
- <div id="method-i-write_var_len" class="method-detail ">
1349
- <div class="method-heading">
1350
- <span class="method-name">write_var_len</span><span
1351
- class="method-args">(val)</span>
1352
- <span class="method-click-advice">click to toggle source</span>
1353
- </div>
1354
-
1355
- <div class="method-description">
1356
- <p>Write a variable length value.</p>
1357
-
1358
- <div class="method-source-code" id="write_var_len-source">
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>
1365
-
1366
- <span class="ruby-identifier">buf</span> = []
1367
-
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>
1372
-
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>) }
1374
- <span class="ruby-keyword">end</span></pre>
1375
- </div>
1376
- </div>
1377
-
1378
-
1379
- </div>
1380
-
1381
- </section>
1382
-
1383
- </section>
1384
- </main>
1385
-
1386
-
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>.
1391
- </footer>
1392
-