midilib 2.0.4 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +2 -1
  3. data/Credits +44 -2
  4. data/README.rdoc +13 -9
  5. data/Rakefile +36 -53
  6. data/TODO.rdoc +13 -2
  7. data/examples/from_scratch.rb +4 -6
  8. data/examples/measures_mbt.rb +11 -11
  9. data/examples/print_program_changes.rb +11 -11
  10. data/examples/reader2text.rb +191 -191
  11. data/examples/seq2text.rb +18 -18
  12. data/examples/split.rb +21 -20
  13. data/examples/strings.rb +15 -15
  14. data/examples/transpose.rb +41 -42
  15. data/html/MIDI/ActiveSense.html +89 -213
  16. data/html/MIDI/ChannelEvent.html +95 -224
  17. data/html/MIDI/ChannelPressure.html +103 -241
  18. data/html/MIDI/Clock.html +89 -213
  19. data/html/MIDI/Continue.html +89 -213
  20. data/html/MIDI/Controller.html +105 -246
  21. data/html/MIDI/Event.html +134 -358
  22. data/html/MIDI/IO/MIDIFile.html +544 -1148
  23. data/html/MIDI/IO/SeqReader.html +273 -577
  24. data/html/MIDI/IO/SeqWriter.html +233 -439
  25. data/html/MIDI/IO.html +48 -164
  26. data/html/MIDI/KeySig.html +148 -291
  27. data/html/MIDI/Marker.html +73 -192
  28. data/html/MIDI/Measure.html +104 -267
  29. data/html/MIDI/Measures.html +106 -259
  30. data/html/MIDI/MetaEvent.html +171 -352
  31. data/html/MIDI/NoteEvent.html +114 -276
  32. data/html/MIDI/NoteOff.html +95 -223
  33. data/html/MIDI/NoteOn.html +95 -223
  34. data/html/MIDI/PitchBend.html +104 -242
  35. data/html/MIDI/PolyPressure.html +102 -246
  36. data/html/MIDI/ProgramChange.html +103 -241
  37. data/html/MIDI/Realtime.html +96 -230
  38. data/html/MIDI/Sequence.html +256 -576
  39. data/html/MIDI/SongPointer.html +104 -242
  40. data/html/MIDI/SongSelect.html +103 -241
  41. data/html/MIDI/Start.html +89 -213
  42. data/html/MIDI/Stop.html +89 -213
  43. data/html/MIDI/SystemCommon.html +73 -192
  44. data/html/MIDI/SystemExclusive.html +106 -244
  45. data/html/MIDI/SystemReset.html +89 -213
  46. data/html/MIDI/Tempo.html +127 -309
  47. data/html/MIDI/TimeSig.html +119 -300
  48. data/html/MIDI/Track.html +214 -494
  49. data/html/MIDI/TuneRequest.html +96 -230
  50. data/html/MIDI/Utils.html +91 -233
  51. data/html/MIDI.html +142 -526
  52. data/html/Object.html +197 -0
  53. data/html/README_rdoc.html +280 -486
  54. data/html/TODO_rdoc.html +68 -145
  55. data/html/created.rid +15 -14
  56. data/html/css/fonts.css +167 -0
  57. data/html/css/rdoc.css +639 -0
  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 +230 -446
  69. data/html/js/darkfish.js +22 -91
  70. data/html/js/navigation.js +4 -41
  71. data/html/js/navigation.js.gz +0 -0
  72. data/html/js/search.js +41 -25
  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 +9 -8
  76. data/html/js/searcher.js.gz +0 -0
  77. data/html/table_of_contents.html +1111 -505
  78. data/install.rb +53 -34
  79. data/lib/midilib/consts.rb +406 -408
  80. data/lib/midilib/event.rb +335 -306
  81. data/lib/midilib/info.rb +5 -7
  82. data/lib/midilib/io/midifile.rb +424 -452
  83. data/lib/midilib/io/seqreader.rb +200 -192
  84. data/lib/midilib/io/seqwriter.rb +151 -147
  85. data/lib/midilib/measure.rb +78 -80
  86. data/lib/midilib/mergesort.rb +39 -0
  87. data/lib/midilib/sequence.rb +93 -87
  88. data/lib/midilib/track.rb +71 -118
  89. data/lib/midilib/utils.rb +17 -20
  90. data/lib/midilib.rb +5 -5
  91. data/test/event_equality.rb +50 -52
  92. data/test/test_event.rb +120 -124
  93. data/test/test_io.rb +118 -38
  94. data/test/test_mergesort.rb +37 -0
  95. data/test/test_midifile.rb +6 -19
  96. data/test/test_sequence.rb +62 -61
  97. data/test/test_track.rb +126 -155
  98. data/test/test_varlen.rb +23 -27
  99. metadata +67 -62
  100. data/html/IO.html +0 -259
  101. data/html/MIDI/MIDI/MIDI/Array.html +0 -353
  102. data/html/MIDI/MIDI/MIDI.html +0 -204
  103. data/html/MIDI/MIDI.html +0 -204
  104. data/html/js/jquery.js +0 -18
  105. 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
- var codeSections = $(target).
34
- parents('.method-detail').
35
- find('.method-source-code');
36
-
37
- $(target).
38
- parents('.method-detail').
39
- find('.method-source-code').
40
- slideToggle();
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
- $('.method-heading').click( showSource );
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 = $('#search-field').eq(0);
71
- var result = $('#search-results').eq(0);
72
- $(result).show();
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 = $('#search-section').get(0);
75
- $(search_section).show();
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="' + rdoc_rel_prefix + result.path + '">' + this.hlt(result.title);
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
- var result_element = result.get(0);
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 highlightTarget( anchor ) {
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
  });
@@ -10,10 +10,8 @@ Navigation = new function() {
10
10
  this.initNavigation = function() {
11
11
  var _this = this;
12
12
 
13
- $(document).keydown(function(e) {
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.$current)
63
- e.preventDefault();
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.$current);
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.$input = $(input);
4
- this.$result = $(result);
3
+ this.input = input;
4
+ this.result = result;
5
5
 
6
- this.$current = null;
7
- this.$view = this.$result.parent();
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 = $.extend({}, Navigation, new function() {
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
- _this.search(_this.$input[0].value);
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.$input.keyup(observer);
21
- this.$input.click(observer); // mac's clear field
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 = jQuery.trim(value).toLowerCase();
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.$result.empty();
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.$result.get(0);
59
+ var target = this.result;
52
60
  if (this.firstRun && (results.length > 0 || isLast)) {
53
- this.$current = null;
54
- this.$result.empty();
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
- target.appendChild(this.renderItem.call(this, results[i]));
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.$current = $(target.firstChild);
64
- this.$current.addClass('current');
73
+ this.current = target.firstChild;
74
+ this.current.classList.add('search-selected');
65
75
  }
66
- if (jQuery.browser.msie) this.$element[0].className += '';
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.$current) return;
71
- var $next = this.$current[isDown ? 'next' : 'prev']();
72
- if ($next.length) {
73
- this.$current.removeClass('current');
74
- $next.addClass('current');
75
- this.scrollIntoView($next[0], this.$view[0]);
76
- this.$current = $next;
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
  }
@@ -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 &amp;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