midilib 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +9 -4
  3. data/Rakefile +2 -6
  4. data/examples/from_scratch.rb +3 -5
  5. data/examples/measures_mbt.rb +4 -4
  6. data/examples/print_program_changes.rb +9 -9
  7. data/examples/reader2text.rb +188 -188
  8. data/examples/seq2text.rb +17 -17
  9. data/examples/split.rb +19 -19
  10. data/examples/strings.rb +14 -14
  11. data/examples/transpose.rb +31 -31
  12. data/html/IO.html +65 -169
  13. data/html/MIDI.html +138 -256
  14. data/html/MIDI/ActiveSense.html +89 -178
  15. data/html/MIDI/ChannelEvent.html +95 -183
  16. data/html/MIDI/ChannelPressure.html +105 -190
  17. data/html/MIDI/Clock.html +89 -178
  18. data/html/MIDI/Continue.html +89 -178
  19. data/html/MIDI/Controller.html +107 -192
  20. data/html/MIDI/Event.html +138 -222
  21. data/html/MIDI/IO.html +45 -157
  22. data/html/MIDI/IO/MIDIFile.html +596 -568
  23. data/html/MIDI/IO/SeqReader.html +272 -314
  24. data/html/MIDI/IO/SeqWriter.html +229 -305
  25. data/html/MIDI/KeySig.html +129 -211
  26. data/html/MIDI/MIDI.html +45 -154
  27. data/html/MIDI/MIDI/MIDI.html +45 -154
  28. data/html/MIDI/MIDI/MIDI/Array.html +87 -185
  29. data/html/MIDI/Marker.html +71 -170
  30. data/html/MIDI/Measure.html +95 -190
  31. data/html/MIDI/Measures.html +103 -193
  32. data/html/MIDI/MetaEvent.html +180 -253
  33. data/html/MIDI/NoteEvent.html +118 -204
  34. data/html/MIDI/NoteOff.html +95 -183
  35. data/html/MIDI/NoteOn.html +95 -183
  36. data/html/MIDI/PitchBend.html +106 -191
  37. data/html/MIDI/PolyPressure.html +106 -189
  38. data/html/MIDI/ProgramChange.html +105 -190
  39. data/html/MIDI/Realtime.html +98 -184
  40. data/html/MIDI/Sequence.html +246 -311
  41. data/html/MIDI/SongPointer.html +106 -191
  42. data/html/MIDI/SongSelect.html +105 -190
  43. data/html/MIDI/Start.html +89 -178
  44. data/html/MIDI/Stop.html +89 -178
  45. data/html/MIDI/SystemCommon.html +71 -170
  46. data/html/MIDI/SystemExclusive.html +108 -193
  47. data/html/MIDI/SystemReset.html +89 -178
  48. data/html/MIDI/Tempo.html +135 -213
  49. data/html/MIDI/TimeSig.html +135 -214
  50. data/html/MIDI/Track.html +217 -291
  51. data/html/MIDI/TuneRequest.html +98 -184
  52. data/html/MIDI/Utils.html +89 -189
  53. data/html/README_rdoc.html +237 -257
  54. data/html/TODO_rdoc.html +64 -139
  55. data/html/created.rid +14 -14
  56. data/html/css/fonts.css +167 -0
  57. data/html/{rdoc.css → css/rdoc.css} +265 -218
  58. data/html/fonts/Lato-Light.ttf +0 -0
  59. data/html/fonts/Lato-LightItalic.ttf +0 -0
  60. data/html/fonts/Lato-Regular.ttf +0 -0
  61. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  62. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  63. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  64. data/html/images/add.png +0 -0
  65. data/html/images/arrow_up.png +0 -0
  66. data/html/images/delete.png +0 -0
  67. data/html/images/tag_blue.png +0 -0
  68. data/html/index.html +187 -169
  69. data/html/js/darkfish.js +41 -33
  70. data/html/js/jquery.js +4 -18
  71. data/html/js/navigation.js.gz +0 -0
  72. data/html/js/search.js +20 -5
  73. data/html/js/search_index.js +1 -1
  74. data/html/js/search_index.js.gz +0 -0
  75. data/html/js/searcher.js.gz +0 -0
  76. data/html/table_of_contents.html +1111 -498
  77. data/install.rb +43 -32
  78. data/lib/midilib/consts.rb +407 -407
  79. data/lib/midilib/event.rb +295 -294
  80. data/lib/midilib/info.rb +5 -5
  81. data/lib/midilib/io/midifile.rb +266 -267
  82. data/lib/midilib/io/seqreader.rb +106 -106
  83. data/lib/midilib/io/seqwriter.rb +59 -60
  84. data/lib/midilib/measure.rb +69 -69
  85. data/lib/midilib/sequence.rb +68 -70
  86. data/lib/midilib/track.rb +96 -102
  87. data/lib/midilib/utils.rb +15 -15
  88. data/test/event_equality.rb +50 -50
  89. data/test/test_event.rb +120 -122
  90. data/test/test_io.rb +35 -48
  91. data/test/test_sequence.rb +60 -60
  92. data/test/test_track.rb +154 -154
  93. data/test/test_varlen.rb +23 -25
  94. metadata +65 -57
@@ -2,183 +2,73 @@
2
2
 
3
3
  <html>
4
4
  <head>
5
- <meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
5
+ <meta charset="UTF-8">
6
6
 
7
7
  <title>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 type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
16
- <script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
17
- <script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
18
- <script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
19
- <script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
20
- <script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>
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 id="metadata">
25
- <nav id="home-section" class="section">
26
- <h3 class="section-header">
27
- <a href="../index.html">Home</a>
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
- </h3>
31
- </nav>
32
-
33
+ </div>
34
+ </div>
33
35
 
34
- <nav id="search-section" class="section project-section" class="initially-hidden">
36
+ <div id="search-section" role="search" class="project-section initially-hidden">
35
37
  <form action="#" method="get" accept-charset="utf-8">
