midilib 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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