sig
  exception Invalid_file
  exception Invalid_operation
  exception End_of_stream
  module Reader :
    sig
      class type t =
        object
          method channels : int
          method close : unit
          method duration : int
          method duration_time : float
          method read : Audio.buffer -> int -> int -> int
          method sample_rate : int
          method seek : int -> unit
        end
      class of_wav_file : string -> t
    end
  module Writer :
    sig
      class type t =
        object
          method close : unit
          method write : Audio.buffer -> int -> int -> unit
        end
      class to_wav_file : int -> int -> string -> t
    end
  module RW :
    sig
      class type t =
        object
          method close : unit
          method read : Audio.buffer -> int -> int -> unit
          method write : Audio.buffer -> int -> int -> unit
        end
      class virtual bufferized :
        int ->
        min_duration:int ->
        fill_duration:int ->
        max_duration:int ->
        drop_duration:int ->
        object
          method virtual io_read : Audio.buffer -> int -> int -> unit
          method virtual io_write : Audio.buffer -> int -> int -> unit
          method read : Audio.buffer -> int -> int -> unit
          method write : Audio.buffer -> int -> int -> unit
        end
    end
end