sig
  val get_lame_version : unit -> string
  val get_lame_short_version : unit -> string
  val get_lame_very_short_version : unit -> string
  val get_lame_url : unit -> string
  val get_psy_version : unit -> string
  type encoder
  val create_encoder : unit -> Lame.encoder
  val set_in_samplerate : Lame.encoder -> int -> unit
  val set_num_channels : Lame.encoder -> int -> unit
  val set_out_samplerate : Lame.encoder -> int -> unit
  val set_quality : Lame.encoder -> int -> unit
  type mode = Stereo | Joint_stereo | Dual_channel | Mono
  val set_mode : Lame.encoder -> Lame.mode -> unit
  type vbr_mode = Vbr_off | Vbr_rh | Vbr_abr | Vbr_mtrh | Vbr_max_indicator
  val set_vbr_mode : Lame.encoder -> Lame.vbr_mode -> unit
  val set_vbr_quality : Lame.encoder -> int -> unit
  val set_vbr_mean_bitrate : Lame.encoder -> int -> unit
  val set_vbr_min_bitrate : Lame.encoder -> int -> unit
  val set_vbr_max_bitrate : Lame.encoder -> int -> unit
  val set_vbr_hard_min : Lame.encoder -> bool -> unit
  val set_brate : Lame.encoder -> int -> unit
  val set_compression_ratio : Lame.encoder -> float -> unit
  val set_private : Lame.encoder -> bool -> unit
  val get_private : Lame.encoder -> bool
  val set_copyright : Lame.encoder -> bool -> unit
  val get_copyright : Lame.encoder -> bool
  val set_original : Lame.encoder -> bool -> unit
  val get_original : Lame.encoder -> bool
  exception Init_params_failed
  val init_params : Lame.encoder -> unit
  val init_bitstream : Lame.encoder -> unit
  exception Init_params_not_called
  exception Psychoacoustic_problem
  exception Unknown_error of int
  val encode_buffer_part : Lame.encoder -> string -> int -> int -> string
  val encode_buffer : Lame.encoder -> string -> int -> string
  val encode_buffer_float_part :
    Lame.encoder -> float array -> float array -> int -> int -> string
  val encode_buffer_float :
    Lame.encoder -> float array -> float array -> int -> string
  val encode_flush : Lame.encoder -> string
  val encode_flush_nogap : Lame.encoder -> string
  module Id3tag :
    sig
      val init : Lame.encoder -> unit
      val set_title : Lame.encoder -> string -> unit
      val set_artist : Lame.encoder -> string -> unit
      val set_album : Lame.encoder -> string -> unit
      val set_year : Lame.encoder -> string -> unit
      val set_comment : Lame.encoder -> string -> unit
      val set_track : Lame.encoder -> string -> unit
      val set_genre : Lame.encoder -> string -> unit
    end
  type mpeg_version = Mpeg_1 | Mpeg_2 | Mpeg_2_5
  val get_version : Lame.encoder -> Lame.mpeg_version
  val get_encoder_delay : Lame.encoder -> int
  val get_framesize : Lame.encoder -> int
  val get_nb_samples_to_encode : Lame.encoder -> int
  val get_nb_encoded_frames : Lame.encoder -> int
  val get_nb_frames : Lame.encoder -> int
end