<html><head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of class types" rel=Appendix href="index_class_types.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Audio" rel="Chapter" href="Audio.html"> <link title="Image" rel="Chapter" href="Image.html"> <link title="MIDI" rel="Chapter" href="MIDI.html"> <link title="Ringbuffer" rel="Chapter" href="Ringbuffer.html"> <link title="Synth" rel="Chapter" href="Synth.html"> <link title="Video" rel="Chapter" href="Video.html"><title>MIDI</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">type</span> division = <span class="constructor">Ticks_per_quarter</span> <span class="keyword">of</span> int <span class="keywordsign">|</span> <span class="constructor">SMPTE</span> <span class="keyword">of</span> int * int<br> <span class="keyword">type</span> event =<br> <span class="constructor">Note_off</span> <span class="keyword">of</span> <span class="constructor">Audio</span>.<span class="constructor">Note</span>.t * float<br> <span class="keywordsign">|</span> <span class="constructor">Note_on</span> <span class="keyword">of</span> <span class="constructor">Audio</span>.<span class="constructor">Note</span>.t * float<br> <span class="keywordsign">|</span> <span class="constructor">Aftertouch</span> <span class="keyword">of</span> int * float<br> <span class="keywordsign">|</span> <span class="constructor">Control_change</span> <span class="keyword">of</span> int * int<br> <span class="keywordsign">|</span> <span class="constructor">Patch</span> <span class="keyword">of</span> int<br> <span class="keywordsign">|</span> <span class="constructor">Channel_aftertouch</span> <span class="keyword">of</span> int<br> <span class="keywordsign">|</span> <span class="constructor">Pitch</span> <span class="keyword">of</span> int<br> <span class="keywordsign">|</span> <span class="constructor">Sequence_number</span> <span class="keyword">of</span> int<br> <span class="keywordsign">|</span> <span class="constructor">Text</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">Copyright</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">Track_name</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">Instrument_name</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">Lyric</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">Marker</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">Cue</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="constructor">End_of_track</span><br> <span class="keywordsign">|</span> <span class="constructor">Tempo</span> <span class="keyword">of</span> int<br> <span class="keywordsign">|</span> <span class="constructor">Time_signature</span> <span class="keyword">of</span> int * int * int * int<br> <span class="keywordsign">|</span> <span class="constructor">Key_signature</span> <span class="keyword">of</span> int * bool<br> <span class="keywordsign">|</span> <span class="constructor">Custom</span> <span class="keyword">of</span> string<br> <span class="keyword">type</span> buffer<br> <span class="keyword">val</span> data : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> (int * <span class="constructor">MIDI</span>.event) list<br> <span class="keyword">val</span> create : int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.buffer<br> <span class="keyword">val</span> copy : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.buffer<br> <span class="keyword">val</span> blit : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> blit_all : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> merge : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> add : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> clear_all : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> insert : <span class="constructor">MIDI</span>.buffer <span class="keywordsign">-></span> int * <span class="constructor">MIDI</span>.event <span class="keywordsign">-></span> unit<br> <span class="keyword">module</span> <span class="constructor">Multitrack</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t = <span class="constructor">MIDI</span>.buffer array<br> <span class="keyword">type</span> buffer = <span class="constructor">MIDI</span>.<span class="constructor">Multitrack</span>.t<br> <span class="keyword">val</span> channels : <span class="constructor">MIDI</span>.<span class="constructor">Multitrack</span>.buffer <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> duration : <span class="constructor">MIDI</span>.<span class="constructor">Multitrack</span>.buffer <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> create : int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.<span class="constructor">Multitrack</span>.buffer<br> <span class="keyword">val</span> clear :<br> ?channel:int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.<span class="constructor">Multitrack</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">IO</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">module</span> <span class="constructor">Reader</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> t =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> close : unit<br> <span class="keyword">method</span> read :<br> int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.<span class="constructor">Multitrack</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int<br> <span class="keyword">end</span><br> <span class="keyword">class</span> of_file : string <span class="keywordsign">-></span> t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Writer</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">class</span> <span class="keyword">type</span> t =<br> <span class="keyword">object</span><br> <span class="keyword">method</span> advance : int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> close : unit<br> <span class="keyword">method</span> note_off : int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> float <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> note_on : int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> float <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> put : int <span class="keywordsign">-></span> <span class="constructor">MIDI</span>.event <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> to_file : int <span class="keywordsign">-></span> ?tracks:int <span class="keywordsign">-></span> string <span class="keywordsign">-></span> t<br> <span class="keyword">end</span><br> <span class="keyword">end</span><br> <span class="keyword">end</span></code></body></html>