36
- <h3 class="section-header">
37
- <input type="text" name="search" placeholder="Search" id="search-field"
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
- </h3>
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
- </div>
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
- <div id="documentation">
177
- <h1 class="module">module MIDI::IO</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
- <div id="description" class="description">
69
+ <section class="description">
180
70
 
181
- </div><!-- description -->
71
+ </section>
182
72
 
183
73
 
184
74
 
@@ -192,16 +82,14 @@
192
82
 
193
83
 
194
84
 
195
- <!-- Methods -->
196
85
 
197
- </section><!-- 5Buntitled-5D -->
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">[Validate]</a>
204
- <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
205
- <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
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
 
@@ -2,292 +2,185 @@
2
2
 
3
3
  <html>
4
4
  <head>
5
- <meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
5
+ <meta charset="UTF-8">
6
6
 
7
7
  <title>class MIDI::IO::MIDIFile - midilib</title>
8
8
 
9
- <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet">
10
-
11
9
  <script type="text/javascript">
12
10
  var rdoc_rel_prefix = "../../";
13
11
  </script>
14
12
 
15
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
16
- <script type="text/javascript" charset="utf-8" src="../../js/navigation.js"></script>
17
- <script type="text/javascript" charset="utf-8" src="../../js/search_index.js"></script>
18
- <script type="text/javascript" charset="utf-8" src="../../js/search.js"></script>
19
- <script type="text/javascript" charset="utf-8" src="../../js/searcher.js"></script>
20
- <script type="text/javascript" charset="utf-8" src="../../js/darkfish.js"></script>
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 id="metadata">
25
- <nav id="home-section" class="section">
26
- <h3 class="section-header">
27
- <a href="../../index.html">Home</a>
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
- </h3>
31
- </nav>
32
-
33
+ </div>
34
+ </div>
33
35
 
34
- <nav id="search-section" class="section project-section" class="initially-hidden">
36
+ <div id="search-section" role="search" class="project-section initially-hidden">
35
37
  <form action="#" method="get" accept-charset="utf-8">
36
- <h3 class="section-header">
37
- <input type="text" name="search" placeholder="Search" id="search-field"
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
- </h3>
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
- <nav id="parent-class-section" class="section">
60
- <h3 class="section-header">Parent</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
- </nav>
63
+ </div>
65
64
 
66
65
 
66
+
67
67
  <!-- Method Quickref -->
68
- <nav id="method-list-section" class="section">
69
- <h3 class="section-header">Methods</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
- </nav>
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
- <nav id="classindex-section" class="section project-section">
180
- <h3 class="section-header">Class and Module Index</h3>
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
- <ul class="link-list">
183
-
184
- <li><a href="../../MIDI.html">MIDI</a>
185
-
186
- <li><a href="../../MIDI/ActiveSense.html">MIDI::ActiveSense</a>
187
-
188
- <li><a href="../../MIDI/ChannelEvent.html">MIDI::ChannelEvent</a>
189
-
190
- <li><a href="../../MIDI/ChannelPressure.html">MIDI::ChannelPressure</a>
191
-
192
- <li><a href="../../MIDI/Clock.html">MIDI::Clock</a>
193
-
194
- <li><a href="../../MIDI/Continue.html">MIDI::Continue</a>
195
-
196
- <li><a href="../../MIDI/Controller.html">MIDI::Controller</a>
197
-
198
- <li><a href="../../MIDI/Event.html">MIDI::Event</a>
199
-
200
- <li><a href="../../MIDI/IO.html">MIDI::IO</a>
201
-
202
- <li><a href="../../MIDI/IO/MIDIFile.html">MIDI::IO::MIDIFile</a>
203
-
204
- <li><a href="../../MIDI/IO/SeqReader.html">MIDI::IO::SeqReader</a>
205
-
206
- <li><a href="../../MIDI/IO/SeqWriter.html">MIDI::IO::SeqWriter</a>
207
-
208
- <li><a href="../../MIDI/KeySig.html">MIDI::KeySig</a>
209
-
210
- <li><a href="../../MIDI/MIDI.html">MIDI::MIDI</a>
211
-
212
- <li><a href="../../MIDI/MIDI/MIDI.html">MIDI::MIDI::MIDI</a>
213
-
214
- <li><a href="../../MIDI/MIDI/MIDI/Array.html">MIDI::MIDI::MIDI::Array</a>
215
-
216
- <li><a href="../../MIDI/Marker.html">MIDI::Marker</a>
217
-
218
- <li><a href="../../MIDI/Measure.html">MIDI::Measure</a>
219
-
220
- <li><a href="../../MIDI/Measures.html">MIDI::Measures</a>
221
-
222
- <li><a href="../../MIDI/MetaEvent.html">MIDI::MetaEvent</a>
223
-
224
- <li><a href="../../MIDI/NoteEvent.html">MIDI::NoteEvent</a>
225
-
226
- <li><a href="../../MIDI/NoteOff.html">MIDI::NoteOff</a>
227
-
228
- <li><a href="../../MIDI/NoteOff.html">MIDI::NoteOffEvent</a>
229
-
230
- <li><a href="../../MIDI/NoteOn.html">MIDI::NoteOn</a>
231
-
232
- <li><a href="../../MIDI/NoteOn.html">MIDI::NoteOnEvent</a>
233
-
234
- <li><a href="../../MIDI/PitchBend.html">MIDI::PitchBend</a>
235
-
236
- <li><a href="../../MIDI/PolyPressure.html">MIDI::PolyPressure</a>
237
-
238
- <li><a href="../../MIDI/ProgramChange.html">MIDI::ProgramChange</a>
239
-
240
- <li><a href="../../MIDI/Realtime.html">MIDI::Realtime</a>
241
-
242
- <li><a href="../../MIDI/Sequence.html">MIDI::Sequence</a>
243
-
244
- <li><a href="../../MIDI/SongPointer.html">MIDI::SongPointer</a>
245
-
246
- <li><a href="../../MIDI/SongSelect.html">MIDI::SongSelect</a>
247
-
248
- <li><a href="../../MIDI/Start.html">MIDI::Start</a>
249
-
250
- <li><a href="../../MIDI/Stop.html">MIDI::Stop</a>
251
-
252
- <li><a href="../../MIDI/SystemCommon.html">MIDI::SystemCommon</a>
253
-
254
- <li><a href="../../MIDI/SystemExclusive.html">MIDI::SystemExclusive</a>
255
-
256
- <li><a href="../../MIDI/SystemReset.html">MIDI::SystemReset</a>
257
-
258
- <li><a href="../../MIDI/Tempo.html">MIDI::Tempo</a>
259
-
260
- <li><a href="../../MIDI/TimeSig.html">MIDI::TimeSig</a>
261
-
262
- <li><a href="../../MIDI/Track.html">MIDI::Track</a>
263
-
264
- <li><a href="../../MIDI/TuneRequest.html">MIDI::TuneRequest</a>
265
-
266
- <li><a href="../../MIDI/Utils.html">MIDI::Utils</a>
267
-
268
- <li><a href="../../IO.html">IO</a>
269
-
270
- </ul>
271
- </nav>
272
-
273
- </div>
274
- </nav>
275
-
276
- <div id="documentation">
277
- <h1 class="class">class MIDI::IO::MIDIFile</h1>
278
-
279
- <div id="description" class="description">
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 "The rest of these are NOPs by default" and "End of NOPs" comments).</p>
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
- </div><!-- description -->
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
- <!-- Constants -->
302
- <section id="constants-list" class="section">
303
- <h3 class="section-header">Constants</h3>
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 class="description">
202
+ <dd>
309
203
 
