sig
  class type t =
    object method process : Audio.buffer -> int -> int -> unit end
  class chain : Audio.Effect.t -> Audio.Effect.t -> t
  class of_mono : int -> (unit -> Audio.Mono.Effect.t) -> t
  class type delay_t =
    object
      method process : buffer -> int -> int -> unit
      method set_delay : float -> unit
      method set_feedback : float -> unit
    end
  val delay :
    int ->
    int ->
    float -> ?once:bool -> ?ping_pong:bool -> float -> Audio.Effect.delay_t
  class compress :
    ?attack:float ->
    ?release:float ->
    ?threshold:float ->
    ?ratio:float ->
    ?knee:float ->
    ?rms_window:float ->
    ?gain:float ->
    int ->
    int ->
    object
      method process : buffer -> int -> int -> unit
      method reset : unit
      method set_attack : float -> unit
      method set_gain : float -> unit
      method set_knee : float -> unit
      method set_ratio : float -> unit
      method set_release : float -> unit
      method set_threshold : float -> unit
    end
  class biquad_filter :
    int ->
    int ->
    [ `All_pass
    | `Band_pass
    | `High_pass
    | `High_shelf
    | `Low_pass
    | `Low_shelf
    | `Notch
    | `Peaking ] -> ?gain:float -> float -> float -> t
  val auto_gain_control :
    int ->
    int ->
    ?rms_target:float ->
    ?rms_window:float ->
    ?kup:float ->
    ?kdown:float ->
    ?rms_threshold:float ->
    ?volume_init:float ->
    ?volume_min:float -> ?volume_max:float -> unit -> Audio.Effect.t
end