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