310
204
 
311
205
  <dt id="MTrk_BYTE_ARRAY">MTrk_BYTE_ARRAY
312
206
 
313
- <dd class="description">
207
+ <dd>
314
208
 
315
209
 
316
210
  <dt id="NUM_DATA_BYTES">NUM_DATA_BYTES
317
211
 
318
- <dd class="description"><p>This array is indexed by the high half of a status byte. Its value is
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's not a channel message.</p>
214
+ it&#39;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
- <!-- Attributes -->
329
- <section id="attribute-method-details" class="method-section section">
330
- <h3 class="section-header">Attributes</h3>
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><!-- attribute-method-details -->
332
+ </section>
438
333
 
439
334
 
440
- <!-- Methods -->
441
335
 
442
- <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
443
- <h3 class="section-header">Public Class Methods</h3>
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
- <span class="ruby-ivar">@no_merge</span> = <span class="ruby-keyword">false</span>
465
- <span class="ruby-ivar">@skip_init</span> = <span class="ruby-keyword">true</span>
466
- <span class="ruby-ivar">@io</span> = <span class="ruby-keyword">nil</span>
467
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
468
- <span class="ruby-ivar">@msg_buf</span> = <span class="ruby-keyword">nil</span>
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><!-- new-source -->
369
+ </div>
471
370
 
472
371
  </div>
473
372
 
474
373
 
475
374
 
476
375
 
477
- </div><!-- new-method -->
376
+ </div>
478
377
 
479
378
 
480
- </section><!-- public-class-method-details -->
379
+ </section>
481
380
 
482
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
483
- <h3 class="section-header">Public Instance Methods</h3>
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><!-- arbitrary-source -->
409
+ </div>
506
410
 
507
411
  </div>
508
412
 
509
413
 
510
414
 
511
415
 
512
- </div><!-- arbitrary-method -->
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 294</span>
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
- <span class="ruby-identifier">error</span>(<span class="ruby-identifier">sprintf</span>(<span class="ruby-string">&quot;unexpected byte: 0x%02x&quot;</span>, <span class="ruby-identifier">c</span>))
440
+ <span class="ruby-identifier">error</span>(<span class="ruby-identifier">sprintf</span>(<span class="ruby-string">&quot;unexpected byte: 0x%02x&quot;</span>, <span class="ruby-identifier">c</span>))
534
441
  <span class="ruby-keyword">end</span></pre>
535
- </div><!-- bad_byte-source -->
442
+ </div>
536
443
 
537
444
  </div>
538
445
 
539
446
 
540
447
 
541
448
 
542
- </div><!-- bad_byte-method -->
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 335</span>
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
- <span class="ruby-ivar">@raw_data</span> = []
564
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">running</span>
565
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c1</span>
566
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c2</span>
567
-
568
- <span class="ruby-identifier">chan</span> = <span class="ruby-identifier">status</span> &amp; <span class="ruby-value">0x0f</span>
569
-
570
- <span class="ruby-keyword">case</span> (<span class="ruby-identifier">status</span> &amp; <span class="ruby-value">0xf0</span>)
571
- <span class="ruby-keyword">when</span> <span class="ruby-constant">NOTE_OFF</span>
572
- <span class="ruby-identifier">note_off</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
573
- <span class="ruby-keyword">when</span> <span class="ruby-constant">NOTE_ON</span>
574
- <span class="ruby-identifier">note_on</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
575
- <span class="ruby-keyword">when</span> <span class="ruby-constant">POLY_PRESSURE</span>
576
- <span class="ruby-identifier">pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
577
- <span class="ruby-keyword">when</span> <span class="ruby-constant">CONTROLLER</span>
578
- <span class="ruby-identifier">controller</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
579
- <span class="ruby-keyword">when</span> <span class="ruby-constant">PITCH_BEND</span>
580
- <span class="ruby-identifier">pitch_bend</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>, <span class="ruby-identifier">c2</span>)
581
- <span class="ruby-keyword">when</span> <span class="ruby-constant">PROGRAM_CHANGE</span>
582
- <span class="ruby-identifier">program</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>)
583
- <span class="ruby-keyword">when</span> <span class="ruby-constant">CHANNEL_PRESSURE</span>
584
- <span class="ruby-identifier">chan_pressure</span>(<span class="ruby-identifier">chan</span>, <span class="ruby-identifier">c1</span>)
585
- <span class="ruby-keyword">else</span>
586
- <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;illegal chan message 0x#{'%02x' % (status &amp; 0xf0)}\n&quot;</span>)
587
- <span class="ruby-keyword">end</span>
473
+ <span class="ruby-ivar">@raw_data</span> = []
474
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">running</span>
475
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c1</span>
476
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</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">&amp;</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">&amp;</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">&quot;illegal chan message 0x#{&#39;%02x&#39; % (status &amp; 0xf0)}\n&quot;</span>)
497
+ <span class="ruby-keyword">end</span>
588
498
  <span class="ruby-keyword">end</span></pre>
