midilib 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.rdoc +9 -4
- data/Rakefile +2 -6
- data/examples/from_scratch.rb +3 -5
- data/examples/measures_mbt.rb +4 -4
- data/examples/print_program_changes.rb +9 -9
- data/examples/reader2text.rb +188 -188
- data/examples/seq2text.rb +17 -17
- data/examples/split.rb +19 -19
- data/examples/strings.rb +14 -14
- data/examples/transpose.rb +31 -31
- data/html/IO.html +65 -169
- data/html/MIDI.html +138 -256
- data/html/MIDI/ActiveSense.html +89 -178
- data/html/MIDI/ChannelEvent.html +95 -183
- data/html/MIDI/ChannelPressure.html +105 -190
- data/html/MIDI/Clock.html +89 -178
- data/html/MIDI/Continue.html +89 -178
- data/html/MIDI/Controller.html +107 -192
- data/html/MIDI/Event.html +138 -222
- data/html/MIDI/IO.html +45 -157
- data/html/MIDI/IO/MIDIFile.html +596 -568
- data/html/MIDI/IO/SeqReader.html +272 -314
- data/html/MIDI/IO/SeqWriter.html +229 -305
- data/html/MIDI/KeySig.html +129 -211
- data/html/MIDI/MIDI.html +45 -154
- data/html/MIDI/MIDI/MIDI.html +45 -154
- data/html/MIDI/MIDI/MIDI/Array.html +87 -185
- data/html/MIDI/Marker.html +71 -170
- data/html/MIDI/Measure.html +95 -190
- data/html/MIDI/Measures.html +103 -193
- data/html/MIDI/MetaEvent.html +180 -253
- data/html/MIDI/NoteEvent.html +118 -204
- data/html/MIDI/NoteOff.html +95 -183
- data/html/MIDI/NoteOn.html +95 -183
- data/html/MIDI/PitchBend.html +106 -191
- data/html/MIDI/PolyPressure.html +106 -189
- data/html/MIDI/ProgramChange.html +105 -190
- data/html/MIDI/Realtime.html +98 -184
- data/html/MIDI/Sequence.html +246 -311
- data/html/MIDI/SongPointer.html +106 -191
- data/html/MIDI/SongSelect.html +105 -190
- data/html/MIDI/Start.html +89 -178
- data/html/MIDI/Stop.html +89 -178
- data/html/MIDI/SystemCommon.html +71 -170
- data/html/MIDI/SystemExclusive.html +108 -193
- data/html/MIDI/SystemReset.html +89 -178
- data/html/MIDI/Tempo.html +135 -213
- data/html/MIDI/TimeSig.html +135 -214
- data/html/MIDI/Track.html +217 -291
- data/html/MIDI/TuneRequest.html +98 -184
- data/html/MIDI/Utils.html +89 -189
- data/html/README_rdoc.html +237 -257
- data/html/TODO_rdoc.html +64 -139
- data/html/created.rid +14 -14
- data/html/css/fonts.css +167 -0
- data/html/{rdoc.css → css/rdoc.css} +265 -218
- 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 +187 -169
- data/html/js/darkfish.js +41 -33
- data/html/js/jquery.js +4 -18
- data/html/js/navigation.js.gz +0 -0
- data/html/js/search.js +20 -5
- data/html/js/search_index.js +1 -1
- data/html/js/search_index.js.gz +0 -0
- data/html/js/searcher.js.gz +0 -0
- data/html/table_of_contents.html +1111 -498
- data/install.rb +43 -32
- data/lib/midilib/consts.rb +407 -407
- data/lib/midilib/event.rb +295 -294
- data/lib/midilib/info.rb +5 -5
- data/lib/midilib/io/midifile.rb +266 -267
- data/lib/midilib/io/seqreader.rb +106 -106
- data/lib/midilib/io/seqwriter.rb +59 -60
- data/lib/midilib/measure.rb +69 -69
- data/lib/midilib/sequence.rb +68 -70
- data/lib/midilib/track.rb +96 -102
- data/lib/midilib/utils.rb +15 -15
- data/test/event_equality.rb +50 -50
- data/test/test_event.rb +120 -122
- data/test/test_io.rb +35 -48
- data/test/test_sequence.rb +60 -60
- data/test/test_track.rb +154 -154
- data/test/test_varlen.rb +23 -25
- metadata +65 -57
data/html/MIDI/IO/SeqReader.html
CHANGED
@@ -2,231 +2,124 @@
|
|
2
2
|
|
3
3
|
<html>
|
4
4
|
<head>
|
5
|
-
<meta
|
5
|
+
<meta charset="UTF-8">
|
6
6
|
|
7
7
|
<title>class MIDI::IO::SeqReader - 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 = "../../";
|
13
11
|
</script>
|
14
12
|
|
15
|
-
<script
|
16
|
-
<script
|
17
|
-
|
18
|
-
<
|
19
|
-
<
|
20
|
-
|
13
|
+
<script src="../../js/jquery.js"></script>
|
14
|
+
<script src="../../js/darkfish.js"></script>
|
15
|
+
|
16
|
+
<link href="../../css/fonts.css" rel="stylesheet">
|
17
|
+
<link href="../../css/rdoc.css" rel="stylesheet">
|
18
|
+
|
21
19
|
|
22
20
|
|
23
|
-
<body id="top" class="class">
|
24
|
-
<nav
|
25
|
-
<
|
26
|
-
|
27
|
-
|
21
|
+
<body id="top" role="document" class="class">
|
22
|
+
<nav role="navigation">
|
23
|
+
<div id="project-navigation">
|
24
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
25
|
+
<h2>
|
26
|
+
<a href="../../index.html" rel="home">Home</a>
|
27
|
+
</h2>
|
28
|
+
|
29
|
+
<div id="table-of-contents-navigation">
|
30
|
+
<a href="../../table_of_contents.html#pages">Pages</a>
|
28
31
|
<a href="../../table_of_contents.html#classes">Classes</a>
|
29
32
|
<a href="../../table_of_contents.html#methods">Methods</a>
|
30
|
-
</
|
31
|
-
</
|
32
|
-
|
33
|
+
</div>
|
34
|
+
</div>
|
33
35
|
|
34
|
-
|
36
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
35
37
|
<form action="#" method="get" accept-charset="utf-8">
|
36
|
-
<
|
37
|
-
<input
|
38
|
+
<div id="search-field-wrapper">
|
39
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
40
|
+
aria-autocomplete="list" aria-controls="search-results"
|
41
|
+
type="text" name="search" placeholder="Search" spellcheck="false"
|
38
42
|
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>
|
44
|
-
|
43
|
+
</div>
|
45
44
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
</ul>
|
52
|
-
</nav>
|
45
|
+
<ul id="search-results" aria-label="Search Results"
|
46
|
+
aria-busy="false" aria-expanded="false"
|
47
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
48
|
+
</form>
|
49
|
+
</div>
|
53
50
|
|
54
|
-
|
55
51
|
</div>
|
56
52
|
|
53
|
+
|
54
|
+
|
57
55
|
<div id="class-metadata">
|
58
56
|
|
59
|
-
<
|
60
|
-
<h3
|
57
|
+
<div id="parent-class-section" class="nav-section">
|
58
|
+
<h3>Parent</h3>
|
59
|
+
|
61
60
|
|
62
61
|
<p class="link"><a href="MIDIFile.html">MIDI::IO::MIDIFile</a>
|
63
62
|
|
64
|
-
</
|
63
|
+
</div>
|
65
64
|
|
66
65
|
|
66
|
+
|
67
67
|
<!-- Method Quickref -->
|
68
|
-
<
|
69
|
-
<h3
|
68
|
+
<div id="method-list-section" class="nav-section">
|
69
|
+
<h3>Methods</h3>
|
70
70
|
|
71
|
-
<ul class="link-list">
|
71
|
+
<ul class="link-list" role="directory">
|
72
72
|
|
73
|
-
<li><a href="#method-c-new">::new</a>
|
73
|
+
<li class="calls-super" ><a href="#method-c-new">::new</a>
|
74
74
|
|
75
|
-
<li><a href="#method-i-chan_pressure">#chan_pressure</a>
|
75
|
+
<li ><a href="#method-i-chan_pressure">#chan_pressure</a>
|
76
76
|
|
77
|
-
<li><a href="#method-i-controller">#controller</a>
|
77
|
+
<li ><a href="#method-i-controller">#controller</a>
|
78
78
|
|
79
|
-
<li><a href="#method-i-end_track">#end_track</a>
|
79
|
+
<li ><a href="#method-i-end_track">#end_track</a>
|
80
80
|
|
81
|
-
<li><a href="#method-i-header">#header</a>
|
81
|
+
<li ><a href="#method-i-header">#header</a>
|
82
82
|
|
83
|
-
<li><a href="#method-i-key_signature">#key_signature</a>
|
83
|
+
<li ><a href="#method-i-key_signature">#key_signature</a>
|
84
84
|
|
85
|
-
<li><a href="#method-i-make_note_off">#make_note_off</a>
|
85
|
+
<li ><a href="#method-i-make_note_off">#make_note_off</a>
|
86
86
|
|
87
|
-
<li><a href="#method-i-meta_misc">#meta_misc</a>
|
87
|
+
<li ><a href="#method-i-meta_misc">#meta_misc</a>
|
88
88
|
|
89
|
-
<li><a href="#method-i-note_off">#note_off</a>
|
89
|
+
<li ><a href="#method-i-note_off">#note_off</a>
|
90
90
|
|
91
|
-
<li><a href="#method-i-note_on">#note_on</a>
|
91
|
+
<li ><a href="#method-i-note_on">#note_on</a>
|
92
92
|
|
93
|
-
<li><a href="#method-i-pitch_bend">#pitch_bend</a>
|
93
|
+
<li ><a href="#method-i-pitch_bend">#pitch_bend</a>
|
94
94
|
|
95
|
-
<li><a href="#method-i-pressure">#pressure</a>
|
95
|
+
<li ><a href="#method-i-pressure">#pressure</a>
|
96
96
|
|
97
|
-
<li><a href="#method-i-program">#program</a>
|
97
|
+
<li ><a href="#method-i-program">#program</a>
|
98
98
|
|
99
|
-
<li><a href="#method-i-start_track">#start_track</a>
|
99
|
+
<li ><a href="#method-i-start_track">#start_track</a>
|
100
100
|
|
101
|
-
<li><a href="#method-i-sysex">#sysex</a>
|
101
|
+
<li ><a href="#method-i-sysex">#sysex</a>
|
102
102
|
|
103
|
-
<li><a href="#method-i-tempo">#tempo</a>
|
103
|
+
<li ><a href="#method-i-tempo">#tempo</a>
|
104
104
|
|
105
|
-
<li><a href="#method-i-text">#text</a>
|
105
|
+
<li ><a href="#method-i-text">#text</a>
|
106
106
|
|
107
|
-
<li><a href="#method-i-time_signature">#time_signature</a>
|
107
|
+
<li ><a href="#method-i-time_signature">#time_signature</a>
|
108
108
|
|
109
|
-
<li><a href="#method-i-track_uses_channel">#track_uses_channel</a>
|
109
|
+
<li ><a href="#method-i-track_uses_channel">#track_uses_channel</a>
|
110
110
|
|
111
111
|
</ul>
|
112
|
-
</
|
112
|
+
</div>
|
113
113
|
|
114
114
|
</div>
|
115
|
-
|
116
|
-
<div id="project-metadata">
|
117
|
-
<nav id="fileindex-section" class="section project-section">
|
118
|
-
<h3 class="section-header">Pages</h3>
|
119
|
-
|
120
|
-
<ul>
|
121
|
-
|
122
|
-
<li class="file"><a href="../../README_rdoc.html">README</a>
|
123
|
-
|
124
|
-
<li class="file"><a href="../../TODO_rdoc.html">TODO</a>
|
125
|
-
|
126
|
-
</ul>
|
127
115
|
</nav>
|
128
116
|
|
129
|
-
|
130
|
-
<
|
117
|
+
<main role="main" aria-labelledby="class-MIDI::IO::SeqReader">
|
118
|
+
<h1 id="class-MIDI::IO::SeqReader" class="class">
|
119
|
+
class MIDI::IO::SeqReader
|
120
|
+
</h1>
|
131
121
|
|
132
|
-
<
|
133
|
-
|
134
|
-
<li><a href="../../MIDI.html">MIDI</a>
|
135
|
-
|
136
|
-
<li><a href="../../MIDI/ActiveSense.html">MIDI::ActiveSense</a>
|
137
|
-
|
138
|
-
<li><a href="../../MIDI/ChannelEvent.html">MIDI::ChannelEvent</a>
|
139
|
-
|
140
|
-
<li><a href="../../MIDI/ChannelPressure.html">MIDI::ChannelPressure</a>
|
141
|
-
|
142
|
-
<li><a href="../../MIDI/Clock.html">MIDI::Clock</a>
|
143
|
-
|
144
|
-
<li><a href="../../MIDI/Continue.html">MIDI::Continue</a>
|
145
|
-
|
146
|
-
<li><a href="../../MIDI/Controller.html">MIDI::Controller</a>
|
147
|
-
|
148
|
-
<li><a href="../../MIDI/Event.html">MIDI::Event</a>
|
149
|
-
|
150
|
-
<li><a href="../../MIDI/IO.html">MIDI::IO</a>
|
151
|
-
|
152
|
-
<li><a href="../../MIDI/IO/MIDIFile.html">MIDI::IO::MIDIFile</a>
|
153
|
-
|
154
|
-
<li><a href="../../MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a>
|
155
|
-
|
156
|
-
<li><a href="../../MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a>
|
157
|
-
|
158
|
-
<li><a href="../../MIDI/KeySig.html">MIDI::KeySig</a>
|
159
|
-
|
160
|
-
<li><a href="../../MIDI/MIDI.html">MIDI::MIDI</a>
|
161
|
-
|
162
|
-
<li><a href="../../MIDI/MIDI/MIDI.html">MIDI::MIDI::MIDI</a>
|
163
|
-
|
164
|
-
<li><a href="../../MIDI/MIDI/MIDI/Array.html">MIDI::MIDI::MIDI::Array</a>
|
165
|
-
|
166
|
-
<li><a href="../../MIDI/Marker.html">MIDI::Marker</a>
|
167
|
-
|
168
|
-
<li><a href="../../MIDI/Measure.html">MIDI::Measure</a>
|
169
|
-
|
170
|
-
<li><a href="../../MIDI/Measures.html">MIDI::Measures</a>
|
171
|
-
|
172
|
-
<li><a href="../../MIDI/MetaEvent.html">MIDI::MetaEvent</a>
|
173
|
-
|
174
|
-
<li><a href="../../MIDI/NoteEvent.html">MIDI::NoteEvent</a>
|
175
|
-
|
176
|
-
<li><a href="../../MIDI/NoteOff.html">MIDI::NoteOff</a>
|
177
|
-
|
178
|
-
<li><a href="../../MIDI/NoteOff.html">MIDI::NoteOffEvent</a>
|
179
|
-
|
180
|
-
<li><a href="../../MIDI/NoteOn.html">MIDI::NoteOn</a>
|
181
|
-
|
182
|
-
<li><a href="../../MIDI/NoteOn.html">MIDI::NoteOnEvent</a>
|
183
|
-
|
184
|
-
<li><a href="../../MIDI/PitchBend.html">MIDI::PitchBend</a>
|
185
|
-
|
186
|
-
<li><a href="../../MIDI/PolyPressure.html">MIDI::PolyPressure</a>
|
187
|
-
|
188
|
-
<li><a href="../../MIDI/ProgramChange.html">MIDI::ProgramChange</a>
|
189
|
-
|
190
|
-
<li><a href="../../MIDI/Realtime.html">MIDI::Realtime</a>
|
191
|
-
|
192
|
-
<li><a href="../../MIDI/Sequence.html">MIDI::Sequence</a>
|
193
|
-
|
194
|
-
<li><a href="../../MIDI/SongPointer.html">MIDI::SongPointer</a>
|
195
|
-
|
196
|
-
<li><a href="../../MIDI/SongSelect.html">MIDI::SongSelect</a>
|
197
|
-
|
198
|
-
<li><a href="../../MIDI/Start.html">MIDI::Start</a>
|
199
|
-
|
200
|
-
<li><a href="../../MIDI/Stop.html">MIDI::Stop</a>
|
201
|
-
|
202
|
-
<li><a href="../../MIDI/SystemCommon.html">MIDI::SystemCommon</a>
|
203
|
-
|
204
|
-
<li><a href="../../MIDI/SystemExclusive.html">MIDI::SystemExclusive</a>
|
205
|
-
|
206
|
-
<li><a href="../../MIDI/SystemReset.html">MIDI::SystemReset</a>
|
207
|
-
|
208
|
-
<li><a href="../../MIDI/Tempo.html">MIDI::Tempo</a>
|
209
|
-
|
210
|
-
<li><a href="../../MIDI/TimeSig.html">MIDI::TimeSig</a>
|
211
|
-
|
212
|
-
<li><a href="../../MIDI/Track.html">MIDI::Track</a>
|
213
|
-
|
214
|
-
<li><a href="../../MIDI/TuneRequest.html">MIDI::TuneRequest</a>
|
215
|
-
|
216
|
-
<li><a href="../../MIDI/Utils.html">MIDI::Utils</a>
|
217
|
-
|
218
|
-
<li><a href="../../IO.html">IO</a>
|
219
|
-
|
220
|
-
</ul>
|
221
|
-
</nav>
|
222
|
-
|
223
|
-
</div>
|
224
|
-
</nav>
|
225
|
-
|
226
|
-
<div id="documentation">
|
227
|
-
<h1 class="class">class MIDI::IO::SeqReader</h1>
|
228
|
-
|
229
|
-
<div id="description" class="description">
|
122
|
+
<section class="description">
|
230
123
|
|
231
124
|
<p>Reads <a href="../MIDI.html">MIDI</a> files. As a subclass of <a
|
232
125
|
href="MIDIFile.html">MIDIFile</a>, this class implements the callback
|
@@ -235,19 +128,20 @@ build <a href="../Track.html">Track</a> and <a
|
|
235
128
|
href="../Event.html">Event</a> objects and give the tracks to a <a
|
236
129
|
href="../Sequence.html">Sequence</a>.</p>
|
237
130
|
|
238
|
-
<p>We append new events to the end of a track
|
239
|
-
to <a href="../Track.html">Track</a
|
131
|
+
<p>We append new events to the end of a track's event list, bypassing a
|
132
|
+
call to <a href="../Track.html">Track</a>.#add. This means that we must
|
133
|
+
call <a
|
240
134
|
href="../Track.html#method-i-recalc_times">MIDI::Track#recalc_times</a> at
|
241
135
|
the end of the track so it can update each event with its time from the
|
242
|
-
track
|
136
|
+
track's start (see <a
|
243
137
|
href="SeqReader.html#method-i-end_track">#end_track</a> below).</p>
|
244
138
|
|
245
|
-
<p>META_TRACK_END events are not added to tracks. This way, we don
|
246
|
-
worry about making sure the last event is always a track end event. We
|
247
|
-
on the <a href="SeqWriter.html">SeqWriter</a> to append a
|
248
|
-
event to each track when it is output.</p>
|
139
|
+
<p>META_TRACK_END events are not added to tracks. This way, we don't have
|
140
|
+
to worry about making sure the last event is always a track end event. We
|
141
|
+
rely on the <a href="SeqWriter.html">SeqWriter</a> to append a
|
142
|
+
META_TRACK_END event to each track when it is output.</p>
|
249
143
|
|
250
|
-
</
|
144
|
+
</section>
|
251
145
|
|
252
146
|
|
253
147
|
|
@@ -261,10 +155,11 @@ event to each track when it is output.</p>
|
|
261
155
|
|
262
156
|
|
263
157
|
|
264
|
-
<!-- Methods -->
|
265
158
|
|
266
|
-
<section id="public-class-5Buntitled-5D-method-details" class="method-section
|
267
|
-
|
159
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
160
|
+
<header>
|
161
|
+
<h3>Public Class Methods</h3>
|
162
|
+
</header>
|
268
163
|
|
269
164
|
|
270
165
|
<div id="method-c-new" class="method-detail ">
|
@@ -272,7 +167,9 @@ event to each track when it is output.</p>
|
|
272
167
|
<div class="method-heading">
|
273
168
|
<span class="method-name">new</span><span
|
274
169
|
class="method-args">(seq, proc = nil) { |track, num_tracks, index| ... }</span>
|
170
|
+
|
275
171
|
<span class="method-click-advice">click to toggle source</span>
|
172
|
+
|
276
173
|
</div>
|
277
174
|
|
278
175
|
|
@@ -283,31 +180,39 @@ at the end of each track. There are three arguments to the block: the
|
|
283
180
|
track, the track number (1 through <em>n</em>), and the total number of
|
284
181
|
tracks.</p>
|
285
182
|
|
183
|
+
|
184
|
+
<div class="method-calls-super">
|
185
|
+
Calls superclass method
|
186
|
+
<a href="MIDIFile.html#method-c-new">MIDI::IO::MIDIFile.new</a>
|
187
|
+
</div>
|
188
|
+
|
286
189
|
|
287
190
|
|
288
191
|
<div class="method-source-code" id="new-source">
|
289
192
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 29</span>
|
290
193
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">seq</span>, <span class="ruby-identifier">proc</span> = <span class="ruby-keyword">nil</span>) <span class="ruby-comment"># :yields: track, num_tracks, index</span>
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
194
|
+
<span class="ruby-keyword">super</span>()
|
195
|
+
<span class="ruby-ivar">@seq</span> = <span class="ruby-identifier">seq</span>
|
196
|
+
<span class="ruby-ivar">@track</span> = <span class="ruby-keyword">nil</span>
|
197
|
+
<span class="ruby-ivar">@chan_mask</span> = <span class="ruby-value">0</span>
|
198
|
+
<span class="ruby-ivar">@update_block</span> = <span class="ruby-identifier">block_given?</span>() <span class="ruby-operator">?</span> <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span>() <span class="ruby-operator">:</span> <span class="ruby-identifier">proc</span>
|
296
199
|
<span class="ruby-keyword">end</span></pre>
|
297
|
-
</div
|
200
|
+
</div>
|
298
201
|
|
299
202
|
</div>
|
300
203
|
|
301
204
|
|
302
205
|
|
303
206
|
|
304
|
-
</div
|
207
|
+
</div>
|
305
208
|
|
306
209
|
|
307
|
-
</section
|
210
|
+
</section>
|
308
211
|
|
309
|
-
<section id="public-instance-5Buntitled-5D-method-details" class="method-section
|
310
|
-
|
212
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
213
|
+
<header>
|
214
|
+
<h3>Public Instance Methods</h3>
|
215
|
+
</header>
|
311
216
|
|
312
217
|
|
313
218
|
<div id="method-i-chan_pressure" class="method-detail ">
|
@@ -315,7 +220,9 @@ tracks.</p>
|
|
315
220
|
<div class="method-heading">
|
316
221
|
<span class="method-name">chan_pressure</span><span
|
317
222
|
class="method-args">(chan, press)</span>
|
223
|
+
|
318
224
|
<span class="method-click-advice">click to toggle source</span>
|
225
|
+
|
319
226
|
</div>
|
320
227
|
|
321
228
|
|
@@ -323,22 +230,23 @@ tracks.</p>
|
|
323
230
|
|
324
231
|
|
325
232
|
|
233
|
+
|
326
234
|
|
327
235
|
|
328
236
|
<div class="method-source-code" id="chan_pressure-source">
|
329
237
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 125</span>
|
330
238
|
<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>)
|
331
|
-
|
332
|
-
|
239
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">ChannelPressure</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">press</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
240
|
+
<span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
333
241
|
<span class="ruby-keyword">end</span></pre>
|
334
|
-
</div
|
242
|
+
</div>
|
335
243
|
|
336
244
|
</div>
|
337
245
|
|
338
246
|
|
339
247
|
|
340
248
|
|
341
|
-
</div
|
249
|
+
</div>
|
342
250
|
|
343
251
|
|
344
252
|
<div id="method-i-controller" class="method-detail ">
|
@@ -346,7 +254,9 @@ tracks.</p>
|
|
346
254
|
<div class="method-heading">
|
347
255
|
<span class="method-name">controller</span><span
|
348
256
|
class="method-args">(chan, control, value)</span>
|
257
|
+
|
349
258
|
<span class="method-click-advice">click to toggle source</span>
|
259
|
+
|
350
260
|
</div>
|
351
261
|
|
352
262
|
|
@@ -354,22 +264,23 @@ tracks.</p>
|
|
354
264
|
|
355
265
|
|
356
266
|
|
267
|
+
|
357
268
|
|
358
269
|
|
359
270
|
<div class="method-source-code" id="controller-source">
|
360
271
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 110</span>
|
361
272
|
<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>)
|
362
|
-
|
363
|
-
|
273
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Controller</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">control</span>, <span class="ruby-identifier">value</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
274
|
+
<span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
364
275
|
<span class="ruby-keyword">end</span></pre>
|
365
|
-
</div
|
276
|
+
</div>
|
366
277
|
|
367
278
|
</div>
|
368
279
|
|
369
280
|
|
370
281
|
|
371
282
|
|
372
|
-
</div
|
283
|
+
</div>
|
373
284
|
|
374
285
|
|
375
286
|
<div id="method-i-end_track" class="method-detail ">
|
@@ -377,7 +288,9 @@ tracks.</p>
|
|
377
288
|
<div class="method-heading">
|
378
289
|
<span class="method-name">end_track</span><span
|
379
290
|
class="method-args">()</span>
|
291
|
+
|
380
292
|
<span class="method-click-advice">click to toggle source</span>
|
293
|
+
|
381
294
|
</div>
|
382
295
|
|
383
296
|
|
@@ -385,37 +298,38 @@ tracks.</p>
|
|
385
298
|
|
386
299
|
|
387
300
|
|
301
|
+
|
388
302
|
|
389
303
|
|
390
304
|
<div class="method-source-code" id="end_track-source">
|
391
305
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 52</span>
|
392
306
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">end_track</span>()
|
393
|
-
|
394
|
-
|
395
|
-
|
307
|
+
<span class="ruby-comment"># Turn off any pending note on messages</span>
|
308
|
+
<span class="ruby-ivar">@pending</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">on</span><span class="ruby-operator">|</span> <span class="ruby-identifier">make_note_off</span>(<span class="ruby-identifier">on</span>, <span class="ruby-value">64</span>) }
|
309
|
+
<span class="ruby-ivar">@pending</span> = <span class="ruby-keyword">nil</span>
|
396
310
|
|
397
|
-
|
398
|
-
|
399
|
-
|
311
|
+
<span class="ruby-comment"># Don't bother adding the META_TRACK_END event to the track.</span>
|
312
|
+
<span class="ruby-comment"># This way, we don't have to worry about making sure the</span>
|
313
|
+
<span class="ruby-comment"># last event is always a track end event.</span>
|
400
314
|
|
401
|
-
|
402
|
-
|
403
|
-
|
315
|
+
<span class="ruby-comment"># Let the track calculate event times from start of track. This is</span>
|
316
|
+
<span class="ruby-comment"># in lieu of calling Track.add for each event.</span>
|
317
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">recalc_times</span>()
|
404
318
|
|
405
|
-
|
406
|
-
|
319
|
+
<span class="ruby-comment"># Store bitmask of all channels used into track</span>
|
320
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">channels_used</span> = <span class="ruby-ivar">@chan_mask</span>
|
407
321
|
|
408
|
-
|
409
|
-
|
322
|
+
<span class="ruby-comment"># call update block</span>
|
323
|
+
<span class="ruby-ivar">@update_block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-ivar">@track</span>, <span class="ruby-ivar">@ntrks</span>, <span class="ruby-ivar">@seq</span>.<span class="ruby-identifier">tracks</span>.<span class="ruby-identifier">length</span>) <span class="ruby-keyword">if</span> <span class="ruby-ivar">@update_block</span>
|
410
324
|
<span class="ruby-keyword">end</span></pre>
|
411
|
-
</div
|
325
|
+
</div>
|
412
326
|
|
413
327
|
</div>
|
414
328
|
|
415
329
|
|
416
330
|
|
417
331
|
|
418
|
-
</div
|
332
|
+
</div>
|
419
333
|
|
420
334
|
|
421
335
|
<div id="method-i-header" class="method-detail ">
|
@@ -423,7 +337,9 @@ tracks.</p>
|
|
423
337
|
<div class="method-heading">
|
424
338
|
<span class="method-name">header</span><span
|
425
339
|
class="method-args">(format, ntrks, division)</span>
|
340
|
+
|
426
341
|
<span class="method-click-advice">click to toggle source</span>
|
342
|
+
|
427
343
|
</div>
|
428
344
|
|
429
345
|
|
@@ -431,25 +347,26 @@ tracks.</p>
|
|
431
347
|
|
432
348
|
|
433
349
|
|
350
|
+
|
434
351
|
|
435
352
|
|
436
353
|
<div class="method-source-code" id="header-source">
|
437
354
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 37</span>
|
438
355
|
<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>)
|
439
|
-
|
440
|
-
|
356
|
+
<span class="ruby-ivar">@seq</span>.<span class="ruby-identifier">format</span> = <span class="ruby-identifier">format</span>
|
357
|
+
<span class="ruby-ivar">@seq</span>.<span class="ruby-identifier">ppqn</span> = <span class="ruby-identifier">division</span>
|
441
358
|
|
442
|
-
|
443
|
-
|
359
|
+
<span class="ruby-ivar">@ntrks</span> = <span class="ruby-identifier">ntrks</span>
|
360
|
+
<span class="ruby-ivar">@update_block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-keyword">nil</span>, <span class="ruby-ivar">@ntrks</span>, <span class="ruby-value">0</span>) <span class="ruby-keyword">if</span> <span class="ruby-ivar">@update_block</span>
|
444
361
|
<span class="ruby-keyword">end</span></pre>
|
445
|
-
</div
|
362
|
+
</div>
|
446
363
|
|
447
364
|
</div>
|
448
365
|
|
449
366
|
|
450
367
|
|
451
368
|
|
452
|
-
</div
|
369
|
+
</div>
|
453
370
|
|
454
371
|
|
455
372
|
<div id="method-i-key_signature" class="method-detail ">
|
@@ -457,7 +374,9 @@ tracks.</p>
|
|
457
374
|
<div class="method-heading">
|
458
375
|
<span class="method-name">key_signature</span><span
|
459
376
|
class="method-args">(sharpflat, is_minor)</span>
|
377
|
+
|
460
378
|
<span class="method-click-advice">click to toggle source</span>
|
379
|
+
|
461
380
|
</div>
|
462
381
|
|
463
382
|
|
@@ -465,6 +384,7 @@ tracks.</p>
|
|
465
384
|
|
466
385
|
|
467
386
|
|
387
|
+
|
468
388
|
|
469
389
|
|
470
390
|
<div class="method-source-code" id="key_signature-source">
|
@@ -472,14 +392,14 @@ tracks.</p>
|
|
472
392
|
<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>)
|
473
393
|
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">KeySig</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">sharpflat</span>, <span class="ruby-identifier">is_minor</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
474
394
|
<span class="ruby-keyword">end</span></pre>
|
475
|
-
</div
|
395
|
+
</div>
|
476
396
|
|
477
397
|
</div>
|
478
398
|
|
479
399
|
|
480
400
|
|
481
401
|
|
482
|
-
</div
|
402
|
+
</div>
|
483
403
|
|
484
404
|
|
485
405
|
<div id="method-i-make_note_off" class="method-detail ">
|
@@ -487,7 +407,9 @@ tracks.</p>
|
|
487
407
|
<div class="method-heading">
|
488
408
|
<span class="method-name">make_note_off</span><span
|
489
409
|
class="method-args">(on, vel)</span>
|
410
|
+
|
490
411
|
<span class="method-click-advice">click to toggle source</span>
|
412
|
+
|
491
413
|
</div>
|
492
414
|
|
493
415
|
|
@@ -495,24 +417,25 @@ tracks.</p>
|
|
495
417
|
|
496
418
|
|
497
419
|
|
420
|
+
|
498
421
|
|
499
422
|
|
500
423
|
<div class="method-source-code" id="make_note_off-source">
|
501
424
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 98</span>
|
502
425
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">make_note_off</span>(<span class="ruby-identifier">on</span>, <span class="ruby-identifier">vel</span>)
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
426
|
+
<span class="ruby-identifier">off</span> = <span class="ruby-constant">NoteOff</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">on</span>.<span class="ruby-identifier">channel</span>, <span class="ruby-identifier">on</span>.<span class="ruby-identifier">note</span>, <span class="ruby-identifier">vel</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
427
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">off</span>
|
428
|
+
<span class="ruby-identifier">on</span>.<span class="ruby-identifier">off</span> = <span class="ruby-identifier">off</span>
|
429
|
+
<span class="ruby-identifier">off</span>.<span class="ruby-identifier">on</span> = <span class="ruby-identifier">on</span>
|
507
430
|
<span class="ruby-keyword">end</span></pre>
|
508
|
-
</div
|
431
|
+
</div>
|
509
432
|
|
510
433
|
</div>
|
511
434
|
|
512
435
|
|
513
436
|
|
514
437
|
|
515
|
-
</div
|
438
|
+
</div>
|
516
439
|
|
517
440
|
|
518
441
|
<div id="method-i-meta_misc" class="method-detail ">
|
@@ -520,7 +443,9 @@ tracks.</p>
|
|
520
443
|
<div class="method-heading">
|
521
444
|
<span class="method-name">meta_misc</span><span
|
522
445
|
class="method-args">(type, msg)</span>
|
446
|
+
|
523
447
|
<span class="method-click-advice">click to toggle source</span>
|
448
|
+
|
524
449
|
</div>
|
525
450
|
|
526
451
|
|
@@ -528,21 +453,22 @@ tracks.</p>
|
|
528
453
|
|
529
454
|
|
530
455
|
|
456
|
+
|
531
457
|
|
532
458
|
|
533
459
|
<div class="method-source-code" id="meta_misc-source">
|
534
460
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 134</span>
|
535
461
|
<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>)
|
536
|
-
|
462
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">MetaEvent</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
537
463
|
<span class="ruby-keyword">end</span></pre>
|
538
|
-
</div
|
464
|
+
</div>
|
539
465
|
|
540
466
|
</div>
|
541
467
|
|
542
468
|
|
543
469
|
|
544
470
|
|
545
|
-
</div
|
471
|
+
</div>
|
546
472
|
|
547
473
|
|
548
474
|
<div id="method-i-note_off" class="method-detail ">
|
@@ -550,7 +476,9 @@ tracks.</p>
|
|
550
476
|
<div class="method-heading">
|
551
477
|
<span class="method-name">note_off</span><span
|
552
478
|
class="method-args">(chan, note, vel)</span>
|
479
|
+
|
553
480
|
<span class="method-click-advice">click to toggle source</span>
|
481
|
+
|
554
482
|
</div>
|
555
483
|
|
556
484
|
|
@@ -558,31 +486,32 @@ tracks.</p>
|
|
558
486
|
|
559
487
|
|
560
488
|
|
489
|
+
|
561
490
|
|
562
491
|
|
563
492
|
<div class="method-source-code" id="note_off-source">
|
564
493
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 84</span>
|
565
494
|
<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>)
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
495
|
+
<span class="ruby-comment"># Find note on, create note off, connect the two, and remove</span>
|
496
|
+
<span class="ruby-comment"># note on from pending list.</span>
|
497
|
+
<span class="ruby-ivar">@pending</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">on</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
498
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">on</span>.<span class="ruby-identifier">note</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">note</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">on</span>.<span class="ruby-identifier">channel</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">chan</span>
|
499
|
+
<span class="ruby-identifier">make_note_off</span>(<span class="ruby-identifier">on</span>, <span class="ruby-identifier">vel</span>)
|
500
|
+
<span class="ruby-ivar">@pending</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-identifier">i</span>)
|
501
|
+
<span class="ruby-keyword">return</span>
|
502
|
+
<span class="ruby-keyword">end</span>
|
503
|
+
<span class="ruby-keyword">end</span>
|
504
|
+
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"note off with no earlier note on (ch #{chan}, note"</span> <span class="ruby-operator">+</span>
|
505
|
+
<span class="ruby-node">" #{note}, vel #{vel})"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
|
577
506
|
<span class="ruby-keyword">end</span></pre>
|
578
|
-
</div
|
507
|
+
</div>
|
579
508
|
|
580
509
|
</div>
|
581
510
|
|
582
511
|
|
583
512
|
|
584
513
|
|
585
|
-
</div
|
514
|
+
</div>
|
586
515
|
|
587
516
|
|
588
517
|
<div id="method-i-note_on" class="method-detail ">
|
@@ -590,7 +519,9 @@ tracks.</p>
|
|
590
519
|
<div class="method-heading">
|
591
520
|
<span class="method-name">note_on</span><span
|
592
521
|
class="method-args">(chan, note, vel)</span>
|
522
|
+
|
593
523
|
<span class="method-click-advice">click to toggle source</span>
|
524
|
+
|
594
525
|
</div>
|
595
526
|
|
596
527
|
|
@@ -598,29 +529,30 @@ tracks.</p>
|
|
598
529
|
|
599
530
|
|
600
531
|
|
532
|
+
|
601
533
|
|
602
534
|
|
603
535
|
<div class="method-source-code" id="note_on-source">
|
604
536
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 72</span>
|
605
537
|
<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>)
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
538
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">vel</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
539
|
+
<span class="ruby-identifier">note_off</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-value">64</span>)
|
540
|
+
<span class="ruby-keyword">return</span>
|
541
|
+
<span class="ruby-keyword">end</span>
|
542
|
+
|
543
|
+
<span class="ruby-identifier">on</span> = <span class="ruby-constant">NoteOn</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">vel</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
544
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">on</span>
|
545
|
+
<span class="ruby-ivar">@pending</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">on</span>
|
546
|
+
<span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
615
547
|
<span class="ruby-keyword">end</span></pre>
|
616
|
-
</div
|
548
|
+
</div>
|
617
549
|
|
618
550
|
</div>
|
619
551
|
|
620
552
|
|
621
553
|
|
622
554
|
|
623
|
-
</div
|
555
|
+
</div>
|
624
556
|
|
625
557
|
|
626
558
|
<div id="method-i-pitch_bend" class="method-detail ">
|
@@ -628,7 +560,9 @@ tracks.</p>
|
|
628
560
|
<div class="method-heading">
|
629
561
|
<span class="method-name">pitch_bend</span><span
|
630
562
|
class="method-args">(chan, lsb, msb)</span>
|
563
|
+
|
631
564
|
<span class="method-click-advice">click to toggle source</span>
|
565
|
+
|
632
566
|
</div>
|
633
567
|
|
634
568
|
|
@@ -636,22 +570,23 @@ tracks.</p>
|
|
636
570
|
|
637
571
|
|
638
572
|
|
573
|
+
|
639
574
|
|
640
575
|
|
641
576
|
<div class="method-source-code" id="pitch_bend-source">
|
642
577
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 115</span>
|
643
578
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">pitch_bend</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">lsb</span>, <span class="ruby-identifier">msb</span>)
|
644
|
-
|
645
|
-
|
579
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">PitchBend</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">chan</span>, (<span class="ruby-identifier">msb</span> <span class="ruby-operator"><<</span> <span class="ruby-value">7</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">lsb</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
580
|
+
<span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
646
581
|
<span class="ruby-keyword">end</span></pre>
|
647
|
-
</div
|
582
|
+
</div>
|
648
583
|
|
649
584
|
</div>
|
650
585
|
|
651
586
|
|
652
587
|
|
653
588
|
|
654
|
-
</div
|
589
|
+
</div>
|
655
590
|
|
656
591
|
|
657
592
|
<div id="method-i-pressure" class="method-detail ">
|
@@ -659,7 +594,9 @@ tracks.</p>
|
|
659
594
|
<div class="method-heading">
|
660
595
|
<span class="method-name">pressure</span><span
|
661
596
|
class="method-args">(chan, note, press)</span>
|
597
|
+
|
662
598
|
<span class="method-click-advice">click to toggle source</span>
|
599
|
+
|
663
600
|
</div>
|
664
601
|
|
665
602
|
|
@@ -667,22 +604,23 @@ tracks.</p>
|
|
667
604
|
|
668
605
|
|
669
606
|
|
607
|
+
|
670
608
|
|
671
609
|
|
672
610
|
<div class="method-source-code" id="pressure-source">
|
673
611
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 105</span>
|
674
612
|
<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>)
|
675
|
-
|
676
|
-
|
613
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">PolyPressure</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">note</span>, <span class="ruby-identifier">press</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
614
|
+
<span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
677
615
|
<span class="ruby-keyword">end</span></pre>
|
678
|
-
</div
|
616
|
+
</div>
|
679
617
|
|
680
618
|
</div>
|
681
619
|
|
682
620
|
|
683
621
|
|
684
622
|
|
685
|
-
</div
|
623
|
+
</div>
|
686
624
|
|
687
625
|
|
688
626
|
<div id="method-i-program" class="method-detail ">
|
@@ -690,7 +628,9 @@ tracks.</p>
|
|
690
628
|
<div class="method-heading">
|
691
629
|
<span class="method-name">program</span><span
|
692
630
|
class="method-args">(chan, program)</span>
|
631
|
+
|
693
632
|
<span class="method-click-advice">click to toggle source</span>
|
633
|
+
|
694
634
|
</div>
|
695
635
|
|
696
636
|
|
@@ -698,22 +638,23 @@ tracks.</p>
|
|
698
638
|
|
699
639
|
|
700
640
|
|
641
|
+
|
701
642
|
|
702
643
|
|
703
644
|
<div class="method-source-code" id="program-source">
|
704
645
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 120</span>
|
705
646
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">program</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">program</span>)
|
706
|
-
|
707
|
-
|
647
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">ProgramChange</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">program</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
648
|
+
<span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
708
649
|
<span class="ruby-keyword">end</span></pre>
|
709
|
-
</div
|
650
|
+
</div>
|
710
651
|
|
711
652
|
</div>
|
712
653
|
|
713
654
|
|
714
655
|
|
715
656
|
|
716
|
-
</div
|
657
|
+
</div>
|
717
658
|
|
718
659
|
|
719
660
|
<div id="method-i-start_track" class="method-detail ">
|
@@ -721,7 +662,9 @@ tracks.</p>
|
|
721
662
|
<div class="method-heading">
|
722
663
|
<span class="method-name">start_track</span><span
|
723
664
|
class="method-args">()</span>
|
665
|
+
|
724
666
|
<span class="method-click-advice">click to toggle source</span>
|
667
|
+
|
725
668
|
</div>
|
726
669
|
|
727
670
|
|
@@ -729,24 +672,25 @@ tracks.</p>
|
|
729
672
|
|
730
673
|
|
731
674
|
|
675
|
+
|
732
676
|
|
733
677
|
|
734
678
|
<div class="method-source-code" id="start_track-source">
|
735
679
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 45</span>
|
736
680
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">start_track</span>()
|
737
|
-
|
738
|
-
|
681
|
+
<span class="ruby-ivar">@track</span> = <span class="ruby-constant">Track</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@seq</span>)
|
682
|
+
<span class="ruby-ivar">@seq</span>.<span class="ruby-identifier">tracks</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@track</span>
|
739
683
|
|
740
|
-
|
684
|
+
<span class="ruby-ivar">@pending</span> = []
|
741
685
|
<span class="ruby-keyword">end</span></pre>
|
742
|
-
</div
|
686
|
+
</div>
|
743
687
|
|
744
688
|
</div>
|
745
689
|
|
746
690
|
|
747
691
|
|
748
692
|
|
749
|
-
</div
|
693
|
+
</div>
|
750
694
|
|
751
695
|
|
752
696
|
<div id="method-i-sysex" class="method-detail ">
|
@@ -754,7 +698,9 @@ tracks.</p>
|
|
754
698
|
<div class="method-heading">
|
755
699
|
<span class="method-name">sysex</span><span
|
756
700
|
class="method-args">(msg)</span>
|
701
|
+
|
757
702
|
<span class="method-click-advice">click to toggle source</span>
|
703
|
+
|
758
704
|
</div>
|
759
705
|
|
760
706
|
|
@@ -762,21 +708,22 @@ tracks.</p>
|
|
762
708
|
|
763
709
|
|
764
710
|
|
711
|
+
|
765
712
|
|
766
713
|
|
767
714
|
<div class="method-source-code" id="sysex-source">
|
768
715
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 130</span>
|
769
716
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">sysex</span>(<span class="ruby-identifier">msg</span>)
|
770
|
-
|
717
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">SystemExclusive</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
771
718
|
<span class="ruby-keyword">end</span></pre>
|
772
|
-
</div
|
719
|
+
</div>
|
773
720
|
|
774
721
|
</div>
|
775
722
|
|
776
723
|
|
777
724
|
|
778
725
|
|
779
|
-
</div
|
726
|
+
</div>
|
780
727
|
|
781
728
|
|
782
729
|
<div id="method-i-tempo" class="method-detail ">
|
@@ -784,13 +731,15 @@ tracks.</p>
|
|
784
731
|
<div class="method-heading">
|
785
732
|
<span class="method-name">tempo</span><span
|
786
733
|
class="method-args">(microsecs)</span>
|
734
|
+
|
787
735
|
<span class="method-click-advice">click to toggle source</span>
|
736
|
+
|
788
737
|
</div>
|
789
738
|
|
790
739
|
|
791
740
|
<div class="method-description">
|
792
741
|
|
793
|
-
<p
|
742
|
+
<p>–</p>
|
794
743
|
|
795
744
|
<pre class="ruby"><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>)
|
796
745
|
<span class="ruby-keyword">end</span>
|
@@ -798,21 +747,22 @@ tracks.</p>
|
|
798
747
|
|
799
748
|
<p>++</p>
|
800
749
|
|
750
|
+
|
801
751
|
|
802
752
|
|
803
753
|
<div class="method-source-code" id="tempo-source">
|
804
754
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 181</span>
|
805
755
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">tempo</span>(<span class="ruby-identifier">microsecs</span>)
|
806
|
-
|
756
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Tempo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">microsecs</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
807
757
|
<span class="ruby-keyword">end</span></pre>
|
808
|
-
</div
|
758
|
+
</div>
|
809
759
|
|
810
760
|
</div>
|
811
761
|
|
812
762
|
|
813
763
|
|
814
764
|
|
815
|
-
</div
|
765
|
+
</div>
|
816
766
|
|
817
767
|
|
818
768
|
<div id="method-i-text" class="method-detail ">
|
@@ -820,7 +770,9 @@ tracks.</p>
|
|
820
770
|
<div class="method-heading">
|
821
771
|
<span class="method-name">text</span><span
|
822
772
|
class="method-args">(type, msg)</span>
|
773
|
+
|
823
774
|
<span class="method-click-advice">click to toggle source</span>
|
775
|
+
|
824
776
|
</div>
|
825
777
|
|
826
778
|
|
@@ -832,32 +784,33 @@ tracks.</p>
|
|
832
784
|
|
833
785
|
<p>++</p>
|
834
786
|
|
787
|
+
|
835
788
|
|
836
789
|
|
837
790
|
<div class="method-source-code" id="text-source">
|
838
791
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 146</span>
|
839
792
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">text</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>)
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
793
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">type</span>
|
794
|
+
<span class="ruby-keyword">when</span> <span class="ruby-constant">META_TEXT</span>, <span class="ruby-constant">META_LYRIC</span>, <span class="ruby-constant">META_CUE</span>
|
795
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">MetaEvent</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
796
|
+
<span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_NAME</span>, <span class="ruby-constant">META_COPYRIGHT</span>
|
797
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">MetaEvent</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>, <span class="ruby-value">0</span>)
|
798
|
+
<span class="ruby-keyword">when</span> <span class="ruby-constant">META_INSTRUMENT</span>
|
799
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">instrument</span> = <span class="ruby-identifier">msg</span>
|
800
|
+
<span class="ruby-keyword">when</span> <span class="ruby-constant">META_MARKER</span>
|
801
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Marker</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">msg</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
802
|
+
<span class="ruby-keyword">else</span>
|
803
|
+
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"text = #{msg}, type = #{type}"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">$DEBUG</span>
|
804
|
+
<span class="ruby-keyword">end</span>
|
852
805
|
<span class="ruby-keyword">end</span></pre>
|
853
|
-
</div
|
806
|
+
</div>
|
854
807
|
|
855
808
|
</div>
|
856
809
|
|
857
810
|
|
858
811
|
|
859
812
|
|
860
|
-
</div
|
813
|
+
</div>
|
861
814
|
|
862
815
|
|
863
816
|
<div id="method-i-time_signature" class="method-detail ">
|
@@ -865,16 +818,18 @@ tracks.</p>
|
|
865
818
|
<div class="method-heading">
|
866
819
|
<span class="method-name">time_signature</span><span
|
867
820
|
class="method-args">(numer, denom, clocks, qnotes)</span>
|
821
|
+
|
868
822
|
<span class="method-click-advice">click to toggle source</span>
|
823
|
+
|
869
824
|
</div>
|
870
825
|
|
871
826
|
|
872
827
|
<div class="method-description">
|
873
828
|
|
874
|
-
<p
|
875
|
-
don
|
876
|
-
track end event. We just have to make sure to write one when the
|
877
|
-
output back to a file.</p>
|
829
|
+
<p>– Don't bother adding the META_TRACK_END event to the track. This way,
|
830
|
+
we don't have to worry about always making sure the last event is
|
831
|
+
always a track end event. We just have to make sure to write one when the
|
832
|
+
track is output back to a file.</p>
|
878
833
|
|
879
834
|
<pre class="ruby"><span class="ruby-keyword">def</span> <span class="ruby-identifier">eot</span>()
|
880
835
|
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">MetaEvent</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">META_TRACK_END</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-ivar">@curr_ticks</span>)
|
@@ -883,22 +838,23 @@ output back to a file.</p>
|
|
883
838
|
|
884
839
|
<p>++</p>
|
885
840
|
|
841
|
+
|
886
842
|
|
887
843
|
|
888
844
|
<div class="method-source-code" id="time_signature-source">
|
889
845
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 171</span>
|
890
846
|
<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>)
|
891
|
-
|
892
|
-
|
847
|
+
<span class="ruby-ivar">@seq</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>)
|
848
|
+
<span class="ruby-ivar">@track</span>.<span class="ruby-identifier">events</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">TimeSig</span>.<span class="ruby-identifier">new</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>, <span class="ruby-ivar">@curr_ticks</span>)
|
893
849
|
<span class="ruby-keyword">end</span></pre>
|
894
|
-
</div
|
850
|
+
</div>
|
895
851
|
|
896
852
|
</div>
|
897
853
|
|
898
854
|
|
899
855
|
|
900
856
|
|
901
|
-
</div
|
857
|
+
</div>
|
902
858
|
|
903
859
|
|
904
860
|
<div id="method-i-track_uses_channel" class="method-detail ">
|
@@ -906,7 +862,9 @@ output back to a file.</p>
|
|
906
862
|
<div class="method-heading">
|
907
863
|
<span class="method-name">track_uses_channel</span><span
|
908
864
|
class="method-args">(chan)</span>
|
865
|
+
|
909
866
|
<span class="method-click-advice">click to toggle source</span>
|
867
|
+
|
910
868
|
</div>
|
911
869
|
|
912
870
|
|
@@ -914,33 +872,33 @@ output back to a file.</p>
|
|
914
872
|
|
915
873
|
<p>Return true if the current track uses the specified channel.</p>
|
916
874
|
|
875
|
+
|
917
876
|
|
918
877
|
|
919
878
|
<div class="method-source-code" id="track_uses_channel-source">
|
920
879
|
<pre><span class="ruby-comment"># File lib/midilib/io/seqreader.rb, line 195</span>
|
921
880
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">track_uses_channel</span>(<span class="ruby-identifier">chan</span>)
|
922
|
-
|
881
|
+
<span class="ruby-ivar">@chan_mask</span> = <span class="ruby-ivar">@chan_mask</span> <span class="ruby-operator">|</span> (<span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">chan</span>)
|
923
882
|
<span class="ruby-keyword">end</span></pre>
|
924
|
-
</div
|
883
|
+
</div>
|
925
884
|
|
926
885
|
</div>
|
927
886
|
|
928
887
|
|
929
888
|
|
930
889
|
|
931
|
-
</div
|
890
|
+
</div>
|
932
891
|
|
933
892
|
|
934
|
-
</section
|
893
|
+
</section>
|
935
894
|
|
936
|
-
</section
|
937
|
-
|
938
|
-
</div><!-- documentation -->
|
895
|
+
</section>
|
896
|
+
</main>
|
939
897
|
|
940
898
|
|
941
|
-
<footer id="validator-badges">
|
942
|
-
<p><a href="http://validator.w3.org/check/referer">
|
943
|
-
<p>Generated by <a href="
|
944
|
-
<p>
|
899
|
+
<footer id="validator-badges" role="contentinfo">
|
900
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
901
|
+
<p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.0.
|
902
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
945
903
|
</footer>
|
946
904
|
|