sig
  type t = Frame.t
  val duration : unit -> float
  val size : unit -> int
  val position : AFrame.t -> int
  val breaks : AFrame.t -> int list
  val add_break : AFrame.t -> int -> unit
  val set_breaks : AFrame.t -> int list -> unit
  val is_partial : AFrame.t -> bool
  val clear : AFrame.t -> unit
  val advance : AFrame.t -> unit
  exception No_metadata
  type metadata = (string, string) Hashtbl.t
  val free_metadata : AFrame.t -> int -> unit
  val set_metadata : AFrame.t -> int -> AFrame.metadata -> unit
  val get_metadata : AFrame.t -> int -> AFrame.metadata option
  val free_all_metadata : AFrame.t -> unit
  val get_all_metadata : AFrame.t -> (int * AFrame.metadata) list
  val set_all_metadata : AFrame.t -> (int * AFrame.metadata) list -> unit
  exception No_chunk
  val get_chunk : AFrame.t -> AFrame.t -> unit
  val content : AFrame.t -> int -> float array array
  val content_of_type : channels:int -> AFrame.t -> int -> float array array
  val to_s16le : AFrame.t -> string
  val blankify : AFrame.t -> int -> int -> unit
  val multiply : AFrame.t -> int -> int -> float -> unit
  val add : AFrame.t -> int -> AFrame.t -> int -> int -> unit
  val rms : AFrame.t -> int -> int -> float array
end