589
- </div><!-- chan_message-source -->
499
+ </div>
590
500
 
591
501
  </div>
592
502
 
593
503
 
594
504
 
595
505
 
596
- </div><!-- chan_message-method -->
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><!-- chan_pressure-source -->
531
+ </div>
619
532
 
620
533
  </div>
621
534
 
622
535
 
623
536
 
624
537
 
625
- </div><!-- chan_pressure-method -->
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><!-- controller-source -->
563
+ </div>
648
564
 
649
565
  </div>
650
566
 
651
567
 
652
568
 
653
569
 
654
- </div><!-- controller-method -->
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><!-- end_track-source -->
595
+ </div>
677
596
 
678
597
  </div>
679
598
 
680
599
 
681
600
 
682
601
 
683
- </div><!-- end_track-method -->
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><!-- eot-source -->
627
+ </div>
706
628
 
707
629
  </div>
708
630
 
709
631
 
710
632
 
711
633
 
712
- </div><!-- eot-method -->
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
- <span class="ruby-identifier">loc</span> = <span class="ruby-ivar">@io</span>.<span class="ruby-identifier">tell</span>() <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
734
- <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;#{self.class.name} error at byte #{loc} (0x#{'%02x' % loc}): #{str}&quot;</span>
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">&quot;#{self.class.name} error at byte #{loc} (0x#{&#39;%02x&#39; % loc}): #{str}&quot;</span>
735
660
  <span class="ruby-keyword">end</span></pre>
736
- </div><!-- error-source -->
661
+ </div>
737
662
 
738
663
  </div>
739
664
 
740
665
 
741
666
 
742
667
 
743
- </div><!-- error-method -->
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
- <span class="ruby-identifier">buf</span> = []
765
- <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">getc</span>() }
766
- <span class="ruby-identifier">buf</span>
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">&lt;&lt;</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><!-- get_bytes-source -->
696
+ </div>
769
697
 
770
698
  </div>
771
699
 
772
700
 
773
701
 
774
702
 
775
- </div><!-- get_bytes-method -->
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><!-- getc-source -->
731
+ </div>
801
732
 
802
733
  </div>
803
734
 
804
735
 
805
736
 
806
737
 
807
- </div><!-- getc-method -->
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 370</span>
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
- <span class="ruby-ivar">@raw_data</span> = <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">dup</span>()
829
- <span class="ruby-identifier">arbitrary</span>(<span class="ruby-identifier">msg</span>)
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><!-- handle_arbitrary-source -->
765
+ </div>
832
766
 
833
767
  </div>
834
768
 
835
769
 
836
770
 
837
771
 
838
- </div><!-- handle_arbitrary-method -->
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 364</span>
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
- <span class="ruby-ivar">@raw_data</span> = <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">dup</span>()
860
- <span class="ruby-identifier">sysex</span>(<span class="ruby-identifier">msg</span>)
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><!-- handle_sysex-source -->
799
+ </div>
863
800
 
864
801
  </div>
865
802
 
866
803
 
867
804
 
868
805
 
869
- </div><!-- handle_sysex-method -->
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><!-- header-source -->
831
+ </div>
892
832
 
893
833
  </div>
894
834
 
895
835
 
896
836
 
897
837
 
898
- </div><!-- header-method -->
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><!-- key_signature-source -->
863
+ </div>
921
864
 
922
865
  </div>
923
866
 
924
867
 
925
868
 
926
869
 
927
- </div><!-- key_signature-method -->
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 299</span>
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
- <span class="ruby-identifier">m</span> = <span class="ruby-identifier">msg</span>() <span class="ruby-comment"># Copy of internal message buffer</span>
949
-
950
- <span class="ruby-comment"># Create raw data array</span>
951
- <span class="ruby-ivar">@raw_data</span> = []
952
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">META_EVENT</span>
953
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">type</span>
954
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@raw_var_num_data</span>
955
- <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>
956
- <span class="ruby-ivar">@raw_data</span>.<span class="ruby-identifier">flatten!</span>
957
-
958
- <span class="ruby-keyword">case</span> <span class="ruby-identifier">type</span>
959
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_NUM</span>
960
- <span class="ruby-identifier">sequence_number</span>((<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>])
961
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TEXT</span>, <span class="ruby-constant">META_COPYRIGHT</span>, <span class="ruby-constant">META_SEQ_NAME</span>, <span class="ruby-constant">META_INSTRUMENT</span>,
962
- <span class="ruby-constant">META_LYRIC</span>, <span class="ruby-constant">META_MARKER</span>, <span class="ruby-constant">META_CUE</span>, <span class="ruby-value">0x08</span>, <span class="ruby-value">0x09</span>, <span class="ruby-value">0x0a</span>,
963
- <span class="ruby-value">0x0b</span>, <span class="ruby-value">0x0c</span>, <span class="ruby-value">0x0d</span>, <span class="ruby-value">0x0e</span>, <span class="ruby-value">0x0f</span>
964
- <span class="ruby-identifier">text</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
965
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TRACK_END</span>
966
- <span class="ruby-identifier">eot</span>()
967
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SET_TEMPO</span>
968
- <span class="ruby-identifier">tempo</span>((<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>])
969
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SMPTE</span>
970
- <span class="ruby-identifier">smpte</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">4</span>])
971
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_TIME_SIG</span>
972
- <span class="ruby-identifier">time_signature</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">3</span>])
973
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_KEY_SIG</span>
974
- <span class="ruby-identifier">key_signature</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">false</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">true</span>)
975
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_SEQ_SPECIF</span>
976
- <span class="ruby-identifier">sequencer_specific</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
977
- <span class="ruby-keyword">else</span>
978
- <span class="ruby-identifier">meta_misc</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">m</span>)
979
- <span class="ruby-keyword">end</span>
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">&lt;&lt;</span> <span class="ruby-constant">META_EVENT</span>
899
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">type</span>
900
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@raw_var_num_data</span>
901
+ <span class="ruby-ivar">@raw_data</span> <span class="ruby-operator">&lt;&lt;</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">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>])
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">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>])
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><!-- meta_event-source -->
927
+ </div>
982
928
 
