midilib 2.0.4 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ChangeLog +2 -1
- data/Credits +44 -2
- data/README.rdoc +13 -9
- data/Rakefile +36 -53
- data/TODO.rdoc +13 -2
- data/examples/from_scratch.rb +4 -6
- data/examples/measures_mbt.rb +11 -11
- data/examples/print_program_changes.rb +11 -11
- data/examples/reader2text.rb +191 -191
- data/examples/seq2text.rb +18 -18
- data/examples/split.rb +21 -20
- data/examples/strings.rb +15 -15
- data/examples/transpose.rb +41 -42
- data/html/MIDI/ActiveSense.html +89 -213
- data/html/MIDI/ChannelEvent.html +95 -224
- data/html/MIDI/ChannelPressure.html +103 -241
- data/html/MIDI/Clock.html +89 -213
- data/html/MIDI/Continue.html +89 -213
- data/html/MIDI/Controller.html +105 -246
- data/html/MIDI/Event.html +134 -358
- data/html/MIDI/IO/MIDIFile.html +544 -1148
- data/html/MIDI/IO/SeqReader.html +273 -577
- data/html/MIDI/IO/SeqWriter.html +233 -439
- data/html/MIDI/IO.html +48 -164
- data/html/MIDI/KeySig.html +148 -291
- data/html/MIDI/Marker.html +73 -192
- data/html/MIDI/Measure.html +104 -267
- data/html/MIDI/Measures.html +106 -259
- data/html/MIDI/MetaEvent.html +171 -352
- data/html/MIDI/NoteEvent.html +114 -276
- data/html/MIDI/NoteOff.html +95 -223
- data/html/MIDI/NoteOn.html +95 -223
- data/html/MIDI/PitchBend.html +104 -242
- data/html/MIDI/PolyPressure.html +102 -246
- data/html/MIDI/ProgramChange.html +103 -241
- data/html/MIDI/Realtime.html +96 -230
- data/html/MIDI/Sequence.html +256 -576
- data/html/MIDI/SongPointer.html +104 -242
- data/html/MIDI/SongSelect.html +103 -241
- data/html/MIDI/Start.html +89 -213
- data/html/MIDI/Stop.html +89 -213
- data/html/MIDI/SystemCommon.html +73 -192
- data/html/MIDI/SystemExclusive.html +106 -244
- data/html/MIDI/SystemReset.html +89 -213
- data/html/MIDI/Tempo.html +127 -309
- data/html/MIDI/TimeSig.html +119 -300
- data/html/MIDI/Track.html +214 -494
- data/html/MIDI/TuneRequest.html +96 -230
- data/html/MIDI/Utils.html +91 -233
- data/html/MIDI.html +142 -526
- data/html/Object.html +197 -0
- data/html/README_rdoc.html +280 -486
- data/html/TODO_rdoc.html +68 -145
- data/html/created.rid +15 -14
- data/html/css/fonts.css +167 -0
- data/html/css/rdoc.css +639 -0
- data/html/fonts/Lato-Light.ttf +0 -0
- data/html/fonts/Lato-LightItalic.ttf +0 -0
- data/html/fonts/Lato-Regular.ttf +0 -0
- data/html/fonts/Lato-RegularItalic.ttf +0 -0
- data/html/fonts/SourceCodePro-Bold.ttf +0 -0
- data/html/fonts/SourceCodePro-Regular.ttf +0 -0
- data/html/images/add.png +0 -0
- data/html/images/arrow_up.png +0 -0
- data/html/images/delete.png +0 -0
- data/html/images/tag_blue.png +0 -0
- data/html/index.html +230 -446
- data/html/js/darkfish.js +22 -91
- data/html/js/navigation.js +4 -41
- data/html/js/navigation.js.gz +0 -0
- data/html/js/search.js +41 -25
- data/html/js/search_index.js +1 -1
- data/html/js/search_index.js.gz +0 -0
- data/html/js/searcher.js +9 -8
- data/html/js/searcher.js.gz +0 -0
- data/html/table_of_contents.html +1111 -505
- data/install.rb +53 -34
- data/lib/midilib/consts.rb +406 -408
- data/lib/midilib/event.rb +335 -306
- data/lib/midilib/info.rb +5 -7
- data/lib/midilib/io/midifile.rb +424 -452
- data/lib/midilib/io/seqreader.rb +200 -192
- data/lib/midilib/io/seqwriter.rb +151 -147
- data/lib/midilib/measure.rb +78 -80
- data/lib/midilib/mergesort.rb +39 -0
- data/lib/midilib/sequence.rb +93 -87
- data/lib/midilib/track.rb +71 -118
- data/lib/midilib/utils.rb +17 -20
- data/lib/midilib.rb +5 -5
- data/test/event_equality.rb +50 -52
- data/test/test_event.rb +120 -124
- data/test/test_io.rb +118 -38
- data/test/test_mergesort.rb +37 -0
- data/test/test_midifile.rb +6 -19
- data/test/test_sequence.rb +62 -61
- data/test/test_track.rb +126 -155
- data/test/test_varlen.rb +23 -27
- metadata +67 -62
- data/html/IO.html +0 -259
- data/html/MIDI/MIDI/MIDI/Array.html +0 -353
- data/html/MIDI/MIDI/MIDI.html +0 -204
- data/html/MIDI/MIDI.html +0 -204
- data/html/js/jquery.js +0 -18
- data/html/rdoc.css +0 -543
data/html/js/darkfish.js
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
*/
|
9
9
|
|
10
10
|
/* Provide console simulation for firebug-less environments */
|
11
|
+
/*
|
11
12
|
if (!("console" in window) || !("firebug" in console)) {
|
12
13
|
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
13
14
|
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
@@ -16,63 +17,35 @@ if (!("console" in window) || !("firebug" in console)) {
|
|
16
17
|
for (var i = 0; i < names.length; ++i)
|
17
18
|
window.console[names[i]] = function() {};
|
18
19
|
};
|
19
|
-
|
20
|
-
|
21
|
-
/**
|
22
|
-
* Unwrap the first element that matches the given @expr@ from the targets and return them.
|
23
|
-
*/
|
24
|
-
$.fn.unwrap = function( expr ) {
|
25
|
-
return this.each( function() {
|
26
|
-
$(this).parents( expr ).eq( 0 ).after( this ).remove();
|
27
|
-
});
|
28
|
-
};
|
20
|
+
*/
|
29
21
|
|
30
22
|
|
31
23
|
function showSource( e ) {
|
32
24
|
var target = e.target;
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
25
|
+
while (!target.classList.contains('method-detail')) {
|
26
|
+
target = target.parentNode;
|
27
|
+
}
|
28
|
+
if (typeof target !== "undefined" && target !== null) {
|
29
|
+
target = target.querySelector('.method-source-code');
|
30
|
+
}
|
31
|
+
if (typeof target !== "undefined" && target !== null) {
|
32
|
+
target.classList.toggle('active-menu')
|
33
|
+
}
|
41
34
|
};
|
42
35
|
|
43
36
|
function hookSourceViews() {
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
function toggleDebuggingSection() {
|
48
|
-
$('.debugging-section').slideToggle();
|
49
|
-
};
|
50
|
-
|
51
|
-
function hookDebuggingToggle() {
|
52
|
-
$('#debugging-toggle img').click( toggleDebuggingSection );
|
53
|
-
};
|
54
|
-
|
55
|
-
function hookTableOfContentsToggle() {
|
56
|
-
$('.indexpage li .toc-toggle').each( function() {
|
57
|
-
$(this).click( function() {
|
58
|
-
$(this).toggleClass('open');
|
59
|
-
});
|
60
|
-
|
61
|
-
var section = $(this).next();
|
62
|
-
|
63
|
-
$(this).click( function() {
|
64
|
-
section.slideToggle();
|
65
|
-
});
|
37
|
+
document.querySelectorAll('.method-heading').forEach(function (codeObject) {
|
38
|
+
codeObject.addEventListener('click', showSource);
|
66
39
|
});
|
67
|
-
}
|
40
|
+
};
|
68
41
|
|
69
42
|
function hookSearch() {
|
70
|
-
var input =
|
71
|
-
var result =
|
72
|
-
|
43
|
+
var input = document.querySelector('#search-field');
|
44
|
+
var result = document.querySelector('#search-results');
|
45
|
+
result.classList.remove("initially-hidden");
|
73
46
|
|
74
|
-
var search_section =
|
75
|
-
|
47
|
+
var search_section = document.querySelector('#search-section');
|
48
|
+
search_section.classList.remove("initially-hidden");
|
76
49
|
|
77
50
|
var search = new Search(search_data, input, result);
|
78
51
|
|
@@ -81,7 +54,7 @@ function hookSearch() {
|
|
81
54
|
var html = '';
|
82
55
|
|
83
56
|
// TODO add relative path to <script> per-page
|
84
|
-
html += '<p class="search-match"><a href="' +
|
57
|
+
html += '<p class="search-match"><a href="' + index_rel_prefix + result.path + '">' + this.hlt(result.title);
|
85
58
|
if (result.params)
|
86
59
|
html += '<span class="params">' + result.params + '</span>';
|
87
60
|
html += '</a>';
|
@@ -99,55 +72,13 @@ function hookSearch() {
|
|
99
72
|
}
|
100
73
|
|
101
74
|
search.select = function(result) {
|
102
|
-
|
103
|
-
window.location.href = result_element.firstChild.firstChild.href;
|
75
|
+
window.location.href = result.firstChild.firstChild.href;
|
104
76
|
}
|
105
77
|
|
106
78
|
search.scrollIntoView = search.scrollInWindow;
|
107
79
|
};
|
108
80
|
|
109
|
-
function
|
110
|
-
console.debug( "Highlighting target '%s'.", anchor );
|
111
|
-
|
112
|
-
$("a[name=" + anchor + "]").each( function() {
|
113
|
-
if ( !$(this).parent().parent().hasClass('target-section') ) {
|
114
|
-
console.debug( "Wrapping the target-section" );
|
115
|
-
$('div.method-detail').unwrap( 'div.target-section' );
|
116
|
-
$(this).parent().wrap( '<div class="target-section"></div>' );
|
117
|
-
} else {
|
118
|
-
console.debug( "Already wrapped." );
|
119
|
-
}
|
120
|
-
});
|
121
|
-
};
|
122
|
-
|
123
|
-
function highlightLocationTarget() {
|
124
|
-
console.debug( "Location hash: %s", window.location.hash );
|
125
|
-
if ( ! window.location.hash || window.location.hash.length == 0 ) return;
|
126
|
-
|
127
|
-
var anchor = window.location.hash.substring(1);
|
128
|
-
console.debug( "Found anchor: %s; matching %s", anchor, "a[name=" + anchor + "]" );
|
129
|
-
|
130
|
-
highlightTarget( anchor );
|
131
|
-
};
|
132
|
-
|
133
|
-
function highlightClickTarget( event ) {
|
134
|
-
console.debug( "Highlighting click target for event %o", event.target );
|
135
|
-
try {
|
136
|
-
var anchor = $(event.target).attr( 'href' ).substring(1);
|
137
|
-
console.debug( "Found target anchor: %s", anchor );
|
138
|
-
highlightTarget( anchor );
|
139
|
-
} catch ( err ) {
|
140
|
-
console.error( "Exception while highlighting: %o", err );
|
141
|
-
};
|
142
|
-
};
|
143
|
-
|
144
|
-
|
145
|
-
$(document).ready( function() {
|
81
|
+
document.addEventListener('DOMContentLoaded', function() {
|
146
82
|
hookSourceViews();
|
147
|
-
hookDebuggingToggle();
|
148
83
|
hookSearch();
|
149
|
-
highlightLocationTarget();
|
150
|
-
hookTableOfContentsToggle();
|
151
|
-
|
152
|
-
$('ul.link-list a').bind( "click", highlightClickTarget );
|
153
84
|
});
|
data/html/js/navigation.js
CHANGED
@@ -10,10 +10,8 @@ Navigation = new function() {
|
|
10
10
|
this.initNavigation = function() {
|
11
11
|
var _this = this;
|
12
12
|
|
13
|
-
|
13
|
+
document.addEventListener('keydown', function(e) {
|
14
14
|
_this.onkeydown(e);
|
15
|
-
}).keyup(function(e) {
|
16
|
-
_this.onkeyup(e);
|
17
15
|
});
|
18
16
|
|
19
17
|
this.navigationActive = true;
|
@@ -21,20 +19,6 @@ Navigation = new function() {
|
|
21
19
|
|
22
20
|
this.setNavigationActive = function(state) {
|
23
21
|
this.navigationActive = state;
|
24
|
-
this.clearMoveTimeout();
|
25
|
-
}
|
26
|
-
|
27
|
-
this.onkeyup = function(e) {
|
28
|
-
if (!this.navigationActive) return;
|
29
|
-
|
30
|
-
switch(e.keyCode) {
|
31
|
-
case 37: //Event.KEY_LEFT:
|
32
|
-
case 38: //Event.KEY_UP:
|
33
|
-
case 39: //Event.KEY_RIGHT:
|
34
|
-
case 40: //Event.KEY_DOWN:
|
35
|
-
this.clearMoveTimeout();
|
36
|
-
break;
|
37
|
-
}
|
38
22
|
}
|
39
23
|
|
40
24
|
this.onkeydown = function(e) {
|
@@ -46,7 +30,6 @@ Navigation = new function() {
|
|
46
30
|
case 38: //Event.KEY_UP:
|
47
31
|
if (e.keyCode == 38 || e.ctrlKey) {
|
48
32
|
if (this.moveUp()) e.preventDefault();
|
49
|
-
this.startMoveTimeout(false);
|
50
33
|
}
|
51
34
|
break;
|
52
35
|
case 39: //Event.KEY_RIGHT:
|
@@ -55,34 +38,14 @@ Navigation = new function() {
|
|
55
38
|
case 40: //Event.KEY_DOWN:
|
56
39
|
if (e.keyCode == 40 || e.ctrlKey) {
|
57
40
|
if (this.moveDown()) e.preventDefault();
|
58
|
-
this.startMoveTimeout(true);
|
59
41
|
}
|
60
42
|
break;
|
61
43
|
case 13: //Event.KEY_RETURN:
|
62
|
-
if (this
|
63
|
-
|
64
|
-
this.select(this.$current);
|
44
|
+
if (this.current) e.preventDefault();
|
45
|
+
this.select(this.current);
|
65
46
|
break;
|
66
47
|
}
|
67
|
-
if (e.ctrlKey && e.shiftKey) this.select(this
|
68
|
-
}
|
69
|
-
|
70
|
-
this.clearMoveTimeout = function() {
|
71
|
-
clearTimeout(this.moveTimeout);
|
72
|
-
this.moveTimeout = null;
|
73
|
-
}
|
74
|
-
|
75
|
-
this.startMoveTimeout = function(isDown) {
|
76
|
-
if (!$.browser.mozilla && !$.browser.opera) return;
|
77
|
-
if (this.moveTimeout) this.clearMoveTimeout();
|
78
|
-
var _this = this;
|
79
|
-
|
80
|
-
var go = function() {
|
81
|
-
if (!_this.moveTimeout) return;
|
82
|
-
_this[isDown ? 'moveDown' : 'moveUp']();
|
83
|
-
_this.moveTimout = setTimeout(go, 100);
|
84
|
-
}
|
85
|
-
this.moveTimeout = setTimeout(go, 200);
|
48
|
+
if (e.ctrlKey && e.shiftKey) this.select(this.current);
|
86
49
|
}
|
87
50
|
|
88
51
|
this.moveRight = function() {
|
Binary file
|
data/html/js/search.js
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
Search = function(data, input, result) {
|
2
2
|
this.data = data;
|
3
|
-
this
|
4
|
-
this
|
3
|
+
this.input = input;
|
4
|
+
this.result = result;
|
5
5
|
|
6
|
-
this
|
7
|
-
this
|
6
|
+
this.current = null;
|
7
|
+
this.view = this.result.parentNode;
|
8
8
|
this.searcher = new Searcher(data.index);
|
9
9
|
this.init();
|
10
10
|
}
|
11
11
|
|
12
|
-
Search.prototype =
|
12
|
+
Search.prototype = Object.assign({}, Navigation, new function() {
|
13
13
|
var suid = 1;
|
14
14
|
|
15
15
|
this.init = function() {
|
16
16
|
var _this = this;
|
17
|
-
var observer = function() {
|
18
|
-
|
17
|
+
var observer = function(e) {
|
18
|
+
switch(e.keyCode) {
|
19
|
+
case 38: // Event.KEY_UP
|
20
|
+
case 40: // Event.KEY_DOWN
|
21
|
+
return;
|
22
|
+
}
|
23
|
+
_this.search(_this.input.value);
|
19
24
|
};
|
20
|
-
this
|
21
|
-
this
|
25
|
+
this.input.addEventListener('keyup', observer);
|
26
|
+
this.input.addEventListener('click', observer); // mac's clear field
|
22
27
|
|
23
28
|
this.searcher.ready(function(results, isLast) {
|
24
29
|
_this.addResults(results, isLast);
|
@@ -29,7 +34,7 @@ Search.prototype = $.extend({}, Navigation, new function() {
|
|
29
34
|
}
|
30
35
|
|
31
36
|
this.search = function(value, selectFirstMatch) {
|
32
|
-
value =
|
37
|
+
value = value.trim().toLowerCase();
|
33
38
|
if (value) {
|
34
39
|
this.setNavigationActive(true);
|
35
40
|
} else {
|
@@ -38,42 +43,53 @@ Search.prototype = $.extend({}, Navigation, new function() {
|
|
38
43
|
|
39
44
|
if (value == '') {
|
40
45
|
this.lastQuery = value;
|
41
|
-
this
|
46
|
+
this.result.innerHTML = '';
|
47
|
+
this.result.setAttribute('aria-expanded', 'false');
|
42
48
|
this.setNavigationActive(false);
|
43
49
|
} else if (value != this.lastQuery) {
|
44
50
|
this.lastQuery = value;
|
51
|
+
this.result.setAttribute('aria-busy', 'true');
|
52
|
+
this.result.setAttribute('aria-expanded', 'true');
|
45
53
|
this.firstRun = true;
|
46
54
|
this.searcher.find(value);
|
47
55
|
}
|
48
56
|
}
|
49
57
|
|
50
58
|
this.addResults = function(results, isLast) {
|
51
|
-
var target = this
|
59
|
+
var target = this.result;
|
52
60
|
if (this.firstRun && (results.length > 0 || isLast)) {
|
53
|
-
this
|
54
|
-
this
|
61
|
+
this.current = null;
|
62
|
+
this.result.innerHTML = '';
|
55
63
|
}
|
56
64
|
|
57
65
|
for (var i=0, l = results.length; i < l; i++) {
|
58
|
-
|
66
|
+
var item = this.renderItem.call(this, results[i]);
|
67
|
+
item.setAttribute('id', 'search-result-' + target.childElementCount);
|
68
|
+
target.appendChild(item);
|
59
69
|
};
|
60
70
|
|
61
71
|
if (this.firstRun && results.length > 0) {
|
62
72
|
this.firstRun = false;
|
63
|
-
this
|
64
|
-
this
|
73
|
+
this.current = target.firstChild;
|
74
|
+
this.current.classList.add('search-selected');
|
65
75
|
}
|
66
|
-
|
76
|
+
//TODO: ECMAScript
|
77
|
+
//if (jQuery.browser.msie) this.$element[0].className += '';
|
78
|
+
|
79
|
+
if (isLast) this.result.setAttribute('aria-busy', 'false');
|
67
80
|
}
|
68
81
|
|
69
82
|
this.move = function(isDown) {
|
70
|
-
if (!this
|
71
|
-
var
|
72
|
-
if (
|
73
|
-
this
|
74
|
-
|
75
|
-
this.
|
76
|
-
this
|
83
|
+
if (!this.current) return;
|
84
|
+
var next = isDown ? this.current.nextElementSibling : this.current.previousElementSibling;
|
85
|
+
if (next) {
|
86
|
+
this.current.classList.remove('search-selected');
|
87
|
+
next.classList.add('search-selected');
|
88
|
+
this.input.setAttribute('aria-activedescendant', next.getAttribute('id'));
|
89
|
+
this.scrollIntoView(next, this.view);
|
90
|
+
this.current = next;
|
91
|
+
this.input.value = next.firstChild.firstChild.text;
|
92
|
+
this.input.select();
|
77
93
|
}
|
78
94
|
return true;
|
79
95
|
}
|
data/html/js/search_index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var search_data = {"index":{"searchIndex":["io","midi","activesense","channelevent","channelpressure","clock","continue","controller","event","io","midifile","seqreader","seqwriter","keysig","midi","midi","array","marker","measure","measures","metaevent","noteevent","noteoff","noteoffevent","noteon","noteonevent","pitchbend","polypressure","programchange","realtime","sequence","songpointer","songselect","start","stop","systemcommon","systemexclusive","systemreset","tempo","timesig","track","tunerequest","utils","<=>()","arbitrary()","as_var_len()","bad_byte()","beats_per_minute()","bpm()","bpm_to_mpq()","bytes_as_str()","chan_message()","chan_pressure()","chan_pressure()","channel_to_s()","contains_event?()","controller()","controller()","data=()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_str()","denominator()","each()","each()","end_track()","end_track()","eot()","error()","get_bytes()","get_measures()","getc()","handle_arbitrary()","handle_sysex()","header()","header()","instrument()","instrument=()","key_signature()","key_signature()","length_to_delta()","major_key?()","make_note_off()","measure_duration()","measure_for_event()","merge()","merge()","merge_event_lists()","mergesort()","meta_event()","meta_misc()","meta_misc()","metronome_ticks()","minor_key?()","mpq_to_bpm()","msg()","msg_add()","msg_init()","msg_read()","name()","name()","name=()","name=()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","note_off()","note_off()","note_on()","note_on()","note_to_delta()","note_to_length()","note_to_s()","note_to_s()","number_to_s()","numerator()","pch_oct()","pitch_bend()","pitch_bend()","possibly_munge_due_to_running_status_byte()","pressure()","pressure()","pressure()","pressure=()","program()","program()","pulses_to_seconds()","quantize()","quantize_to()","read()","read16()","read32()","read_from()","read_header()","read_mt_header_string()","read_track()","read_var_len()","readbyte()","recalc_delta_from_times()","recalc_times()","sequence_number()","sequencer_specific()","sharpflat()","smpte()","sort()","split()","start_track()","start_track()","str_as_bytes()","sysex()","sysex()","tempo()","tempo()","tempo()","tempo()","tempo=()","text()","text()","time_signature()","time_signature()","time_signature()","to_mbt()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","track_uses_channel()","write()","write16()","write16()","write32()","write32()","write_bytes()","write_header()","write_instrument()","write_to()","write_track()","write_var_len()","write_var_len()","readme","todo"],"longSearchIndex":["io","midi","midi::activesense","midi::channelevent","midi::channelpressure","midi::clock","midi::continue","midi::controller","midi::event","midi::io","midi::io::midifile","midi::io::seqreader","midi::io::seqwriter","midi::keysig","midi::midi","midi::midi::midi","midi::midi::midi::array","midi::marker","midi::measure","midi::measures","midi::metaevent","midi::noteevent","midi::noteoff","midi::noteoffevent","midi::noteon","midi::noteonevent","midi::pitchbend","midi::polypressure","midi::programchange","midi::realtime","midi::sequence","midi::songpointer","midi::songselect","midi::start","midi::stop","midi::systemcommon","midi::systemexclusive","midi::systemreset","midi::tempo","midi::timesig","midi::track","midi::tunerequest","midi::utils","midi::event#<=>()","midi::io::midifile#arbitrary()","midi::utils::as_var_len()","midi::io::midifile#bad_byte()","midi::sequence#beats_per_minute()","midi::sequence#bpm()","midi::tempo::bpm_to_mpq()","midi::metaevent::bytes_as_str()","midi::io::midifile#chan_message()","midi::io::midifile#chan_pressure()","midi::io::seqreader#chan_pressure()","midi::event#channel_to_s()","midi::measure#contains_event?()","midi::io::midifile#controller()","midi::io::seqreader#controller()","midi::metaevent#data=()","midi::channelpressure#data_as_bytes()","midi::controller#data_as_bytes()","midi::event#data_as_bytes()","midi::keysig#data_as_bytes()","midi::metaevent#data_as_bytes()","midi::noteevent#data_as_bytes()","midi::pitchbend#data_as_bytes()","midi::programchange#data_as_bytes()","midi::realtime#data_as_bytes()","midi::songpointer#data_as_bytes()","midi::songselect#data_as_bytes()","midi::systemexclusive#data_as_bytes()","midi::tempo#data_as_bytes()","midi::timesig#data_as_bytes()","midi::tunerequest#data_as_bytes()","midi::metaevent#data_as_str()","midi::timesig#denominator()","midi::sequence#each()","midi::track#each()","midi::io::midifile#end_track()","midi::io::seqreader#end_track()","midi::io::midifile#eot()","midi::io::midifile#error()","midi::io::midifile#get_bytes()","midi::sequence#get_measures()","midi::io::midifile#getc()","midi::io::midifile#handle_arbitrary()","midi::io::midifile#handle_sysex()","midi::io::midifile#header()","midi::io::seqreader#header()","midi::track#instrument()","midi::track#instrument=()","midi::io::midifile#key_signature()","midi::io::seqreader#key_signature()","midi::sequence#length_to_delta()","midi::keysig#major_key?()","midi::io::seqreader#make_note_off()","midi::timesig#measure_duration()","midi::measures#measure_for_event()","midi::midi::midi::array#merge()","midi::track#merge()","midi::track#merge_event_lists()","midi::midi::midi::array#mergesort()","midi::io::midifile#meta_event()","midi::io::midifile#meta_misc()","midi::io::seqreader#meta_misc()","midi::timesig#metronome_ticks()","midi::keysig#minor_key?()","midi::tempo::mpq_to_bpm()","midi::io::midifile#msg()","midi::io::midifile#msg_add()","midi::io::midifile#msg_init()","midi::io::midifile#msg_read()","midi::sequence#name()","midi::track#name()","midi::sequence#name=()","midi::track#name=()","midi::activesense::new()","midi::channelevent::new()","midi::channelpressure::new()","midi::clock::new()","midi::continue::new()","midi::controller::new()","midi::event::new()","midi::io::midifile::new()","midi::io::seqreader::new()","midi::io::seqwriter::new()","midi::keysig::new()","midi::marker::new()","midi::measure::new()","midi::measures::new()","midi::metaevent::new()","midi::noteevent::new()","midi::noteoff::new()","midi::noteoff::new()","midi::noteon::new()","midi::noteon::new()","midi::pitchbend::new()","midi::polypressure::new()","midi::programchange::new()","midi::realtime::new()","midi::sequence::new()","midi::songpointer::new()","midi::songselect::new()","midi::start::new()","midi::stop::new()","midi::systemcommon::new()","midi::systemexclusive::new()","midi::systemreset::new()","midi::tempo::new()","midi::timesig::new()","midi::track::new()","midi::tunerequest::new()","midi::io::midifile#note_off()","midi::io::seqreader#note_off()","midi::io::midifile#note_on()","midi::io::seqreader#note_on()","midi::sequence#note_to_delta()","midi::sequence#note_to_length()","midi::noteevent#note_to_s()","midi::utils::note_to_s()","midi::event#number_to_s()","midi::timesig#numerator()","midi::noteevent#pch_oct()","midi::io::midifile#pitch_bend()","midi::io::seqreader#pitch_bend()","midi::io::seqwriter#possibly_munge_due_to_running_status_byte()","midi::io::midifile#pressure()","midi::io::seqreader#pressure()","midi::polypressure#pressure()","midi::polypressure#pressure=()","midi::io::midifile#program()","midi::io::seqreader#program()","midi::sequence#pulses_to_seconds()","midi::track#quantize()","midi::event#quantize_to()","midi::sequence#read()","midi::io::midifile#read16()","midi::io::midifile#read32()","midi::io::midifile#read_from()","midi::io::midifile#read_header()","midi::io::midifile#read_mt_header_string()","midi::io::midifile#read_track()","midi::io::midifile#read_var_len()","io#readbyte()","midi::track#recalc_delta_from_times()","midi::track#recalc_times()","midi::io::midifile#sequence_number()","midi::io::midifile#sequencer_specific()","midi::keysig#sharpflat()","midi::io::midifile#smpte()","midi::track#sort()","midi::midi::midi::array#split()","midi::io::midifile#start_track()","midi::io::seqreader#start_track()","midi::metaevent::str_as_bytes()","midi::io::midifile#sysex()","midi::io::seqreader#sysex()","midi::io::midifile#tempo()","midi::io::seqreader#tempo()","midi::sequence#tempo()","midi::tempo#tempo()","midi::tempo#tempo=()","midi::io::midifile#text()","midi::io::seqreader#text()","midi::io::midifile#time_signature()","midi::io::seqreader#time_signature()","midi::sequence#time_signature()","midi::measures#to_mbt()","midi::activesense#to_s()","midi::channelevent#to_s()","midi::channelpressure#to_s()","midi::clock#to_s()","midi::continue#to_s()","midi::controller#to_s()","midi::event#to_s()","midi::keysig#to_s()","midi::measure#to_s()","midi::metaevent#to_s()","midi::noteoff#to_s()","midi::noteoff#to_s()","midi::noteon#to_s()","midi::noteon#to_s()","midi::pitchbend#to_s()","midi::polypressure#to_s()","midi::programchange#to_s()","midi::realtime#to_s()","midi::songpointer#to_s()","midi::songselect#to_s()","midi::start#to_s()","midi::stop#to_s()","midi::systemexclusive#to_s()","midi::systemreset#to_s()","midi::tempo#to_s()","midi::timesig#to_s()","midi::tunerequest#to_s()","midi::io::seqreader#track_uses_channel()","midi::sequence#write()","midi::io::midifile#write16()","midi::io::seqwriter#write16()","midi::io::midifile#write32()","midi::io::seqwriter#write32()","midi::io::seqwriter#write_bytes()","midi::io::seqwriter#write_header()","midi::io::seqwriter#write_instrument()","midi::io::seqwriter#write_to()","midi::io::seqwriter#write_track()","midi::io::midifile#write_var_len()","midi::io::seqwriter#write_var_len()","",""],"info":[["IO","","IO.html","",""],["MIDI","","MIDI.html","","<p>MIDI constants.\n"],["MIDI::ActiveSense","","MIDI/ActiveSense.html","",""],["MIDI::ChannelEvent","","MIDI/ChannelEvent.html","","<p>The abstract superclass of all channel events (events that have a MIDI\nchannel, like notes and program ...\n"],["MIDI::ChannelPressure","","MIDI/ChannelPressure.html","",""],["MIDI::Clock","","MIDI/Clock.html","",""],["MIDI::Continue","","MIDI/Continue.html","",""],["MIDI::Controller","","MIDI/Controller.html","",""],["MIDI::Event","","MIDI/Event.html","","<p>The abstract superclass of all MIDI events.\n"],["MIDI::IO","","MIDI/IO.html","",""],["MIDI::IO::MIDIFile","","MIDI/IO/MIDIFile.html","","<p>A MIDIFile parses a MIDI file and calls methods when it sees MIDI events.\nMost of the methods are stubs. ...\n"],["MIDI::IO::SeqReader","","MIDI/IO/SeqReader.html","","<p>Reads MIDI files. As a subclass of MIDIFile, this class implements the\ncallback methods for each MIDI ...\n"],["MIDI::IO::SeqWriter","","MIDI/IO/SeqWriter.html","",""],["MIDI::KeySig","","MIDI/KeySig.html","","<p>Container for key signature events\n"],["MIDI::MIDI","","MIDI/MIDI.html","",""],["MIDI::MIDI::MIDI","","MIDI/MIDI/MIDI.html","",""],["MIDI::MIDI::MIDI::Array","","MIDI/MIDI/MIDI/Array.html","","<p>This is taken from\ngithub.com/adamjmurray/cosy/blob/master/lib/cosy/helper/midi_file_renderer_helper.rb\n...\n"],["MIDI::Marker","","MIDI/Marker.html","",""],["MIDI::Measure","","MIDI/Measure.html","","<p>The Measure class contains information about a measure from the sequence.\nThe measure data is based on ...\n"],["MIDI::Measures","","MIDI/Measures.html","","<p>A specialized container for MIDI::Measure objects, which can be use to map\nevent times to measure numbers. ...\n"],["MIDI::MetaEvent","","MIDI/MetaEvent.html","",""],["MIDI::NoteEvent","","MIDI/NoteEvent.html","","<p>The abstract superclass of all note on, and note off, and polyphonic\npressure events.\n"],["MIDI::NoteOff","","MIDI/NoteOff.html","",""],["MIDI::NoteOffEvent","","MIDI/NoteOff.html","",""],["MIDI::NoteOn","","MIDI/NoteOn.html","",""],["MIDI::NoteOnEvent","","MIDI/NoteOn.html","",""],["MIDI::PitchBend","","MIDI/PitchBend.html","",""],["MIDI::PolyPressure","","MIDI/PolyPressure.html","",""],["MIDI::ProgramChange","","MIDI/ProgramChange.html","",""],["MIDI::Realtime","","MIDI/Realtime.html","",""],["MIDI::Sequence","","MIDI/Sequence.html","","<p>A MIDI::Sequence contains MIDI::Track objects.\n"],["MIDI::SongPointer","","MIDI/SongPointer.html","",""],["MIDI::SongSelect","","MIDI/SongSelect.html","",""],["MIDI::Start","","MIDI/Start.html","",""],["MIDI::Stop","","MIDI/Stop.html","",""],["MIDI::SystemCommon","","MIDI/SystemCommon.html","",""],["MIDI::SystemExclusive","","MIDI/SystemExclusive.html","",""],["MIDI::SystemReset","","MIDI/SystemReset.html","",""],["MIDI::Tempo","","MIDI/Tempo.html","",""],["MIDI::TimeSig","","MIDI/TimeSig.html","","<p>Container for time signature events\n"],["MIDI::Track","","MIDI/Track.html","","<p>A Track is a list of events.\n<p>When you modify the <code>events</code> array, make sure to call\nrecalc_times so each ...\n"],["MIDI::TuneRequest","","MIDI/TuneRequest.html","",""],["MIDI::Utils","","MIDI/Utils.html","","<p>Utility methods.\n"],["<=>","MIDI::Event","MIDI/Event.html#method-i-3C-3D-3E","(an_event)","<p>For sorting. Uses @time_from_start, which is maintained by this event's\ntrack. I'm not sure this is necessary, ...\n"],["arbitrary","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-arbitrary","(msg)",""],["as_var_len","MIDI::Utils","MIDI/Utils.html#method-c-as_var_len","(val)","<p>Given an integer, returns it as a variable length array of bytes (the\nformat used by MIDI files).\n<p>The ...\n"],["bad_byte","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-bad_byte","(c)","<p>Handle an unexpected byte.\n"],["beats_per_minute","MIDI::Sequence","MIDI/Sequence.html#method-i-beats_per_minute","()","<p>Returns the song tempo in beats per minute.\n"],["bpm","MIDI::Sequence","MIDI/Sequence.html#method-i-bpm","()",""],["bpm_to_mpq","MIDI::Tempo","MIDI/Tempo.html#method-c-bpm_to_mpq","(bpm)","<p>Translates beats per minute to microseconds per quarter note (beat).\n"],["bytes_as_str","MIDI::MetaEvent","MIDI/MetaEvent.html#method-c-bytes_as_str","(bytes)",""],["chan_message","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-chan_message","(running, status, c1, c2)","<p>Handle a channel message (note on, note off, etc.)\n"],["chan_pressure","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-chan_pressure","(chan, press)",""],["chan_pressure","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-chan_pressure","(chan, press)",""],["channel_to_s","MIDI::Event","MIDI/Event.html#method-i-channel_to_s","(val)","<p>Returns <code>val</code> as a decimal or hex string, depending upon the\nvalue of @print_decimal_numbers.\n"],["contains_event?","MIDI::Measure","MIDI/Measure.html#method-i-contains_event-3F","(e)","<p>Returns <code>true</code> if the event is in the measure\n"],["controller","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-controller","(chan, control, value)",""],["controller","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-controller","(chan, control, value)",""],["data=","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-data-3D","(data)","<p>Stores bytes. If data is a string, splits it into an array of bytes.\n"],["data_as_bytes","MIDI::ChannelPressure","MIDI/ChannelPressure.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Controller","MIDI/Controller.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Event","MIDI/Event.html#method-i-data_as_bytes","()","<p>Returns the raw bytes that are written to a MIDI file or output to a MIDI\nstream. In MIDI::EVENT this ...\n"],["data_as_bytes","MIDI::KeySig","MIDI/KeySig.html#method-i-data_as_bytes","()","<p>Returns the complete event as stored in the sequence\n"],["data_as_bytes","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::NoteEvent","MIDI/NoteEvent.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::PitchBend","MIDI/PitchBend.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::ProgramChange","MIDI/ProgramChange.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Realtime","MIDI/Realtime.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::SongPointer","MIDI/SongPointer.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::SongSelect","MIDI/SongSelect.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::SystemExclusive","MIDI/SystemExclusive.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Tempo","MIDI/Tempo.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::TimeSig","MIDI/TimeSig.html#method-i-data_as_bytes","()","<p>Returns the complete event as stored in the sequence\n"],["data_as_bytes","MIDI::TuneRequest","MIDI/TuneRequest.html#method-i-data_as_bytes","()",""],["data_as_str","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-data_as_str","()",""],["denominator","MIDI::TimeSig","MIDI/TimeSig.html#method-i-denominator","()","<p>Returns the denominator of the time signature. Use it as a power of 2 to\nget the displayed (lower-part) ...\n"],["each","MIDI::Sequence","MIDI/Sequence.html#method-i-each","()","<p>Iterates over the tracks.\n"],["each","MIDI::Track","MIDI/Track.html#method-i-each","()","<p>Iterate over events.\n"],["end_track","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-end_track","()",""],["end_track","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-end_track","()",""],["eot","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-eot","()",""],["error","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-error","(str)","<p>The default error handler.\n"],["get_bytes","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-get_bytes","(n)","<p>Return the next <code>n</code> bytes from @io as an array.\n"],["get_measures","MIDI::Sequence","MIDI/Sequence.html#method-i-get_measures","()","<p>Returns a Measures object, which is an array container for all measures in\nthe sequence\n"],["getc","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-getc","()","<p>This default getc implementation tries to read a single byte from io and\nreturns it as an integer.\n"],["handle_arbitrary","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-handle_arbitrary","(msg)","<p>Copy message into raw data array, then call arbitrary().\n"],["handle_sysex","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-handle_sysex","(msg)","<p>Copy message into raw data array, then call sysex().\n"],["header","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-header","(format, ntrks, division)","<p>MIDI header.\n"],["header","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-header","(format, ntrks, division)",""],["instrument","MIDI::Track","MIDI/Track.html#method-i-instrument","()",""],["instrument=","MIDI::Track","MIDI/Track.html#method-i-instrument-3D","(str_or_bytes)",""],["key_signature","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-key_signature","(sharpflat, is_minor)",""],["key_signature","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-key_signature","(sharpflat, is_minor)",""],["length_to_delta","MIDI::Sequence","MIDI/Sequence.html#method-i-length_to_delta","(length)","<p>Translates <code>length</code> (a multiple of a quarter note) into a delta\ntime. For example, 1 is a quarter note, ...\n"],["major_key?","MIDI::KeySig","MIDI/KeySig.html#method-i-major_key-3F","()","<p>Returns true if it's a major key, false if minor key\n"],["make_note_off","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-make_note_off","(on, vel)",""],["measure_duration","MIDI::TimeSig","MIDI/TimeSig.html#method-i-measure_duration","(ppqn)","<p>Calculates the duration (in ticks) for a full measure\n"],["measure_for_event","MIDI::Measures","MIDI/Measures.html#method-i-measure_for_event","(e)","<p>Returns the MIDI::Measure object where the event is located. Returns\n<code>nil</code> if the event isn't found in ...\n"],["merge","MIDI::MIDI::MIDI::Array","MIDI/MIDI/MIDI/Array.html#method-i-merge","(first, second, &predicate)",""],["merge","MIDI::Track","MIDI/Track.html#method-i-merge","(event_list)","<p>Merges an array of events into our event list. After merging, the events'\ntime_from_start values are ...\n"],["merge_event_lists","MIDI::Track","MIDI/Track.html#method-i-merge_event_lists","(list1, list2)","<p>Merges two event arrays together. Does not modify this track.\n"],["mergesort","MIDI::MIDI::MIDI::Array","MIDI/MIDI/MIDI/Array.html#method-i-mergesort","(&cmp)","<p>A stable sorting algorithm that maintains the relative order of equal\nelements\n"],["meta_event","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-meta_event","(type)","<p>Handle a meta event.\n"],["meta_misc","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-meta_misc","(type, msg)",""],["meta_misc","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-meta_misc","(type, msg)",""],["metronome_ticks","MIDI::TimeSig","MIDI/TimeSig.html#method-i-metronome_ticks","()","<p>Returns the metronome tick duration for the time signature. On each quarter\nnote, there's 24 ticks.\n"],["minor_key?","MIDI::KeySig","MIDI/KeySig.html#method-i-minor_key-3F","()","<p>Returns true if it's a minor key, false if major key\n"],["mpq_to_bpm","MIDI::Tempo","MIDI/Tempo.html#method-c-mpq_to_bpm","(mpq)","<p>Translates microseconds per quarter note (beat) to beats per minute.\n"],["msg","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg","()","<p>Return a copy of the internal message buffer.\n"],["msg_add","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg_add","(c)","<p>Add a byte to the current message buffer.\n"],["msg_init","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg_init","()","<p>Initialize the internal message buffer.\n"],["msg_read","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg_read","(n_bytes)","<p>Read and add a number of bytes to the message buffer. Return the last byte\n(so we can see if it's an ...\n"],["name","MIDI::Sequence","MIDI/Sequence.html#method-i-name","()","<p>Returns the name of the first track (track zero). If there are no tracks,\nreturns UNNAMED.\n"],["name","MIDI::Track","MIDI/Track.html#method-i-name","()","<p>Return track name. If there is no name, return UNNAMED.\n"],["name=","MIDI::Sequence","MIDI/Sequence.html#method-i-name-3D","(name)","<p>Hands the name to the first track. Does nothing if there are no tracks.\n"],["name=","MIDI::Track","MIDI/Track.html#method-i-name-3D","(name)","<p>Set track name. Replaces or creates a name meta-event.\n"],["new","MIDI::ActiveSense","MIDI/ActiveSense.html#method-c-new","(delta_time = 0)",""],["new","MIDI::ChannelEvent","MIDI/ChannelEvent.html#method-c-new","(status, channel, delta_time)",""],["new","MIDI::ChannelPressure","MIDI/ChannelPressure.html#method-c-new","(channel = 0, pressure = 0, delta_time = 0)",""],["new","MIDI::Clock","MIDI/Clock.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Continue","MIDI/Continue.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Controller","MIDI/Controller.html#method-c-new","(channel = 0, controller = 0, value = 0, delta_time = 0)",""],["new","MIDI::Event","MIDI/Event.html#method-c-new","(status = 0, delta_time = 0)",""],["new","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-c-new","()",""],["new","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-c-new","(seq, proc = nil)","<p>The optional proc block is called once at the start of the file and again\nat the end of each track. ...\n"],["new","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-c-new","(seq, proc = nil)",""],["new","MIDI::KeySig","MIDI/KeySig.html#method-c-new","(sharpflat, is_minor, delta_time = 0)","<p>Constructor\n"],["new","MIDI::Marker","MIDI/Marker.html#method-c-new","(msg, delta_time = 0)",""],["new","MIDI::Measure","MIDI/Measure.html#method-c-new","(meas_no, start_time, duration, numer, denom, met_ticks)","<p>Constructor\n"],["new","MIDI::Measures","MIDI/Measures.html#method-c-new","(max_time, ppqd)","<p>Constructor\n"],["new","MIDI::MetaEvent","MIDI/MetaEvent.html#method-c-new","(meta_type, data = nil, delta_time = 0)",""],["new","MIDI::NoteEvent","MIDI/NoteEvent.html#method-c-new","(status, channel, note, velocity, delta_time)",""],["new","MIDI::NoteOff","MIDI/NoteOff.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::NoteOff","MIDI/NoteOff.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::NoteOn","MIDI/NoteOn.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::NoteOn","MIDI/NoteOn.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::PitchBend","MIDI/PitchBend.html#method-c-new","(channel = 0, value = 0, delta_time = 0)",""],["new","MIDI::PolyPressure","MIDI/PolyPressure.html#method-c-new","(channel = 0, note = 64, value = 0, delta_time = 0)",""],["new","MIDI::ProgramChange","MIDI/ProgramChange.html#method-c-new","(channel = 0, program = 0, delta_time = 0)",""],["new","MIDI::Realtime","MIDI/Realtime.html#method-c-new","(status, delta_time)",""],["new","MIDI::Sequence","MIDI/Sequence.html#method-c-new","()",""],["new","MIDI::SongPointer","MIDI/SongPointer.html#method-c-new","(pointer = 0, delta_time = 0)",""],["new","MIDI::SongSelect","MIDI/SongSelect.html#method-c-new","(song = 0, delta_time = 0)",""],["new","MIDI::Start","MIDI/Start.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Stop","MIDI/Stop.html#method-c-new","(delta_time = 0)",""],["new","MIDI::SystemCommon","MIDI/SystemCommon.html#method-c-new","(status, delta_time)",""],["new","MIDI::SystemExclusive","MIDI/SystemExclusive.html#method-c-new","(data, delta_time = 0)",""],["new","MIDI::SystemReset","MIDI/SystemReset.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Tempo","MIDI/Tempo.html#method-c-new","(msecs_per_qnote, delta_time = 0)",""],["new","MIDI::TimeSig","MIDI/TimeSig.html#method-c-new","(numer, denom, clocks, qnotes, delta_time = 0)","<p>Constructor\n"],["new","MIDI::Track","MIDI/Track.html#method-c-new","(sequence)",""],["new","MIDI::TuneRequest","MIDI/TuneRequest.html#method-c-new","(delta_time = 0)",""],["note_off","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-note_off","(chan, note, vel)",""],["note_off","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-note_off","(chan, note, vel)",""],["note_on","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-note_on","(chan, note, vel)",""],["note_on","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-note_on","(chan, note, vel)",""],["note_to_delta","MIDI::Sequence","MIDI/Sequence.html#method-i-note_to_delta","(name)","<p>Given a note length name like \"whole\", \"dotted quarter\", or \"8th triplet\",\n...\n"],["note_to_length","MIDI::Sequence","MIDI/Sequence.html#method-i-note_to_length","(name)","<p>Given a note length name like \"whole\", \"dotted quarter\", or \"8th triplet\",\n...\n"],["note_to_s","MIDI::NoteEvent","MIDI/NoteEvent.html#method-i-note_to_s","()","<p>If @print_note_names is true, returns pch_oct(val) else returns value as a\nnumber using number_to_s. ...\n"],["note_to_s","MIDI::Utils","MIDI/Utils.html#method-c-note_to_s","(num)","<p>Given a MIDI note number, return the name and octave as a string.\n"],["number_to_s","MIDI::Event","MIDI/Event.html#method-i-number_to_s","(val)","<p>Returns <code>val</code> as a decimal or hex string, depending upon the\nvalue of @print_decimal_numbers.\n"],["numerator","MIDI::TimeSig","MIDI/TimeSig.html#method-i-numerator","()","<p>Returns the numerator (the top digit) for the time signature\n"],["pch_oct","MIDI::NoteEvent","MIDI/NoteEvent.html#method-i-pch_oct","(val=@note)","<p>Returns note name as a pitch/octave string like \"C4\" or \"F#6\".\n"],["pitch_bend","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-pitch_bend","(chan, msb, lsb)",""],["pitch_bend","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-pitch_bend","(chan, lsb, msb)",""],["possibly_munge_due_to_running_status_byte","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-possibly_munge_due_to_running_status_byte","(data, prev_status)","<p>If we can use a running status byte, delete the status byte from the given\ndata. Return the status to ...\n"],["pressure","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-pressure","(chan, note, press)",""],["pressure","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-pressure","(chan, note, press)",""],["pressure","MIDI::PolyPressure","MIDI/PolyPressure.html#method-i-pressure","()",""],["pressure=","MIDI::PolyPressure","MIDI/PolyPressure.html#method-i-pressure-3D","(val)",""],["program","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-program","(chan, program)",""],["program","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-program","(chan, program)",""],["pulses_to_seconds","MIDI::Sequence","MIDI/Sequence.html#method-i-pulses_to_seconds","(pulses)","<p>Pulses (also called ticks) are the units of delta times and event\ntime_from_start values. This method ...\n"],["quantize","MIDI::Track","MIDI/Track.html#method-i-quantize","(length_or_note)","<p>Quantize every event. length_or_note is either a length (1 = quarter, 0.25\n= sixteenth, 4 = whole note) ...\n"],["quantize_to","MIDI::Event","MIDI/Event.html#method-i-quantize_to","(boundary)","<p>Quantize this event's time_from_start by moving it to the nearest multiple\nof <code>boundary</code>. See MIDI::Track#quantize ...\n"],["read","MIDI::Sequence","MIDI/Sequence.html#method-i-read","(io, proc = nil)","<p>Reads a MIDI stream.\n"],["read16","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read16","()","<p>Read and return a sixteen bit value.\n"],["read32","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read32","()","<p>Read and return a 32-bit value.\n"],["read_from","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_from","(io)","<p>The only public method. Each MIDI event in the file causes a method to be\ncalled.\n"],["read_header","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_header","()","<p>Read a header chunk.\n"],["read_mt_header_string","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_mt_header_string","(bytes, skip)","<p>Read through 'MThd' or 'MTrk' header string. If skip is true, attempt to\nskip initial trash. If there ...\n"],["read_track","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_track","()","<p>Read a track chunk.\n"],["read_var_len","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_var_len","()","<p>Read a varlen value.\n"],["readbyte","IO","IO.html#method-i-readbyte","()",""],["recalc_delta_from_times","MIDI::Track","MIDI/Track.html#method-i-recalc_delta_from_times","(starting_at=0, list=@events)","<p>The opposite of recalc_times: recalculates delta_time for each event from\neach event's time_from_start. ...\n"],["recalc_times","MIDI::Track","MIDI/Track.html#method-i-recalc_times","(starting_at=0, list=@events)","<p>Recalculate start times for all events in <code>list</code> from\nstarting_at to end.\n"],["sequence_number","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-sequence_number","(num)",""],["sequencer_specific","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-sequencer_specific","(type, msg)",""],["sharpflat","MIDI::KeySig","MIDI/KeySig.html#method-i-sharpflat","()","<p>Returns the number of sharps/flats in the key sig. Negative for flats.\n"],["smpte","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-smpte","(hour, min, sec, frame, fract)",""],["sort","MIDI::Track","MIDI/Track.html#method-i-sort","(starting_at=0, list=@events)","<p>Sort events by their time_from_start. After sorting,\nrecalc_delta_from_times is called to make sure that ...\n"],["split","MIDI::MIDI::MIDI::Array","MIDI/MIDI/MIDI/Array.html#method-i-split","()",""],["start_track","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-start_track","(bytes_to_be_read)",""],["start_track","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-start_track","()",""],["str_as_bytes","MIDI::MetaEvent","MIDI/MetaEvent.html#method-c-str_as_bytes","(str)",""],["sysex","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-sysex","(msg)",""],["sysex","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-sysex","(msg)",""],["tempo","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-tempo","(microsecs)",""],["tempo","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-tempo","(microsecs)","<p>--\n\n<pre class=\"ruby\"><span class=\"ruby-keyword\">def</span> <span class=\"ruby-identifier\">smpte</span>(<span class=\"ruby-identifier\">hour</span>, <span class=\"ruby-identifier\">min</span>, <span class=\"ruby-identifier\">sec</span>, <span class=\"ruby-identifier\">frame</span>, <span class=\"ruby-identifier\">fract</span>)\n<span class=\"ruby-keyword\">end</span>\n</pre>\n<p>++\n"],["tempo","MIDI::Sequence","MIDI/Sequence.html#method-i-tempo","()",""],["tempo","MIDI::Tempo","MIDI/Tempo.html#method-i-tempo","()",""],["tempo=","MIDI::Tempo","MIDI/Tempo.html#method-i-tempo-3D","(val)",""],["text","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-text","(type, msg)",""],["text","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-text","(type, msg)","\n<pre class=\"ruby\"><span class=\"ruby-keyword\">def</span> <span class=\"ruby-identifier\">sequence_number</span>(<span class=\"ruby-identifier\">num</span>)\n<span class=\"ruby-keyword\">end</span>\n</pre>\n<p>++\n"],["time_signature","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-time_signature","(numer, denom, clocks, qnotes)",""],["time_signature","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-time_signature","(numer, denom, clocks, qnotes)","<p>-- Don't bother adding the META_TRACK_END event to the track. This way, we\ndon't have to worry about ...\n"],["time_signature","MIDI::Sequence","MIDI/Sequence.html#method-i-time_signature","(numer, denom, clocks, qnotes)","<p>Sets the time signature.\n"],["to_mbt","MIDI::Measures","MIDI/Measures.html#method-i-to_mbt","(e)","<p>Returns the event's time as a formatted MBT string (Measure:Beat:Ticks) as\nfound in MIDI sequencers. ...\n"],["to_s","MIDI::ActiveSense","MIDI/ActiveSense.html#method-i-to_s","()",""],["to_s","MIDI::ChannelEvent","MIDI/ChannelEvent.html#method-i-to_s","()",""],["to_s","MIDI::ChannelPressure","MIDI/ChannelPressure.html#method-i-to_s","()",""],["to_s","MIDI::Clock","MIDI/Clock.html#method-i-to_s","()",""],["to_s","MIDI::Continue","MIDI/Continue.html#method-i-to_s","()",""],["to_s","MIDI::Controller","MIDI/Controller.html#method-i-to_s","()",""],["to_s","MIDI::Event","MIDI/Event.html#method-i-to_s","()",""],["to_s","MIDI::KeySig","MIDI/KeySig.html#method-i-to_s","()","<p>Returns the key signature as a text string. Example: \"key sig A flat major\"\n"],["to_s","MIDI::Measure","MIDI/Measure.html#method-i-to_s","()","<p>Returns a detailed string with information about the measure\n"],["to_s","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-to_s","()",""],["to_s","MIDI::NoteOff","MIDI/NoteOff.html#method-i-to_s","()",""],["to_s","MIDI::NoteOff","MIDI/NoteOff.html#method-i-to_s","()",""],["to_s","MIDI::NoteOn","MIDI/NoteOn.html#method-i-to_s","()",""],["to_s","MIDI::NoteOn","MIDI/NoteOn.html#method-i-to_s","()",""],["to_s","MIDI::PitchBend","MIDI/PitchBend.html#method-i-to_s","()",""],["to_s","MIDI::PolyPressure","MIDI/PolyPressure.html#method-i-to_s","()",""],["to_s","MIDI::ProgramChange","MIDI/ProgramChange.html#method-i-to_s","()",""],["to_s","MIDI::Realtime","MIDI/Realtime.html#method-i-to_s","()",""],["to_s","MIDI::SongPointer","MIDI/SongPointer.html#method-i-to_s","()",""],["to_s","MIDI::SongSelect","MIDI/SongSelect.html#method-i-to_s","()",""],["to_s","MIDI::Start","MIDI/Start.html#method-i-to_s","()",""],["to_s","MIDI::Stop","MIDI/Stop.html#method-i-to_s","()",""],["to_s","MIDI::SystemExclusive","MIDI/SystemExclusive.html#method-i-to_s","()",""],["to_s","MIDI::SystemReset","MIDI/SystemReset.html#method-i-to_s","()",""],["to_s","MIDI::Tempo","MIDI/Tempo.html#method-i-to_s","()",""],["to_s","MIDI::TimeSig","MIDI/TimeSig.html#method-i-to_s","()","<p>Returns the time signature for the event as a string. Example: \"time sig\n3/4\"\n"],["to_s","MIDI::TuneRequest","MIDI/TuneRequest.html#method-i-to_s","()",""],["track_uses_channel","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-track_uses_channel","(chan)","<p>Return true if the current track uses the specified channel.\n"],["write","MIDI::Sequence","MIDI/Sequence.html#method-i-write","(io, proc = nil)","<p>Writes to a MIDI stream.\n"],["write16","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-write16","(val)","<p>Write a sixteen-bit value.\n"],["write16","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write16","(val)",""],["write32","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-write32","(val)","<p>Write a 32-bit value.\n"],["write32","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write32","(val)",""],["write_bytes","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_bytes","(bytes)",""],["write_header","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_header","()",""],["write_instrument","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_instrument","(instrument)",""],["write_to","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_to","(io)","<p>Writes a MIDI format 1 file.\n"],["write_track","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_track","(track)",""],["write_var_len","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-write_var_len","(val)","<p>Write a variable length value.\n"],["write_var_len","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_var_len","(val)",""],["README","","README_rdoc.html","","<p>midilib\n<p>midilib is a pure Ruby MIDI library useful for reading and writing standard\nMIDI files and manipulating ...\n"],["TODO","","TODO_rdoc.html","","<p>Bugs\n<p>No known bugs. (If that's not a challenge, I don't know what is.)\n<p>Features\n"]]}}
|
1
|
+
var search_data = {"index":{"searchIndex":["midi","activesense","channelevent","channelpressure","clock","continue","controller","event","io","midifile","seqreader","seqwriter","keysig","marker","measure","measures","metaevent","noteevent","noteoff","noteoffevent","noteon","noteonevent","pitchbend","polypressure","programchange","realtime","sequence","songpointer","songselect","start","stop","systemcommon","systemexclusive","systemreset","tempo","timesig","track","tunerequest","utils","object","<=>()","arbitrary()","as_var_len()","bad_byte()","beats_per_minute()","bpm()","bpm_to_mpq()","bytes_as_str()","chan_message()","chan_pressure()","chan_pressure()","channel_to_s()","contains_event?()","controller()","controller()","data=()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_bytes()","data_as_str()","denominator()","each()","each()","end_track()","end_track()","eot()","error()","get_bytes()","get_measures()","getc()","handle_arbitrary()","handle_sysex()","header()","header()","instrument()","instrument=()","key_signature()","key_signature()","length_to_delta()","major_key?()","make_note_off()","measure_duration()","measure_for_event()","merge()","merge_event_lists()","mergesort()","mergesort_merge()","mergesort_split()","meta_event()","meta_misc()","meta_misc()","metronome_ticks()","minor_key?()","mpq_to_bpm()","msg()","msg_add()","msg_init()","msg_read()","name()","name()","name=()","name=()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","note_off()","note_off()","note_on()","note_on()","note_to_delta()","note_to_length()","note_to_s()","note_to_s()","number_to_s()","numerator()","pch_oct()","pitch_bend()","pitch_bend()","possibly_munge_due_to_running_status_byte()","pressure()","pressure()","pressure()","pressure=()","program()","program()","pulses_to_seconds()","quantize()","quantize_to()","read()","read16()","read32()","read_from()","read_header()","read_mt_header_string()","read_track()","read_var_len()","recalc_delta_from_times()","recalc_times()","sequence_number()","sequencer_specific()","sharpflat()","smpte()","sort()","start_track()","start_track()","str_as_bytes()","sysex()","sysex()","tempo()","tempo()","tempo()","tempo()","tempo=()","text()","text()","time_signature()","time_signature()","time_signature()","to_code()","to_mbt()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","to_s()","track_uses_channel()","write()","write16()","write16()","write32()","write32()","write_bytes()","write_header()","write_instrument()","write_to()","write_track()","write_var_len()","write_var_len()","readme","todo"],"longSearchIndex":["midi","midi::activesense","midi::channelevent","midi::channelpressure","midi::clock","midi::continue","midi::controller","midi::event","midi::io","midi::io::midifile","midi::io::seqreader","midi::io::seqwriter","midi::keysig","midi::marker","midi::measure","midi::measures","midi::metaevent","midi::noteevent","midi::noteoff","midi::noteoffevent","midi::noteon","midi::noteonevent","midi::pitchbend","midi::polypressure","midi::programchange","midi::realtime","midi::sequence","midi::songpointer","midi::songselect","midi::start","midi::stop","midi::systemcommon","midi::systemexclusive","midi::systemreset","midi::tempo","midi::timesig","midi::track","midi::tunerequest","midi::utils","object","midi::event#<=>()","midi::io::midifile#arbitrary()","midi::utils::as_var_len()","midi::io::midifile#bad_byte()","midi::sequence#beats_per_minute()","midi::sequence#bpm()","midi::tempo::bpm_to_mpq()","midi::metaevent::bytes_as_str()","midi::io::midifile#chan_message()","midi::io::midifile#chan_pressure()","midi::io::seqreader#chan_pressure()","midi::event#channel_to_s()","midi::measure#contains_event?()","midi::io::midifile#controller()","midi::io::seqreader#controller()","midi::metaevent#data=()","midi::channelpressure#data_as_bytes()","midi::controller#data_as_bytes()","midi::event#data_as_bytes()","midi::keysig#data_as_bytes()","midi::metaevent#data_as_bytes()","midi::noteevent#data_as_bytes()","midi::pitchbend#data_as_bytes()","midi::programchange#data_as_bytes()","midi::realtime#data_as_bytes()","midi::songpointer#data_as_bytes()","midi::songselect#data_as_bytes()","midi::systemexclusive#data_as_bytes()","midi::tempo#data_as_bytes()","midi::timesig#data_as_bytes()","midi::tunerequest#data_as_bytes()","midi::metaevent#data_as_str()","midi::timesig#denominator()","midi::sequence#each()","midi::track#each()","midi::io::midifile#end_track()","midi::io::seqreader#end_track()","midi::io::midifile#eot()","midi::io::midifile#error()","midi::io::midifile#get_bytes()","midi::sequence#get_measures()","midi::io::midifile#getc()","midi::io::midifile#handle_arbitrary()","midi::io::midifile#handle_sysex()","midi::io::midifile#header()","midi::io::seqreader#header()","midi::track#instrument()","midi::track#instrument=()","midi::io::midifile#key_signature()","midi::io::seqreader#key_signature()","midi::sequence#length_to_delta()","midi::keysig#major_key?()","midi::io::seqreader#make_note_off()","midi::timesig#measure_duration()","midi::measures#measure_for_event()","midi::track#merge()","midi::track#merge_event_lists()","object#mergesort()","object#mergesort_merge()","object#mergesort_split()","midi::io::midifile#meta_event()","midi::io::midifile#meta_misc()","midi::io::seqreader#meta_misc()","midi::timesig#metronome_ticks()","midi::keysig#minor_key?()","midi::tempo::mpq_to_bpm()","midi::io::midifile#msg()","midi::io::midifile#msg_add()","midi::io::midifile#msg_init()","midi::io::midifile#msg_read()","midi::sequence#name()","midi::track#name()","midi::sequence#name=()","midi::track#name=()","midi::activesense::new()","midi::channelevent::new()","midi::channelpressure::new()","midi::clock::new()","midi::continue::new()","midi::controller::new()","midi::event::new()","midi::io::midifile::new()","midi::io::seqreader::new()","midi::io::seqwriter::new()","midi::keysig::new()","midi::marker::new()","midi::measure::new()","midi::measures::new()","midi::metaevent::new()","midi::noteevent::new()","midi::noteoff::new()","midi::noteoff::new()","midi::noteon::new()","midi::noteon::new()","midi::pitchbend::new()","midi::polypressure::new()","midi::programchange::new()","midi::realtime::new()","midi::sequence::new()","midi::songpointer::new()","midi::songselect::new()","midi::start::new()","midi::stop::new()","midi::systemcommon::new()","midi::systemexclusive::new()","midi::systemreset::new()","midi::tempo::new()","midi::timesig::new()","midi::track::new()","midi::tunerequest::new()","midi::io::midifile#note_off()","midi::io::seqreader#note_off()","midi::io::midifile#note_on()","midi::io::seqreader#note_on()","midi::sequence#note_to_delta()","midi::sequence#note_to_length()","midi::noteevent#note_to_s()","midi::utils::note_to_s()","midi::event#number_to_s()","midi::timesig#numerator()","midi::noteevent#pch_oct()","midi::io::midifile#pitch_bend()","midi::io::seqreader#pitch_bend()","midi::io::seqwriter#possibly_munge_due_to_running_status_byte()","midi::io::midifile#pressure()","midi::io::seqreader#pressure()","midi::polypressure#pressure()","midi::polypressure#pressure=()","midi::io::midifile#program()","midi::io::seqreader#program()","midi::sequence#pulses_to_seconds()","midi::track#quantize()","midi::event#quantize_to()","midi::sequence#read()","midi::io::midifile#read16()","midi::io::midifile#read32()","midi::io::midifile#read_from()","midi::io::midifile#read_header()","midi::io::midifile#read_mt_header_string()","midi::io::midifile#read_track()","midi::io::midifile#read_var_len()","midi::track#recalc_delta_from_times()","midi::track#recalc_times()","midi::io::midifile#sequence_number()","midi::io::midifile#sequencer_specific()","midi::keysig#sharpflat()","midi::io::midifile#smpte()","midi::track#sort()","midi::io::midifile#start_track()","midi::io::seqreader#start_track()","midi::metaevent::str_as_bytes()","midi::io::midifile#sysex()","midi::io::seqreader#sysex()","midi::io::midifile#tempo()","midi::io::seqreader#tempo()","midi::sequence#tempo()","midi::tempo#tempo()","midi::tempo#tempo=()","midi::io::midifile#text()","midi::io::seqreader#text()","midi::io::midifile#time_signature()","midi::io::seqreader#time_signature()","midi::sequence#time_signature()","midi::keysig#to_code()","midi::measures#to_mbt()","midi::activesense#to_s()","midi::channelevent#to_s()","midi::channelpressure#to_s()","midi::clock#to_s()","midi::continue#to_s()","midi::controller#to_s()","midi::event#to_s()","midi::keysig#to_s()","midi::measure#to_s()","midi::metaevent#to_s()","midi::noteoff#to_s()","midi::noteoff#to_s()","midi::noteon#to_s()","midi::noteon#to_s()","midi::pitchbend#to_s()","midi::polypressure#to_s()","midi::programchange#to_s()","midi::realtime#to_s()","midi::songpointer#to_s()","midi::songselect#to_s()","midi::start#to_s()","midi::stop#to_s()","midi::systemexclusive#to_s()","midi::systemreset#to_s()","midi::tempo#to_s()","midi::timesig#to_s()","midi::tunerequest#to_s()","midi::io::seqreader#track_uses_channel()","midi::sequence#write()","midi::io::midifile#write16()","midi::io::seqwriter#write16()","midi::io::midifile#write32()","midi::io::seqwriter#write32()","midi::io::seqwriter#write_bytes()","midi::io::seqwriter#write_header()","midi::io::seqwriter#write_instrument()","midi::io::seqwriter#write_to()","midi::io::seqwriter#write_track()","midi::io::midifile#write_var_len()","midi::io::seqwriter#write_var_len()","",""],"info":[["MIDI","","MIDI.html","","<p>MIDI constants.\n"],["MIDI::ActiveSense","","MIDI/ActiveSense.html","",""],["MIDI::ChannelEvent","","MIDI/ChannelEvent.html","","<p>The abstract superclass of all channel events (events that have a MIDI channel, like notes and program …\n"],["MIDI::ChannelPressure","","MIDI/ChannelPressure.html","",""],["MIDI::Clock","","MIDI/Clock.html","",""],["MIDI::Continue","","MIDI/Continue.html","",""],["MIDI::Controller","","MIDI/Controller.html","",""],["MIDI::Event","","MIDI/Event.html","","<p>The abstract superclass of all MIDI events.\n"],["MIDI::IO","","MIDI/IO.html","",""],["MIDI::IO::MIDIFile","","MIDI/IO/MIDIFile.html","","<p>A MIDIFile parses a MIDI file and calls methods when it sees MIDI events. Most of the methods are stubs. …\n"],["MIDI::IO::SeqReader","","MIDI/IO/SeqReader.html","","<p>Reads MIDI files. As a subclass of MIDIFile, this class implements the callback methods for each MIDI …\n"],["MIDI::IO::SeqWriter","","MIDI/IO/SeqWriter.html","",""],["MIDI::KeySig","","MIDI/KeySig.html","","<p>Container for key signature events\n"],["MIDI::Marker","","MIDI/Marker.html","",""],["MIDI::Measure","","MIDI/Measure.html","","<p>The Measure class contains information about a measure from the sequence. The measure data is based on …\n"],["MIDI::Measures","","MIDI/Measures.html","","<p>A specialized container for MIDI::Measure objects, which can be use to map event times to measure numbers. …\n"],["MIDI::MetaEvent","","MIDI/MetaEvent.html","",""],["MIDI::NoteEvent","","MIDI/NoteEvent.html","","<p>The abstract superclass of all note on, and note off, and polyphonic pressure events.\n"],["MIDI::NoteOff","","MIDI/NoteOff.html","",""],["MIDI::NoteOffEvent","","MIDI/NoteOff.html","",""],["MIDI::NoteOn","","MIDI/NoteOn.html","",""],["MIDI::NoteOnEvent","","MIDI/NoteOn.html","",""],["MIDI::PitchBend","","MIDI/PitchBend.html","",""],["MIDI::PolyPressure","","MIDI/PolyPressure.html","",""],["MIDI::ProgramChange","","MIDI/ProgramChange.html","",""],["MIDI::Realtime","","MIDI/Realtime.html","",""],["MIDI::Sequence","","MIDI/Sequence.html","","<p>A MIDI::Sequence contains MIDI::Track objects.\n"],["MIDI::SongPointer","","MIDI/SongPointer.html","",""],["MIDI::SongSelect","","MIDI/SongSelect.html","",""],["MIDI::Start","","MIDI/Start.html","",""],["MIDI::Stop","","MIDI/Stop.html","",""],["MIDI::SystemCommon","","MIDI/SystemCommon.html","",""],["MIDI::SystemExclusive","","MIDI/SystemExclusive.html","",""],["MIDI::SystemReset","","MIDI/SystemReset.html","",""],["MIDI::Tempo","","MIDI/Tempo.html","",""],["MIDI::TimeSig","","MIDI/TimeSig.html","","<p>Container for time signature events\n"],["MIDI::Track","","MIDI/Track.html","","<p>A Track is a list of events.\n<p>When you modify the <code>events</code> array, make sure to call recalc_times so each …\n"],["MIDI::TuneRequest","","MIDI/TuneRequest.html","",""],["MIDI::Utils","","MIDI/Utils.html","","<p>Utility methods.\n"],["Object","","Object.html","",""],["<=>","MIDI::Event","MIDI/Event.html#method-i-3C-3D-3E","(other)","<p>For sorting. Uses @time_from_start, which is maintained by this event’s track. I’m not sure this …\n"],["arbitrary","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-arbitrary","(msg)",""],["as_var_len","MIDI::Utils","MIDI/Utils.html#method-c-as_var_len","(val)","<p>Given an integer, returns it as a variable length array of bytes (the format used by MIDI files).\n<p>The …\n"],["bad_byte","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-bad_byte","(c)","<p>Handle an unexpected byte.\n"],["beats_per_minute","MIDI::Sequence","MIDI/Sequence.html#method-i-beats_per_minute","()","<p>Returns the song tempo in beats per minute.\n"],["bpm","MIDI::Sequence","MIDI/Sequence.html#method-i-bpm","()",""],["bpm_to_mpq","MIDI::Tempo","MIDI/Tempo.html#method-c-bpm_to_mpq","(bpm)","<p>Translates beats per minute to microseconds per quarter note (beat).\n"],["bytes_as_str","MIDI::MetaEvent","MIDI/MetaEvent.html#method-c-bytes_as_str","(bytes)",""],["chan_message","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-chan_message","(running, status, c1, c2)","<p>Handle a channel message (note on, note off, etc.)\n"],["chan_pressure","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-chan_pressure","(chan, press)",""],["chan_pressure","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-chan_pressure","(chan, press)",""],["channel_to_s","MIDI::Event","MIDI/Event.html#method-i-channel_to_s","(val)","<p>Returns <code>val</code> as a decimal or hex string, depending upon the value of @print_decimal_numbers.\n"],["contains_event?","MIDI::Measure","MIDI/Measure.html#method-i-contains_event-3F","(e)","<p>Returns <code>true</code> if the event is in the measure\n"],["controller","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-controller","(chan, control, value)",""],["controller","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-controller","(chan, control, value)",""],["data=","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-data-3D","(data)","<p>Stores bytes. If data is a string, splits it into an array of bytes.\n"],["data_as_bytes","MIDI::ChannelPressure","MIDI/ChannelPressure.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Controller","MIDI/Controller.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Event","MIDI/Event.html#method-i-data_as_bytes","()","<p>Returns the raw bytes that are written to a MIDI file or output to a MIDI stream. In MIDI::EVENT this …\n"],["data_as_bytes","MIDI::KeySig","MIDI/KeySig.html#method-i-data_as_bytes","()","<p>Returns the complete event as stored in the sequence\n"],["data_as_bytes","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::NoteEvent","MIDI/NoteEvent.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::PitchBend","MIDI/PitchBend.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::ProgramChange","MIDI/ProgramChange.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Realtime","MIDI/Realtime.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::SongPointer","MIDI/SongPointer.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::SongSelect","MIDI/SongSelect.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::SystemExclusive","MIDI/SystemExclusive.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::Tempo","MIDI/Tempo.html#method-i-data_as_bytes","()",""],["data_as_bytes","MIDI::TimeSig","MIDI/TimeSig.html#method-i-data_as_bytes","()","<p>Returns the complete event as stored in the sequence\n"],["data_as_bytes","MIDI::TuneRequest","MIDI/TuneRequest.html#method-i-data_as_bytes","()",""],["data_as_str","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-data_as_str","()",""],["denominator","MIDI::TimeSig","MIDI/TimeSig.html#method-i-denominator","()","<p>Returns the denominator of the time signature. Use it as a power of 2 to get the displayed (lower-part) …\n"],["each","MIDI::Sequence","MIDI/Sequence.html#method-i-each","()","<p>Iterates over the tracks.\n"],["each","MIDI::Track","MIDI/Track.html#method-i-each","()","<p>Iterate over events.\n"],["end_track","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-end_track","()",""],["end_track","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-end_track","()",""],["eot","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-eot","()",""],["error","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-error","(str)","<p>The default error handler.\n"],["get_bytes","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-get_bytes","(n)","<p>Return the next <code>n</code> bytes from @io as an array.\n"],["get_measures","MIDI::Sequence","MIDI/Sequence.html#method-i-get_measures","()","<p>Returns a Measures object, which is an array container for all measures in the sequence\n"],["getc","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-getc","()","<p>This default getc implementation tries to read a single byte from io and returns it as an integer.\n"],["handle_arbitrary","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-handle_arbitrary","(msg)","<p>Copy message into raw data array, then call arbitrary().\n"],["handle_sysex","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-handle_sysex","(msg)","<p>Copy message into raw data array, then call sysex().\n"],["header","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-header","(format, ntrks, division)","<p>MIDI header.\n"],["header","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-header","(format, ntrks, division)",""],["instrument","MIDI::Track","MIDI/Track.html#method-i-instrument","()",""],["instrument=","MIDI::Track","MIDI/Track.html#method-i-instrument-3D","(str_or_bytes)",""],["key_signature","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-key_signature","(sharpflat, is_minor)",""],["key_signature","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-key_signature","(sharpflat, is_minor)",""],["length_to_delta","MIDI::Sequence","MIDI/Sequence.html#method-i-length_to_delta","(length)","<p>Translates <code>length</code> (a multiple of a quarter note) into a delta time. For example, 1 is a quarter note, …\n"],["major_key?","MIDI::KeySig","MIDI/KeySig.html#method-i-major_key-3F","()","<p>Returns true if it’s a major key, false if minor key\n"],["make_note_off","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-make_note_off","(on, vel)",""],["measure_duration","MIDI::TimeSig","MIDI/TimeSig.html#method-i-measure_duration","(ppqn)","<p>Calculates the duration (in ticks) for a full measure\n"],["measure_for_event","MIDI::Measures","MIDI/Measures.html#method-i-measure_for_event","(e)","<p>Returns the MIDI::Measure object where the event is located. Returns <code>nil</code> if the event isn’t found …\n"],["merge","MIDI::Track","MIDI/Track.html#method-i-merge","(event_list)","<p>Merges an array of events into our event list. After merging, the events’ time_from_start values …\n"],["merge_event_lists","MIDI::Track","MIDI/Track.html#method-i-merge_event_lists","(list1, list2)","<p>Merges two event arrays together. Does not modify this track.\n"],["mergesort","Object","Object.html#method-i-mergesort","(arr, &cmp)","<p>A stable sorting algorithm that maintains the relative order of equal elements.\n<p>This code used to be in …\n"],["mergesort_merge","Object","Object.html#method-i-mergesort_merge","(first, second, &predicate)",""],["mergesort_split","Object","Object.html#method-i-mergesort_split","(arr)",""],["meta_event","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-meta_event","(type)","<p>Handle a meta event.\n"],["meta_misc","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-meta_misc","(type, msg)",""],["meta_misc","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-meta_misc","(type, msg)",""],["metronome_ticks","MIDI::TimeSig","MIDI/TimeSig.html#method-i-metronome_ticks","()","<p>Returns the metronome tick duration for the time signature. On each quarter note, there’s 24 ticks. …\n"],["minor_key?","MIDI::KeySig","MIDI/KeySig.html#method-i-minor_key-3F","()","<p>Returns true if it’s a minor key, false if major key\n"],["mpq_to_bpm","MIDI::Tempo","MIDI/Tempo.html#method-c-mpq_to_bpm","(mpq)","<p>Translates microseconds per quarter note (beat) to beats per minute.\n"],["msg","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg","()","<p>Return a copy of the internal message buffer.\n"],["msg_add","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg_add","(c)","<p>Add a byte to the current message buffer.\n"],["msg_init","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg_init","()","<p>Initialize the internal message buffer.\n"],["msg_read","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-msg_read","(n_bytes)","<p>Read and add a number of bytes to the message buffer. Return the last byte (so we can see if it’s …\n"],["name","MIDI::Sequence","MIDI/Sequence.html#method-i-name","()","<p>Returns the name of the first track (track zero). If there are no tracks, returns UNNAMED.\n"],["name","MIDI::Track","MIDI/Track.html#method-i-name","()","<p>Return track name. If there is no name, return UNNAMED.\n"],["name=","MIDI::Sequence","MIDI/Sequence.html#method-i-name-3D","(name)","<p>Hands the name to the first track. Does nothing if there are no tracks.\n"],["name=","MIDI::Track","MIDI/Track.html#method-i-name-3D","(name)","<p>Set track name. Replaces or creates a name meta-event.\n"],["new","MIDI::ActiveSense","MIDI/ActiveSense.html#method-c-new","(delta_time = 0)",""],["new","MIDI::ChannelEvent","MIDI/ChannelEvent.html#method-c-new","(status, channel, delta_time)",""],["new","MIDI::ChannelPressure","MIDI/ChannelPressure.html#method-c-new","(channel = 0, pressure = 0, delta_time = 0)",""],["new","MIDI::Clock","MIDI/Clock.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Continue","MIDI/Continue.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Controller","MIDI/Controller.html#method-c-new","(channel = 0, controller = 0, value = 0, delta_time = 0)",""],["new","MIDI::Event","MIDI/Event.html#method-c-new","(status = 0, delta_time = 0)",""],["new","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-c-new","()",""],["new","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-c-new","(seq)","<p>The optional &block is called once at the start of the file and again at the end of each track. …\n"],["new","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-c-new","(seq, midi_format = 1)",""],["new","MIDI::KeySig","MIDI/KeySig.html#method-c-new","(sharpflat, is_minor, delta_time = 0)","<p>Constructor\n"],["new","MIDI::Marker","MIDI/Marker.html#method-c-new","(msg, delta_time = 0)",""],["new","MIDI::Measure","MIDI/Measure.html#method-c-new","(meas_no, start_time, duration, numer, denom, met_ticks)","<p>Constructor\n"],["new","MIDI::Measures","MIDI/Measures.html#method-c-new","(max_time, ppqd)","<p>Constructor\n"],["new","MIDI::MetaEvent","MIDI/MetaEvent.html#method-c-new","(meta_type, data = nil, delta_time = 0)",""],["new","MIDI::NoteEvent","MIDI/NoteEvent.html#method-c-new","(status, channel, note, velocity, delta_time)",""],["new","MIDI::NoteOff","MIDI/NoteOff.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::NoteOff","MIDI/NoteOff.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::NoteOn","MIDI/NoteOn.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::NoteOn","MIDI/NoteOn.html#method-c-new","(channel = 0, note = 64, velocity = 64, delta_time = 0)",""],["new","MIDI::PitchBend","MIDI/PitchBend.html#method-c-new","(channel = 0, value = 0, delta_time = 0)",""],["new","MIDI::PolyPressure","MIDI/PolyPressure.html#method-c-new","(channel = 0, note = 64, value = 0, delta_time = 0)",""],["new","MIDI::ProgramChange","MIDI/ProgramChange.html#method-c-new","(channel = 0, program = 0, delta_time = 0)",""],["new","MIDI::Realtime","MIDI/Realtime.html#method-c-new","(status, delta_time)",""],["new","MIDI::Sequence","MIDI/Sequence.html#method-c-new","()",""],["new","MIDI::SongPointer","MIDI/SongPointer.html#method-c-new","(pointer = 0, delta_time = 0)",""],["new","MIDI::SongSelect","MIDI/SongSelect.html#method-c-new","(song = 0, delta_time = 0)",""],["new","MIDI::Start","MIDI/Start.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Stop","MIDI/Stop.html#method-c-new","(delta_time = 0)",""],["new","MIDI::SystemCommon","MIDI/SystemCommon.html#method-c-new","(status, delta_time)",""],["new","MIDI::SystemExclusive","MIDI/SystemExclusive.html#method-c-new","(data, delta_time = 0)",""],["new","MIDI::SystemReset","MIDI/SystemReset.html#method-c-new","(delta_time = 0)",""],["new","MIDI::Tempo","MIDI/Tempo.html#method-c-new","(msecs_per_qnote, delta_time = 0)",""],["new","MIDI::TimeSig","MIDI/TimeSig.html#method-c-new","(numer, denom, clocks, qnotes, delta_time = 0)","<p>Constructor\n"],["new","MIDI::Track","MIDI/Track.html#method-c-new","(sequence)",""],["new","MIDI::TuneRequest","MIDI/TuneRequest.html#method-c-new","(delta_time = 0)",""],["note_off","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-note_off","(chan, note, vel)",""],["note_off","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-note_off","(chan, note, vel)",""],["note_on","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-note_on","(chan, note, vel)",""],["note_on","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-note_on","(chan, note, vel)",""],["note_to_delta","MIDI::Sequence","MIDI/Sequence.html#method-i-note_to_delta","(name)","<p>Given a note length name like “whole”, “dotted quarter”, or “8th triplet”, …\n"],["note_to_length","MIDI::Sequence","MIDI/Sequence.html#method-i-note_to_length","(name)","<p>Given a note length name like “whole”, “dotted quarter”, or “8th triplet”, …\n"],["note_to_s","MIDI::NoteEvent","MIDI/NoteEvent.html#method-i-note_to_s","()","<p>If @print_note_names is true, returns pch_oct(val) else returns value as a number using number_to_s. …\n"],["note_to_s","MIDI::Utils","MIDI/Utils.html#method-c-note_to_s","(num)","<p>Given a MIDI note number, return the name and octave as a string.\n"],["number_to_s","MIDI::Event","MIDI/Event.html#method-i-number_to_s","(val)","<p>Returns <code>val</code> as a decimal or hex string, depending upon the value of @print_decimal_numbers.\n"],["numerator","MIDI::TimeSig","MIDI/TimeSig.html#method-i-numerator","()","<p>Returns the numerator (the top digit) for the time signature\n"],["pch_oct","MIDI::NoteEvent","MIDI/NoteEvent.html#method-i-pch_oct","(val = @note)","<p>Returns note name as a pitch/octave string like “C4” or “F#6”.\n"],["pitch_bend","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-pitch_bend","(chan, msb, lsb)",""],["pitch_bend","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-pitch_bend","(chan, lsb, msb)",""],["possibly_munge_due_to_running_status_byte","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-possibly_munge_due_to_running_status_byte","(data, prev_status)","<p>If we can use a running status byte, delete the status byte from the given data. Return the status to …\n"],["pressure","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-pressure","(chan, note, press)",""],["pressure","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-pressure","(chan, note, press)",""],["pressure","MIDI::PolyPressure","MIDI/PolyPressure.html#method-i-pressure","()",""],["pressure=","MIDI::PolyPressure","MIDI/PolyPressure.html#method-i-pressure-3D","(val)",""],["program","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-program","(chan, program)",""],["program","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-program","(chan, program)",""],["pulses_to_seconds","MIDI::Sequence","MIDI/Sequence.html#method-i-pulses_to_seconds","(pulses)","<p>Pulses (also called ticks) are the units of delta times and event time_from_start values. This method …\n"],["quantize","MIDI::Track","MIDI/Track.html#method-i-quantize","(length_or_note)","<p>Quantize every event. length_or_note is either a length (1 = quarter, 0.25 = sixteenth, 4 = whole note) …\n"],["quantize_to","MIDI::Event","MIDI/Event.html#method-i-quantize_to","(boundary)","<p>Quantize this event’s time_from_start by moving it to the nearest multiple of <code>boundary</code>. See MIDI::Track#quantize …\n"],["read","MIDI::Sequence","MIDI/Sequence.html#method-i-read","(io)","<p>Reads a MIDI stream.\n"],["read16","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read16","()","<p>Read and return a sixteen bit value.\n"],["read32","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read32","()","<p>Read and return a 32-bit value.\n"],["read_from","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_from","(io)","<p>The only public method. Each MIDI event in the file causes a method to be called.\n"],["read_header","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_header","()","<p>Read a header chunk.\n"],["read_mt_header_string","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_mt_header_string","(bytes, skip)","<p>Read through ‘MThd’ or ‘MTrk’ header string. If skip is true, attempt to skip initial …\n"],["read_track","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_track","()","<p>Read a track chunk.\n"],["read_var_len","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-read_var_len","()","<p>Read a varlen value.\n"],["recalc_delta_from_times","MIDI::Track","MIDI/Track.html#method-i-recalc_delta_from_times","(starting_at = 0, list = @events)","<p>The opposite of recalc_times: recalculates delta_time for each event from each event’s time_from_start. …\n"],["recalc_times","MIDI::Track","MIDI/Track.html#method-i-recalc_times","(starting_at = 0, list = @events)","<p>Recalculate start times for all events in <code>list</code> from starting_at to end.\n"],["sequence_number","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-sequence_number","(num)",""],["sequencer_specific","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-sequencer_specific","(type, msg)",""],["sharpflat","MIDI::KeySig","MIDI/KeySig.html#method-i-sharpflat","()","<p>Returns the number of sharps/flats in the key sig. Negative for flats.\n"],["smpte","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-smpte","(hour, min, sec, frame, fract)",""],["sort","MIDI::Track","MIDI/Track.html#method-i-sort","(starting_at = 0, list = @events)","<p>Sort events by their time_from_start. After sorting, recalc_delta_from_times is called to make sure that …\n"],["start_track","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-start_track","(bytes_to_be_read)",""],["start_track","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-start_track","()",""],["str_as_bytes","MIDI::MetaEvent","MIDI/MetaEvent.html#method-c-str_as_bytes","(str)",""],["sysex","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-sysex","(msg)",""],["sysex","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-sysex","(msg)",""],["tempo","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-tempo","(microsecs)",""],["tempo","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-tempo","(microsecs)","<p>–\n\n<pre class=\"ruby\"><span class=\"ruby-keyword\">def</span> <span class=\"ruby-identifier ruby-title\">smpte</span>(<span class=\"ruby-identifier\">hour</span>, <span class=\"ruby-identifier\">min</span>, <span class=\"ruby-identifier\">sec</span>, <span class=\"ruby-identifier\">frame</span>, <span class=\"ruby-identifier\">fract</span>)\n<span class=\"ruby-keyword\">end</span>\n</pre>\n<p>++\n"],["tempo","MIDI::Sequence","MIDI/Sequence.html#method-i-tempo","()",""],["tempo","MIDI::Tempo","MIDI/Tempo.html#method-i-tempo","()",""],["tempo=","MIDI::Tempo","MIDI/Tempo.html#method-i-tempo-3D","(val)",""],["text","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-text","(type, msg)",""],["text","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-text","(type, msg)","\n<pre class=\"ruby\"><span class=\"ruby-keyword\">def</span> <span class=\"ruby-identifier ruby-title\">sequence_number</span>(<span class=\"ruby-identifier\">num</span>)\n<span class=\"ruby-keyword\">end</span>\n</pre>\n<p>++\n"],["time_signature","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-time_signature","(numer, denom, clocks, qnotes)",""],["time_signature","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-time_signature","(numer, denom, clocks, qnotes)","<p>– Don’t bother adding the META_TRACK_END event to the track. This way, we don’t have to worry …\n"],["time_signature","MIDI::Sequence","MIDI/Sequence.html#method-i-time_signature","(numer, denom, clocks, qnotes)","<p>Sets the time signature.\n"],["to_code","MIDI::KeySig","MIDI/KeySig.html#method-i-to_code","()","<p>Returns the key signature as a code. Example: “Ab” for “key sig A flat major”\n"],["to_mbt","MIDI::Measures","MIDI/Measures.html#method-i-to_mbt","(e)","<p>Returns the event’s time as a formatted MBT string (Measure:Beat:Ticks) as found in MIDI sequencers. …\n"],["to_s","MIDI::ActiveSense","MIDI/ActiveSense.html#method-i-to_s","()",""],["to_s","MIDI::ChannelEvent","MIDI/ChannelEvent.html#method-i-to_s","()",""],["to_s","MIDI::ChannelPressure","MIDI/ChannelPressure.html#method-i-to_s","()",""],["to_s","MIDI::Clock","MIDI/Clock.html#method-i-to_s","()",""],["to_s","MIDI::Continue","MIDI/Continue.html#method-i-to_s","()",""],["to_s","MIDI::Controller","MIDI/Controller.html#method-i-to_s","()",""],["to_s","MIDI::Event","MIDI/Event.html#method-i-to_s","()",""],["to_s","MIDI::KeySig","MIDI/KeySig.html#method-i-to_s","()","<p>Returns the key signature as a text string. Example: “key sig A flat major”\n"],["to_s","MIDI::Measure","MIDI/Measure.html#method-i-to_s","()","<p>Returns a detailed string with information about the measure\n"],["to_s","MIDI::MetaEvent","MIDI/MetaEvent.html#method-i-to_s","()",""],["to_s","MIDI::NoteOff","MIDI/NoteOff.html#method-i-to_s","()",""],["to_s","MIDI::NoteOff","MIDI/NoteOff.html#method-i-to_s","()",""],["to_s","MIDI::NoteOn","MIDI/NoteOn.html#method-i-to_s","()",""],["to_s","MIDI::NoteOn","MIDI/NoteOn.html#method-i-to_s","()",""],["to_s","MIDI::PitchBend","MIDI/PitchBend.html#method-i-to_s","()",""],["to_s","MIDI::PolyPressure","MIDI/PolyPressure.html#method-i-to_s","()",""],["to_s","MIDI::ProgramChange","MIDI/ProgramChange.html#method-i-to_s","()",""],["to_s","MIDI::Realtime","MIDI/Realtime.html#method-i-to_s","()",""],["to_s","MIDI::SongPointer","MIDI/SongPointer.html#method-i-to_s","()",""],["to_s","MIDI::SongSelect","MIDI/SongSelect.html#method-i-to_s","()",""],["to_s","MIDI::Start","MIDI/Start.html#method-i-to_s","()",""],["to_s","MIDI::Stop","MIDI/Stop.html#method-i-to_s","()",""],["to_s","MIDI::SystemExclusive","MIDI/SystemExclusive.html#method-i-to_s","()",""],["to_s","MIDI::SystemReset","MIDI/SystemReset.html#method-i-to_s","()",""],["to_s","MIDI::Tempo","MIDI/Tempo.html#method-i-to_s","()",""],["to_s","MIDI::TimeSig","MIDI/TimeSig.html#method-i-to_s","()","<p>Returns the time signature for the event as a string. Example: “time sig 3/4”\n"],["to_s","MIDI::TuneRequest","MIDI/TuneRequest.html#method-i-to_s","()",""],["track_uses_channel","MIDI::IO::SeqReader","MIDI/IO/SeqReader.html#method-i-track_uses_channel","(chan)","<p>Return true if the current track uses the specified channel.\n"],["write","MIDI::Sequence","MIDI/Sequence.html#method-i-write","(io, midi_format = 1)","<p>Writes to a MIDI stream. <code>midi_format</code> defaults to 1.\n"],["write16","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-write16","(val)","<p>Write a sixteen-bit value.\n"],["write16","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write16","(val)",""],["write32","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-write32","(val)","<p>Write a 32-bit value.\n"],["write32","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write32","(val)",""],["write_bytes","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_bytes","(bytes)",""],["write_header","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_header","()",""],["write_instrument","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_instrument","(instrument)",""],["write_to","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_to","(io)","<p>Writes a MIDI format 1 file.\n"],["write_track","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_track","(track)",""],["write_var_len","MIDI::IO::MIDIFile","MIDI/IO/MIDIFile.html#method-i-write_var_len","(val)","<p>Write a variable length value.\n"],["write_var_len","MIDI::IO::SeqWriter","MIDI/IO/SeqWriter.html#method-i-write_var_len","(val)",""],["README","","README_rdoc.html","","<p>midilib\n<p>midilib is a pure Ruby MIDI library useful for reading and writing standard MIDI files and manipulating …\n"],["TODO","","TODO_rdoc.html","","<p>Bugs\n<p>midilib does not handle tempo changes when calculating <code>beats_per_minute</code>. The tempo events are correctly …\n"]]}}
|
Binary file
|