sig
  type 'a t
  exception Not_a_wav_file of string
  type 'a read_ops = {
    really_input : '-> string -> int -> int -> unit;
    input_byte : '-> int;
    input : '-> string -> int -> int -> int;
    close : '-> unit;
  }
  val in_chan_ops : Pervasives.in_channel Wav.read_ops
  val fopen : string -> Pervasives.in_channel Wav.t
  val read_header : 'Wav.read_ops -> '-> 'Wav.t
  val in_chan_read_header :
    Pervasives.in_channel -> Pervasives.in_channel Wav.t
  val sample : 'Wav.t -> string -> int -> int -> int
  val info : 'Wav.t -> string
  val channels : 'Wav.t -> int
  val sample_rate : 'Wav.t -> int
  val sample_size : 'Wav.t -> int
  val data_length : 'Wav.t -> int
  val close : 'Wav.t -> unit
  val header :
    ?len:int ->
    channels:int -> sample_rate:int -> sample_size:int -> unit -> string
  val duration : 'Wav.t -> float
end