983
929
  </div>
984
930
 
985
931
 
986
932
 
987
933
 
988
- </div><!-- meta_event-method -->
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><!-- meta_misc-source -->
959
+ </div>
1011
960
 
1012
961
  </div>
1013
962
 
1014
963
 
1015
964
 
1016
965
 
1017
- </div><!-- meta_misc-method -->
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 460</span>
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
- <span class="ruby-keyword">return</span> <span class="ruby-ivar">@msg_buf</span>.<span class="ruby-identifier">dup</span>()
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><!-- msg-source -->
992
+ </div>
1041
993
 
1042
994
  </div>
1043
995
 
1044
996
 
1045
997
 
1046
998
 
1047
- </div><!-- msg-method -->
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 442</span>
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
- <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1023
+ <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1069
1024
  <span class="ruby-keyword">end</span></pre>
1070
- </div><!-- msg_add-source -->
1025
+ </div>
1071
1026
 
1072
1027
  </div>
1073
1028
 
1074
1029
 
1075
1030
 
1076
1031
 
1077
- </div><!-- msg_add-method -->
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 455</span>
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
- <span class="ruby-ivar">@msg_buf</span> = []
1056
+ <span class="ruby-ivar">@msg_buf</span> = []
1099
1057
  <span class="ruby-keyword">end</span></pre>
1100
- </div><!-- msg_init-source -->
1058
+ </div>
1101
1059
 
1102
1060
  </div>
1103
1061
 
1104
1062
 
1105
1063
 
1106
1064
 
1107
- </div><!-- msg_init-method -->
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's an EOX or not).</p>
1082
+ (so we can see if it&#39;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 448</span>
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
- <span class="ruby-ivar">@msg_buf</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">n_bytes</span>)
1130
- <span class="ruby-ivar">@msg_buf</span>.<span class="ruby-identifier">flatten!</span>
1131
- <span class="ruby-keyword">return</span> <span class="ruby-ivar">@msg_buf</span>[<span class="ruby-value">-1</span>]
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><!-- msg_read-source -->
1094
+ </div>
1134
1095
 
1135
1096
  </div>
1136
1097
 
1137
1098
 
1138
1099
 
1139
1100
 
1140
- </div><!-- msg_read-method -->
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><!-- note_off-source -->
1126
+ </div>
1163
1127
 
1164
1128
  </div>
1165
1129
 
1166
1130
 
1167
1131
 
1168
1132
 
1169
- </div><!-- note_off-method -->
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><!-- note_on-source -->
1158
+ </div>
1192
1159
 
1193
1160
  </div>
1194
1161
 
1195
1162
 
1196
1163
 
1197
1164
 
1198
- </div><!-- note_on-method -->
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><!-- pitch_bend-source -->
1190
+ </div>
1221
1191
 
1222
1192
  </div>
1223
1193
 
1224
1194
 
1225
1195
 
1226
1196
 
1227
- </div><!-- pitch_bend-method -->
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><!-- pressure-source -->
1222
+ </div>
1250
1223
 
1251
1224
  </div>
1252
1225
 
1253
1226
 
1254
1227
 
1255
1228
 
1256
- </div><!-- pressure-method -->
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><!-- program-source -->
1254
+ </div>
1279
1255
 
1280
1256
  </div>
1281
1257
 
1282
1258
 
1283
1259
 
1284
1260
 
1285
- </div><!-- program-method -->
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 376</span>
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
- <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">getc</span>()
1307
- <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7fff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x8000</span>).<span class="ruby-identifier">nonzero?</span>
1308
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
1285
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">getc</span>()
1286
+ <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7fff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x8000</span>).<span class="ruby-identifier">nonzero?</span>
1287
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
1309
1288
  <span class="ruby-keyword">end</span></pre>
1310
- </div><!-- read16-source -->
1289
+ </div>
1311
1290
 
1312
1291
  </div>
1313
1292
 
1314
1293
 
1315
1294
 
1316
1295
 
1317
- </div><!-- read16-method -->
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 383</span>
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
- <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span>
1339
- <span class="ruby-identifier">getc</span>()
1340
- <span class="ruby-identifier">val</span> = <span class="ruby-operator">-</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7fffffff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x80000000</span>).<span class="ruby-identifier">nonzero?</span>
1341
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
1320
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">24</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">+</span>
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">&amp;</span> <span class="ruby-value">0x7fffffff</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x80000000</span>).<span class="ruby-identifier">nonzero?</span>
1323
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
1342
1324
  <span class="ruby-keyword">end</span></pre>
1343
- </div><!-- read32-source -->
1325
+ </div>
1344
1326
 
1345
1327
  </div>
1346
1328
 
1347
1329
 
1348
1330
 
1349
1331
 
