<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>Audio.Mono</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">type</span> buffer = float array<br> <span class="keyword">val</span> create : int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer<br> <span class="keyword">val</span> blit :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> copy : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer<br> <span class="keyword">val</span> duration : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> append : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer<br> <span class="keyword">val</span> clear : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> resample :<br> ?mode:[ <span class="keywordsign">`</span><span class="constructor">Linear</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Nearest</span> ] <span class="keywordsign">-></span><br> float <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer<br> <span class="keyword">val</span> clip : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> add :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> mult :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">module</span> <span class="constructor">Ringbuffer_ext</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> elt = float<br> <span class="keyword">type</span> buffer = elt array<br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> create : int <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> read_space : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> write_space : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> read_advance : t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> write_advance : t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> read : t <span class="keywordsign">-></span> buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> peek : t <span class="keywordsign">-></span> buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> write : t <span class="keywordsign">-></span> buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> transmit : t <span class="keywordsign">-></span> (buffer <span class="keywordsign">-></span> int <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">module</span> <span class="constructor">Ringbuffer</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> elt = float<br> <span class="keyword">type</span> buffer = elt array<br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> create : int <span class="keywordsign">-></span> t<br> <span class="keyword">val</span> read_space : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> write_space : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> read_advance : t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> write_advance : t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> read : t <span class="keywordsign">-></span> buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> peek : t <span class="keywordsign">-></span> buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> write : t <span class="keywordsign">-></span> buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> transmit : t <span class="keywordsign">-></span> (buffer <span class="keywordsign">-></span> int <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">module</span> <span class="constructor">Buffer_ext</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> create : int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Buffer_ext</span>.t<br> <span class="keyword">val</span> duration : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Buffer_ext</span>.t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> prepare : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Buffer_ext</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Analyze</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> rms : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> float<br> <span class="keyword">module</span> <span class="constructor">FFT</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> init : int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t<br> <span class="keyword">val</span> duration : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> complex_create :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Complex</span>.t array<br> <span class="keyword">val</span> fft : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> band_freq : int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> int <span class="keywordsign">-></span> float<br> <span class="keyword">module</span> <span class="constructor">Window</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> cosine : <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> hann : <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> hamming : <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> lanczos : <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> triangular : <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> bartlett_hann : <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> blackman :<br> ?alpha:float <span class="keywordsign">-></span><br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> nuttall :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> blackman_harris :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> blackman_nuttall :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span> <span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">val</span> notes :<br> int <span class="keywordsign">-></span><br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Analyze</span>.<span class="constructor">FFT</span>.t <span class="keywordsign">-></span><br> ?window:(<span class="constructor">Complex</span>.t array <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br> ?note_min:int <span class="keywordsign">-></span><br> ?note_max:int <span class="keywordsign">-></span><br> ?volume_min:float <span class="keywordsign">-></span><br> ?filter_harmonics:bool <span class="keywordsign">-></span><br> float array <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> (<span class="constructor">Audio</span>.<span class="constructor">Note</span>.t * float) list<br> <span class="keyword">val</span> loudest_note :<br> (<span class="constructor">Audio</span>.<span class="constructor">Note</span>.t * float) list <span class="keywordsign">-></span> (<span class="constructor">Audio</span>.<span class="constructor">Note</span>.t * float) option<br> <span class="keyword">end</span><br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Effect</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> compand_mu_law : float <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">class</span> <span class="keyword">type</span> t =<br> <span class="keyword">object</span> <span class="keyword">method</span> process : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit <span class="keyword">end</span><br> <span class="keyword">class</span> amplify : float <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> clip : float <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> biquad_filter :<br> int <span class="keywordsign">-></span><br> [ <span class="keywordsign">`</span><span class="constructor">All_pass</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Band_pass</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">High_pass</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">High_shelf</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Low_pass</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Low_shelf</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Notch</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Peaking</span> ] <span class="keywordsign">-></span> ?gain:float <span class="keywordsign">-></span> float <span class="keywordsign">-></span> float <span class="keywordsign">-></span> t<br> <span class="keyword">module</span> <span class="constructor">ADSR</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> make :<br> int <span class="keywordsign">-></span> float * float * float * float <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.t<br> <span class="keyword">type</span> state<br> <span class="keyword">val</span> init : unit <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.state<br> <span class="keyword">val</span> release :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.state <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.state<br> <span class="keyword">val</span> dead : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.state <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> process :<br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.state <span class="keywordsign">-></span><br> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.state<br> <span class="keyword">end</span><br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Generator</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> dead : bool<br> <span class="keyword">method</span> fill : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> fill_add : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.buffer <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> release : unit<br> <span class="keyword">method</span> set_frequency : float <span class="keywordsign">-></span> unit<br> <span class="keyword">method</span> set_volume : float <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">class</span> sine : int <span class="keywordsign">-></span> ?volume:float <span class="keywordsign">-></span> ?phase:float <span class="keywordsign">-></span> float <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> square : int <span class="keywordsign">-></span> ?volume:float <span class="keywordsign">-></span> ?phase:float <span class="keywordsign">-></span> float <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> saw : int <span class="keywordsign">-></span> ?volume:float <span class="keywordsign">-></span> ?phase:float <span class="keywordsign">-></span> float <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> white_noise : ?volume:float <span class="keywordsign">-></span> int <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> chain : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Generator</span>.t <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.t <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> add : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Generator</span>.t <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Generator</span>.t <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> mult : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Generator</span>.t <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Generator</span>.t <span class="keywordsign">-></span> t<br> <span class="keyword">class</span> adsr : <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Effect</span>.<span class="constructor">ADSR</span>.t <span class="keywordsign">-></span> <span class="constructor">Audio</span>.<span class="constructor">Mono</span>.<span class="constructor">Generator</span>.t <span class="keywordsign">-></span> t<br> <span class="keyword">end</span><br> <span class="keyword">end</span></code></body></html>