midilib 2.0.4 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ChangeLog +2 -1
- data/Credits +44 -2
- data/README.rdoc +13 -9
- data/Rakefile +36 -53
- data/TODO.rdoc +13 -2
- data/examples/from_scratch.rb +4 -6
- data/examples/measures_mbt.rb +11 -11
- data/examples/print_program_changes.rb +11 -11
- data/examples/reader2text.rb +191 -191
- data/examples/seq2text.rb +18 -18
- data/examples/split.rb +21 -20
- data/examples/strings.rb +15 -15
- data/examples/transpose.rb +41 -42
- data/html/MIDI/ActiveSense.html +89 -213
- data/html/MIDI/ChannelEvent.html +95 -224
- data/html/MIDI/ChannelPressure.html +103 -241
- data/html/MIDI/Clock.html +89 -213
- data/html/MIDI/Continue.html +89 -213
- data/html/MIDI/Controller.html +105 -246
- data/html/MIDI/Event.html +134 -358
- data/html/MIDI/IO/MIDIFile.html +544 -1148
- data/html/MIDI/IO/SeqReader.html +273 -577
- data/html/MIDI/IO/SeqWriter.html +233 -439
- data/html/MIDI/IO.html +48 -164
- data/html/MIDI/KeySig.html +148 -291
- data/html/MIDI/Marker.html +73 -192
- data/html/MIDI/Measure.html +104 -267
- data/html/MIDI/Measures.html +106 -259
- data/html/MIDI/MetaEvent.html +171 -352
- data/html/MIDI/NoteEvent.html +114 -276
- data/html/MIDI/NoteOff.html +95 -223
- data/html/MIDI/NoteOn.html +95 -223
- data/html/MIDI/PitchBend.html +104 -242
- data/html/MIDI/PolyPressure.html +102 -246
- data/html/MIDI/ProgramChange.html +103 -241
- data/html/MIDI/Realtime.html +96 -230
- data/html/MIDI/Sequence.html +256 -576
- data/html/MIDI/SongPointer.html +104 -242
- data/html/MIDI/SongSelect.html +103 -241
- data/html/MIDI/Start.html +89 -213
- data/html/MIDI/Stop.html +89 -213
- data/html/MIDI/SystemCommon.html +73 -192
- data/html/MIDI/SystemExclusive.html +106 -244
- data/html/MIDI/SystemReset.html +89 -213
- data/html/MIDI/Tempo.html +127 -309
- data/html/MIDI/TimeSig.html +119 -300
- data/html/MIDI/Track.html +214 -494
- data/html/MIDI/TuneRequest.html +96 -230
- data/html/MIDI/Utils.html +91 -233
- data/html/MIDI.html +142 -526
- data/html/Object.html +197 -0
- data/html/README_rdoc.html +280 -486
- data/html/TODO_rdoc.html +68 -145
- data/html/created.rid +15 -14
- data/html/css/fonts.css +167 -0
- data/html/css/rdoc.css +639 -0
- data/html/fonts/Lato-Light.ttf +0 -0
- data/html/fonts/Lato-LightItalic.ttf +0 -0
- data/html/fonts/Lato-Regular.ttf +0 -0
- data/html/fonts/Lato-RegularItalic.ttf +0 -0
- data/html/fonts/SourceCodePro-Bold.ttf +0 -0
- data/html/fonts/SourceCodePro-Regular.ttf +0 -0
- data/html/images/add.png +0 -0
- data/html/images/arrow_up.png +0 -0
- data/html/images/delete.png +0 -0
- data/html/images/tag_blue.png +0 -0
- data/html/index.html +230 -446
- data/html/js/darkfish.js +22 -91
- data/html/js/navigation.js +4 -41
- data/html/js/navigation.js.gz +0 -0
- data/html/js/search.js +41 -25
- data/html/js/search_index.js +1 -1
- data/html/js/search_index.js.gz +0 -0
- data/html/js/searcher.js +9 -8
- data/html/js/searcher.js.gz +0 -0
- data/html/table_of_contents.html +1111 -505
- data/install.rb +53 -34
- data/lib/midilib/consts.rb +406 -408
- data/lib/midilib/event.rb +335 -306
- data/lib/midilib/info.rb +5 -7
- data/lib/midilib/io/midifile.rb +424 -452
- data/lib/midilib/io/seqreader.rb +200 -192
- data/lib/midilib/io/seqwriter.rb +151 -147
- data/lib/midilib/measure.rb +78 -80
- data/lib/midilib/mergesort.rb +39 -0
- data/lib/midilib/sequence.rb +93 -87
- data/lib/midilib/track.rb +71 -118
- data/lib/midilib/utils.rb +17 -20
- data/lib/midilib.rb +5 -5
- data/test/event_equality.rb +50 -52
- data/test/test_event.rb +120 -124
- data/test/test_io.rb +118 -38
- data/test/test_mergesort.rb +37 -0
- data/test/test_midifile.rb +6 -19
- data/test/test_sequence.rb +62 -61
- data/test/test_track.rb +126 -155
- data/test/test_varlen.rb +23 -27
- metadata +67 -62
- data/html/IO.html +0 -259
- data/html/MIDI/MIDI/MIDI/Array.html +0 -353
- data/html/MIDI/MIDI/MIDI.html +0 -204
- data/html/MIDI/MIDI.html +0 -204
- data/html/js/jquery.js +0 -18
- data/html/rdoc.css +0 -543
data/html/MIDI/IO/MIDIFile.html
CHANGED
@@ -2,334 +2,161 @@
|
|
2
2
|
|
3
3
|
<html>
|
4
4
|
<head>
|
5
|
-
<meta
|
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
|
16
|
-
<script
|
17
|
-
<script
|
18
|
-
<script
|
19
|
-
<script
|
20
|
-
|
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
|
-
<
|
24
|
-
<
|
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
|
-
</
|
31
|
-
</
|
32
|
-
|
36
|
+
</div>
|
37
|
+
</div>
|
33
38
|
|
34
|
-
|
39
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
35
40
|
<form action="#" method="get" accept-charset="utf-8">
|
36
|
-
<
|
37
|
-
<input
|
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
|
-
</
|
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
|
-
</
|
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
|
-
|
180
|
-
<
|
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
|
-
<
|
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
|
-
</
|
136
|
+
</section>
|
291
137
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
138
|
<section id="5Buntitled-5D" class="documentation-section">
|
296
|
-
|
297
139
|
|
298
|
-
|
299
140
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
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
|
-
|
329
|
-
|
330
|
-
|
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
|
463
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
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
|
471
|
-
|
267
|
+
</div>
|
472
268
|
</div>
|
473
269
|
|
474
|
-
|
475
270
|
|
476
|
-
|
477
|
-
</div><!-- new-method -->
|
271
|
+
</div>
|
478
272
|
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
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
|
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
|
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
|
532
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">bad_byte</span>(<span class="ruby-identifier">c</span>)
|
533
|
-
|
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">'unexpected byte: 0x%02x'</span>, <span class="ruby-identifier">c</span>))
|
534
314
|
<span class="ruby-keyword">end</span></pre>
|
535
|
-
</div
|
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
|
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
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
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"><<</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"><<</span> <span class="ruby-identifier">c1</span>
|
337
|
+
<span class="ruby-ivar">@raw_data</span> <span class="ruby-operator"><<</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">&</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">&</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">"illegal chan message 0x#{format('%02x', (status & 0xf0))}\n"</span>)
|
358
|
+
<span class="ruby-keyword">end</span>
|
588
359
|
<span class="ruby-keyword">end</span></pre>
|
589
|
-
</div
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
732
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">str</span>)
|
733
|
-
|
734
|
-
|
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">"#{self.class.name} error at byte #{loc} (0x#{'%02x' % loc}): #{str}"</span>
|
735
461
|
<span class="ruby-keyword">end</span></pre>
|
736
|
-
</div
|
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
|
763
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">n</span>)
|
764
|
-
|
765
|
-
|
766
|
-
|
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"><<</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
|
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
|
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
|
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
|
827
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">handle_arbitrary</span>(<span class="ruby-identifier">msg</span>)
|
828
|
-
|
829
|
-
|
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
|
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
|
858
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>)
|
859
|
-
|
860
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
947
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">meta_event</span>(<span class="ruby-identifier">type</span>)
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
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"><<</span> <span class="ruby-constant">META_EVENT</span>
|
615
|
+
<span class="ruby-ivar">@raw_data</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">type</span>
|
616
|
+
<span class="ruby-ivar">@raw_data</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@raw_var_num_data</span>
|
617
|
+
<span class="ruby-ivar">@raw_data</span> <span class="ruby-operator"><<</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"><<</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"><<</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"><<</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
|
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
|
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
|
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
|
1037
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">msg</span>
|
1038
|
-
|
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
|
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
|
1067
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">msg_add</span>(<span class="ruby-identifier">c</span>)
|
1068
|
-
|
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"><<</span> <span class="ruby-identifier">c</span>
|
1069
704
|
<span class="ruby-keyword">end</span></pre>
|
1070
|
-
</div
|
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
|
1097
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">msg_init</span>
|
1098
|
-
|
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
|
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
|
1128
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">n_bytes</span>)
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
1305
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read16</span>
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
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"><<</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">&</span> <span class="ruby-value">0x7fff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&</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
|
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
|
1337
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read32</span>
|
1338
|
-
|
1339
|
-
<span class="ruby-identifier">getc</span>
|
1340
|
-
|
1341
|
-
|
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"><<</span> <span class="ruby-value">24</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator"><<</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator"><<</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">&</span> <span class="ruby-value">0x7fffffff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&</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
|
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
|
1371
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_from</span>(<span class="ruby-identifier">io</span>)
|
1372
|
-
|
1373
|
-
|
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">'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>
|
916
|
+
<span class="ruby-ivar">@io</span> = <span class="ruby-identifier">io</span>
|
1374
917
|
|
1375
|
-
|
1376
|
-
|
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">'No tracks!'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">ntrks</span> <span class="ruby-operator"><=</span> <span class="ruby-value">0</span>
|
1377
920
|
|
1378
|
-
|
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
|
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
|
1407
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_header</span>
|
1408
|
-
|
1409
|
-
|
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"># "MThd"</span>
|
1410
944
|
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
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
|
-
|
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
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
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">></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
|
-
|
958
|
+
<span class="ruby-identifier">ntrks</span>
|
1425
959
|
<span class="ruby-keyword">end</span></pre>
|
1426
|
-
</div
|
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
|
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
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1469
|
-
<span class="ruby-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1476
|
-
|
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">"header string #{bytes.collect{|b| b.chr}.join} not found"</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">"unexpected EOF while trying to read header string #{s}"</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><</span> <span class="ruby-value">4</span>
|
985
|
+
|
986
|
+
<span class="ruby-comment"># See if we found the bytes we'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">"header string #{bytes.collect { |b| b.chr }.join} not found"</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
|
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
|
1510
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_track</span>
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
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
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1553
|
-
|
1554
|
-
|
1555
|
-
|
1556
|
-
|
1557
|
-
|
1558
|
-
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1568
|
-
|
1569
|
-
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
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">></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">"didn't find expected continuation of a sysex"</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">sysex_continue</span> <span class="ruby-operator">&&</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">&</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">'unexpected running status'</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">>></span> <span class="ruby-value">4</span>) <span class="ruby-operator">&</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">&</span> <span class="ruby-value">0x7f</span>)
|
1058
|
+
|
1059
|
+
<span class="ruby-comment"># The "& 0x7f" here may seem unnecessary, but I've seen</span>
|
1060
|
+
<span class="ruby-comment"># "bad" 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">></span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> (<span class="ruby-identifier">getc</span> <span class="ruby-operator">&</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
|
-
|
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
|
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
|
1618
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_var_len</span>
|
1619
|
-
|
1620
|
-
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1624
|
-
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1629
|
-
|
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"><<</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">&</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">nonzero?</span>
|
1124
|
+
<span class="ruby-identifier">val</span> <span class="ruby-operator">&=</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"><<</span> <span class="ruby-identifier">c</span>
|
1128
|
+
<span class="ruby-identifier">val</span> = (<span class="ruby-identifier">val</span> <span class="ruby-operator"><<</span> <span class="ruby-value">7</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">&</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">&</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span>
|
1631
1130
|
<span class="ruby-keyword">end</span>
|
1632
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
1893
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">write16</span>(<span class="ruby-identifier">val</span>)
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
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"><</span> <span class="ruby-value">0</span>
|
1314
|
+
<span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">>></span> <span class="ruby-value">8</span>) <span class="ruby-operator">&</span> <span class="ruby-value">0xff</span>)
|
1315
|
+
<span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&</span> <span class="ruby-value">0xff</span>)
|
1897
1316
|
<span class="ruby-keyword">end</span></pre>
|
1898
|
-
</div
|
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
|
1925
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">write32</span>(<span class="ruby-identifier">val</span>)
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
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"><</span> <span class="ruby-value">0</span>
|
1337
|
+
<span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">>></span> <span class="ruby-value">24</span>) <span class="ruby-operator">&</span> <span class="ruby-value">0xff</span>)
|
1338
|
+
<span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">>></span> <span class="ruby-value">16</span>) <span class="ruby-operator">&</span> <span class="ruby-value">0xff</span>)
|
1339
|
+
<span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">>></span> <span class="ruby-value">8</span>) <span class="ruby-operator">&</span> <span class="ruby-value">0xff</span>)
|
1340
|
+
<span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&</span> <span class="ruby-value">0xff</span>)
|
1931
1341
|
<span class="ruby-keyword">end</span></pre>
|
1932
|
-
</div
|
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
|
1959
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">write_var_len</span>(<span class="ruby-identifier">val</span>)
|
1960
|
-
|
1961
|
-
|
1962
|
-
|
1963
|
-
|
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
|
-
|
1366
|
+
<span class="ruby-identifier">buf</span> = []
|
1966
1367
|
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1368
|
+
<span class="ruby-identifier">buf</span> <span class="ruby-operator"><<</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&</span> <span class="ruby-value">0x7f</span>)
|
1369
|
+
<span class="ruby-keyword">while</span> (<span class="ruby-identifier">value</span> <span class="ruby-operator">>>=</span> <span class="ruby-value">7</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
1370
|
+
<span class="ruby-identifier">buf</span> <span class="ruby-operator"><<</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&</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
|
-
|
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
|
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
|
-
</
|
1383
|
+
</section>
|
1384
|
+
</main>
|
1989
1385
|
|
1990
1386
|
|
1991
|
-
<footer id="validator-badges">
|
1992
|
-
<p><a href="
|
1993
|
-
<p>Generated by <a href="https://github.
|
1994
|
-
<p>
|
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
|
|