1350
- </div><!-- read32-method -->
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
- <span class="ruby-identifier">error</span>(<span class="ruby-string">'must specify non-nil input stream'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">io</span>.<span class="ruby-identifier">nil?</span>
1373
- <span class="ruby-ivar">@io</span> = <span class="ruby-identifier">io</span>
1357
+ <span class="ruby-identifier">error</span>(<span class="ruby-string">&#39;must specify non-nil input stream&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">io</span>.<span class="ruby-identifier">nil?</span>
1358
+ <span class="ruby-ivar">@io</span> = <span class="ruby-identifier">io</span>
1374
1359
 
1375
- <span class="ruby-identifier">ntrks</span> = <span class="ruby-identifier">read_header</span>()
1376
- <span class="ruby-identifier">error</span>(<span class="ruby-string">'No tracks!'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">ntrks</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0</span>
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">&#39;No tracks!&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">ntrks</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0</span>
1377
1362
 
1378
- <span class="ruby-identifier">ntrks</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">read_track</span>() }
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><!-- read_from-source -->
1365
+ </div>
1381
1366
 
1382
1367
  </div>
1383
1368
 
1384
1369
 
1385
1370
 
1386
1371
 
1387
- </div><!-- read_from-method -->
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 190</span>
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
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1409
- <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-constant">MThd_BYTE_ARRAY</span>, <span class="ruby-ivar">@skip_init</span>) <span class="ruby-comment"># &quot;MThd&quot;</span>
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"># &quot;MThd&quot;</span>
1410
1398
 
1411
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-identifier">read32</span>()
1412
- <span class="ruby-identifier">format</span> = <span class="ruby-identifier">read16</span>()
1413
- <span class="ruby-identifier">ntrks</span> = <span class="ruby-identifier">read16</span>()
1414
- <span class="ruby-identifier">division</span> = <span class="ruby-identifier">read16</span>()
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
- <span class="ruby-identifier">header</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">ntrks</span>, <span class="ruby-identifier">division</span>)
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
- <span class="ruby-comment"># Flush any extra stuff, in case the length of the header is not 6</span>
1419
- <span class="ruby-keyword">if</span> <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1420
- <span class="ruby-identifier">get_bytes</span>(<span class="ruby-ivar">@bytes_to_be_read</span>)
1421
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1422
- <span class="ruby-keyword">end</span>
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">&gt;</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
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">ntrks</span>
1412
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">ntrks</span>
1425
1413
  <span class="ruby-keyword">end</span></pre>
1426
- </div><!-- read_header-source -->
1414
+ </div>
1427
1415
 
1428
1416
  </div>
1429
1417
 
1430
1418
 
1431
1419
 
1432
1420
 
1433
- </div><!-- read_header-method -->
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 'MThd' or 'MTrk' header string. If skip is true, attempt to
1448
- skip initial trash. If there is an error, <a
1437
+ <p>Read through &#39;MThd&#39; or &#39;MTrk&#39; 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
- <span class="ruby-identifier">b</span> = []
1457
- <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span>
1458
- <span class="ruby-keyword">while</span> <span class="ruby-keyword">true</span>
1459
- <span class="ruby-identifier">data</span> = <span class="ruby-identifier">get_bytes</span>(<span class="ruby-identifier">bytes_to_read</span>)
1460
- <span class="ruby-identifier">b</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">data</span>
1461
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">4</span>
1462
- <span class="ruby-identifier">error</span>(<span class="ruby-string">&quot;unexpected EOF while trying to read header&quot;</span> <span class="ruby-operator">+</span>
1463
- <span class="ruby-node">&quot; string #{s}&quot;</span>)
1464
- <span class="ruby-keyword">end</span>
1465
-
1466
- <span class="ruby-comment"># See if we found the bytes we're looking for</span>
1467
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">bytes</span>
1468
-
1469
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">skip</span> <span class="ruby-comment"># Try again with the next char</span>
1470
- <span class="ruby-identifier">i</span> = <span class="ruby-identifier">b</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">index</span>(<span class="ruby-identifier">bytes</span>[<span class="ruby-value">0</span>])
1471
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">i</span>.<span class="ruby-identifier">nil?</span>
1472
- <span class="ruby-identifier">b</span> = []
1473
- <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span>
1474
- <span class="ruby-keyword">else</span>
1475
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
1476
- <span class="ruby-identifier">bytes_to_read</span> = <span class="ruby-value">4</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>
1477
- <span class="ruby-keyword">end</span>
1478
- <span class="ruby-keyword">else</span>
1479
- <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;header string #{bytes.collect{|b| b.chr}.join} not found&quot;</span>)
1480
- <span class="ruby-keyword">end</span>
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">&lt;</span> <span class="ruby-value">4</span>
1453
+ <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;unexpected EOF while trying to read header string #{s}&quot;</span>)
1481
1454
  <span class="ruby-keyword">end</span>
1455
+
1456
+ <span class="ruby-comment"># See if we found the bytes we&#39;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">&quot;header string #{bytes.collect{|b| b.chr}.join} not found&quot;</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><!-- read_mt_header_string-source -->
1473
+ </div>
1484
1474
 
1485
1475
  </div>
1486
1476
 
1487
1477
 
1488
1478
 
1489
1479
 
1490
- </div><!-- read_mt_header_string-method -->
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 211</span>
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
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">c1</span> = <span class="ruby-identifier">type</span> = <span class="ruby-identifier">needed</span> = <span class="ruby-value">0</span>
1512
- <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">false</span> <span class="ruby-comment"># True if last msg was unfinished</span>
1513
- <span class="ruby-identifier">running</span> = <span class="ruby-keyword">false</span> <span class="ruby-comment"># True when running status used</span>
1514
- <span class="ruby-identifier">status</span> = <span class="ruby-value">0</span> <span class="ruby-comment"># (Possibly running) status byte</span>
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
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-value">0</span>
1517
- <span class="ruby-identifier">read_mt_header_string</span>(<span class="ruby-constant">MTrk_BYTE_ARRAY</span>, <span class="ruby-keyword">false</span>)
1518
-
1519
- <span class="ruby-ivar">@bytes_to_be_read</span> = <span class="ruby-identifier">read32</span>()
1520
- <span class="ruby-ivar">@curr_ticks</span> = <span class="ruby-ivar">@ticks_so_far</span> = <span class="ruby-value">0</span>
1521
-
1522
- <span class="ruby-identifier">start_track</span>()
1523
-
1524
- <span class="ruby-keyword">while</span> <span class="ruby-ivar">@bytes_to_be_read</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1525
- <span class="ruby-ivar">@curr_ticks</span> = <span class="ruby-identifier">read_var_len</span>() <span class="ruby-comment"># Delta time</span>
1526
- <span class="ruby-ivar">@ticks_so_far</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@curr_ticks</span>
1527
-
1528
- <span class="ruby-comment"># Copy raw var num data into raw time stamp data</span>
1529
- <span class="ruby-ivar">@raw_time_stamp_data</span> = <span class="ruby-ivar">@raw_var_num_data</span>.<span class="ruby-identifier">dup</span>()
1530
-
1531
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>() <span class="ruby-comment"># Read first byte</span>
1532
-
1533
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">sysex_continue</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">EOX</span>
1534
- <span class="ruby-identifier">error</span>(<span class="ruby-string">&quot;didn't find expected continuation of a sysex&quot;</span>)
1535
- <span class="ruby-keyword">end</span>
1536
-
1537
- <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> &amp; <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span> <span class="ruby-comment"># Running status?</span>
1538
- <span class="ruby-identifier">error</span>(<span class="ruby-string">'unexpected running status'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">status</span>.<span class="ruby-identifier">zero?</span>
1539
- <span class="ruby-identifier">running</span> = <span class="ruby-keyword">true</span>
1540
- <span class="ruby-keyword">else</span>
1541
- <span class="ruby-identifier">status</span> = <span class="ruby-identifier">c</span>
1542
- <span class="ruby-identifier">running</span> = <span class="ruby-keyword">false</span>
1543
- <span class="ruby-keyword">end</span>
1544
-
1545
- <span class="ruby-identifier">needed</span> = <span class="ruby-constant">NUM_DATA_BYTES</span>[(<span class="ruby-identifier">status</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">4</span>) &amp; <span class="ruby-value">0x0f</span>]
1546
-
1547
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">needed</span>.<span class="ruby-identifier">nonzero?</span> <span class="ruby-comment"># i.e., is it a channel message?</span>
1548
- <span class="ruby-identifier">c1</span> = <span class="ruby-identifier">running</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">:</span> (<span class="ruby-identifier">getc</span>() &amp; <span class="ruby-value">0x7f</span>)
1549
-
1550
- <span class="ruby-comment"># The &quot;&amp; 0x7f&quot; here may seem unnecessary, but I've seen</span>
1551
- <span class="ruby-comment"># &quot;bad&quot; MIDI files that had, for example, volume bytes</span>
1552
- <span class="ruby-comment"># with the upper bit set. This code should not harm</span>
1553
- <span class="ruby-comment"># proper data.</span>
1554
- <span class="ruby-identifier">chan_message</span>(<span class="ruby-identifier">running</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">c1</span>,
1555
- (<span class="ruby-identifier">needed</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>) <span class="ruby-operator">?</span> (<span class="ruby-identifier">getc</span>() &amp; <span class="ruby-value">0x7f</span>) <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
1556
- <span class="ruby-keyword">next</span>
1557
- <span class="ruby-keyword">end</span>
1558
-
1559
- <span class="ruby-keyword">case</span> <span class="ruby-identifier">c</span>
1560
- <span class="ruby-keyword">when</span> <span class="ruby-constant">META_EVENT</span> <span class="ruby-comment"># Meta event</span>
1561
- <span class="ruby-identifier">type</span> = <span class="ruby-identifier">getc</span>()
1562
- <span class="ruby-identifier">msg_init</span>()
1563
- <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>())
1564
- <span class="ruby-identifier">meta_event</span>(<span class="ruby-identifier">type</span>)
1565
- <span class="ruby-keyword">when</span> <span class="ruby-constant">SYSEX</span> <span class="ruby-comment"># Start of system exclusive</span>
1566
- <span class="ruby-identifier">msg_init</span>()
1567
- <span class="ruby-identifier">msg_add</span>(<span class="ruby-constant">SYSEX</span>)
1568
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>())
1569
-
1570
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-constant">EOX</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@no_merge</span>
1571
- <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>())
1572
- <span class="ruby-keyword">else</span>
1573
- <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">true</span>
1574
- <span class="ruby-keyword">end</span>
1575
- <span class="ruby-keyword">when</span> <span class="ruby-constant">EOX</span> <span class="ruby-comment"># Sysex continuation or arbitrary stuff</span>
1576
- <span class="ruby-identifier">msg_init</span>() <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sysex_continue</span>
1577
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">msg_read</span>(<span class="ruby-identifier">read_var_len</span>())
1578
-
1579
- <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sysex_continue</span>
1580
- <span class="ruby-identifier">handle_arbitrary</span>(<span class="ruby-identifier">msg</span>())
1581
- <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-constant">EOX</span>
1582
- <span class="ruby-identifier">handle_sysex</span>(<span class="ruby-identifier">msg</span>())
1583
- <span class="ruby-identifier">sysex_continue</span> = <span class="ruby-keyword">false</span>
1584
- <span class="ruby-keyword">end</span>
1585
- <span class="ruby-keyword">else</span>
1586
- <span class="ruby-identifier">bad_byte</span>(<span class="ruby-identifier">c</span>)
1587
- <span class="ruby-keyword">end</span>
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">&gt;</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">&amp;&amp;</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">&quot;didn&#39;t find expected continuation of a sysex&quot;</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">&amp;</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">&#39;unexpected running status&#39;</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">&gt;&gt;</span> <span class="ruby-value">4</span>) <span class="ruby-operator">&amp;</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">&amp;</span> <span class="ruby-value">0x7f</span>)
1542
+
1543
+ <span class="ruby-comment"># The &quot;&amp; 0x7f&quot; here may seem unnecessary, but I&#39;ve seen</span>
1544
+ <span class="ruby-comment"># &quot;bad&quot; 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">&gt;</span> <span class="ruby-value">1</span>) <span class="ruby-operator">?</span> (<span class="ruby-identifier">getc</span>() <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>) <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
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
- <span class="ruby-identifier">end_track</span>()
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><!-- read_track-source -->
1584
+ </div>
1592
1585
 
1593
1586
  </div>
1594
1587
 
1595
1588
 
1596
1589
 
1597
1590
 
1598
- </div><!-- read_track-method -->
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 391</span>
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
- <span class="ruby-ivar">@raw_var_num_data</span> = []
1620
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>()
1621
- <span class="ruby-ivar">@raw_var_num_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1622
- <span class="ruby-identifier">val</span> = <span class="ruby-identifier">c</span>
1623
- <span class="ruby-keyword">if</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x80</span>).<span class="ruby-identifier">nonzero?</span>
1624
- <span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;=</span> <span class="ruby-value">0x7f</span>
1625
- <span class="ruby-keyword">while</span> <span class="ruby-keyword">true</span>
1626
- <span class="ruby-identifier">c</span> = <span class="ruby-identifier">getc</span>()
1627
- <span class="ruby-ivar">@raw_var_num_data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1628
- <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">7</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">c</span> &amp; <span class="ruby-value">0x7f</span>)
1629
- <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> &amp; <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span>
1630
- <span class="ruby-keyword">end</span>
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">&lt;&lt;</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">&amp;</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">nonzero?</span>
1620
+ <span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;=</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">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1624
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">7</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>)
1625
+ <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x80</span>).<span class="ruby-identifier">zero?</span>
1631
1626
  <span class="ruby-keyword">end</span>
1632
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">val</span>
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><!-- read_var_len-source -->
1630
+ </div>
1635
1631
 
1636
1632
  </div>
1637
1633
 
1638
1634
 
1639
1635
 
1640
1636
 
1641
- </div><!-- read_var_len-method -->
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><!-- sequence_number-source -->
1662
+ </div>
1664
1663
 
1665
1664
  </div>
1666
1665
 
1667
1666
 
1668
1667
 
1669
1668
 
1670
- </div><!-- sequence_number-method -->
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><!-- sequencer_specific-source -->
1694
+ </div>
1693
1695
 
1694
1696
  </div>
1695
1697
 
1696
1698
 
1697
1699
 
1698
1700
 
1699
- </div><!-- sequencer_specific-method -->
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><!-- smpte-source -->
1726
+ </div>
1722
1727
 
1723
1728
  </div>
1724
1729
 
1725
1730
 
1726
1731
 
1727
1732
 
1728
- </div><!-- smpte-method -->
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><!-- start_track-source -->
1758
+ </div>
1751
1759
 
1752
1760
  </div>
1753
1761
 
1754
1762
 
1755
1763
 
1756
1764
 
1757
- </div><!-- start_track-method -->
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><!-- sysex-source -->
1790
+ </div>
1780
1791
 
1781
1792
  </div>
1782
1793
 
1783
1794
 
1784
1795
 
1785
1796
 
1786
- </div><!-- sysex-method -->
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><!-- tempo-source -->
1822
+ </div>
1809
1823
 
1810
1824
  </div>
1811
1825
 
1812
1826
 
1813
1827
 
1814
1828
 
1815
- </div><!-- tempo-method -->
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><!-- text-source -->
1854
+ </div>
1838
1855
 
1839
1856
  </div>
1840
1857
 
1841
1858
 
1842
1859
 
1843
1860
 
1844
- </div><!-- text-method -->
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><!-- time_signature-source -->
1886
+ </div>
1867
1887
 
1868
1888
  </div>
1869
1889
 
1870
1890
 
1871
1891
 
1872
1892
 
1873
- </div><!-- time_signature-method -->
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 409</span>
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
- <span class="ruby-identifier">val</span> = (<span class="ruby-operator">-</span><span class="ruby-identifier">val</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x8000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
1895
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) &amp; <span class="ruby-value">0xff</span>)
1896
- <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0xff</span>)
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">&lt;</span> <span class="ruby-value">0</span>
1918
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1919
+ <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1897
1920
  <span class="ruby-keyword">end</span></pre>
