Module Synth

type source =
  1. | Wave of Oscillator.waveform
  2. | Naive of Oscillator.waveform
  3. | Fm of {
    1. ratio : float;
    2. index : float;
    }
  4. | Noise
  5. | Pluck
type voice = {
  1. source : source;
  2. frequency : float;
  3. slide : float option;
  4. seconds : float;
  5. volume : float;
  6. fade : bool;
  7. effects : Pitch_effect.t list;
  8. envelope : Envelope.t option;
}
type t =
  1. | Voice of voice
  2. | Together of t list
  3. | After of t list
  4. | Samples of Signal.t
  5. | Filtered of filter * t
  6. | Echo of echo * t
  7. | Reverb of float * t
  8. | Panned of float * t
  9. | Processed of processed * t
and echo = {
  1. delay : float;
  2. feedback : float;
}
and filter = {
  1. kind : Filter.kind;
  2. cutoff : float;
  3. cutoff_to : float;
  4. q : float;
}
and processed = {
  1. make : unit -> Signal.stereo -> unit;
  2. tail : float;
}
val band_limited : bool Stdlib.ref
val voice : source -> float -> t
val lasting : float -> t -> t
val fading : t -> t
val louder : float -> t -> t
val sliding : float -> t -> t
val naive : t -> t
val with_effect : Pitch_effect.t -> t -> t
val faster : float -> t -> t
val pitched : float -> t -> t
val duration : t -> float
val render : t -> Signal.t
val render_stereo : t -> Signal.stereo
val tail : delay:float -> feedback:float -> float
val echo : delay:float -> feedback:float -> Signal.t -> Signal.t
val reverb : seconds:float -> ?mix:float -> Signal.t -> Signal.t
type running
val start : unit -> running
val continue : running -> voice -> int -> Signal.t * running
val release : running -> voice -> int -> Signal.t