1898
- </div><!-- write16-source -->
1921
+ </div>
1899
1922
 
1900
1923
  </div>
1901
1924
 
1902
1925
 
1903
1926
 
1904
1927
 
1905
- </div><!-- write16-method -->
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 416</span>
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
- <span class="ruby-identifier">val</span> = (<span class="ruby-operator">-</span><span class="ruby-identifier">val</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80000000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
1927
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>) &amp; <span class="ruby-value">0xff</span>)
1928
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) &amp; <span class="ruby-value">0xff</span>)
1929
- <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) &amp; <span class="ruby-value">0xff</span>)
1930
- <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0xff</span>)
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">&lt;</span> <span class="ruby-value">0</span>
1953
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">24</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1954
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">16</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1955
+ <span class="ruby-identifier">putc</span>((<span class="ruby-identifier">val</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">8</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1956
+ <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0xff</span>)
1931
1957
  <span class="ruby-keyword">end</span></pre>
1932
- </div><!-- write32-source -->
1958
+ </div>
1933
1959
 
1934
1960
  </div>
1935
1961
 
1936
1962
 
1937
1963
 
1938
1964
 
1939
- </div><!-- write32-method -->
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 425</span>
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
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">zero?</span>
1961
- <span class="ruby-identifier">putc</span>(<span class="ruby-value">0</span>)
1962
- <span class="ruby-keyword">return</span>
1963
- <span class="ruby-keyword">end</span>
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
- <span class="ruby-identifier">buf</span> = []
1994
+ <span class="ruby-identifier">buf</span> = []
1966
1995
 
1967
- <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7f</span>)
1968
- <span class="ruby-keyword">while</span> (<span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;&gt;=</span> <span class="ruby-value">7</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1969
- <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x7f</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80</span>
1970
- <span class="ruby-keyword">end</span>
1996
+ <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>)
1997
+ <span class="ruby-keyword">while</span> (<span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;&gt;=</span> <span class="ruby-value">7</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
1998
+ <span class="ruby-identifier">buf</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">val</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x7f</span>) <span class="ruby-operator">|</span> <span class="ruby-value">0x80</span>
1999
+ <span class="ruby-keyword">end</span>
1971
2000
 
1972
- <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">putc</span>(<span class="ruby-identifier">b</span>) }
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><!-- write_var_len-source -->
2003
+ </div>
1975
2004
 
1976
2005
  </div>
1977
2006
 
1978
2007
 
1979
2008
 
1980
2009
 
1981
- </div><!-- write_var_len-method -->
2010
+ </div>
1982
2011
 
1983
2012
 
1984
- </section><!-- public-instance-method-details -->
2013
+ </section>
1985
2014
 
1986
- </section><!-- 5Buntitled-5D -->
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">[Validate]</a>
1993
- <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
1994
- <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
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