sig
  type 'a t
  val version : string
  val tag_title : 'Taglib.t -> string
  val tag_artist : 'Taglib.t -> string
  val tag_album : 'Taglib.t -> string
  val tag_comment : 'Taglib.t -> string
  val tag_genre : 'Taglib.t -> string
  val tag_year : 'Taglib.t -> int
  val tag_track : 'Taglib.t -> int
  val tag_set_title : 'Taglib.t -> string -> unit
  val tag_set_artist : 'Taglib.t -> string -> unit
  val tag_set_album : 'Taglib.t -> string -> unit
  val tag_set_comment : 'Taglib.t -> string -> unit
  val tag_set_genre : 'Taglib.t -> string -> unit
  val tag_set_year : 'Taglib.t -> int -> unit
  val tag_set_track : 'Taglib.t -> int -> unit
  module File :
    sig
      type file_type =
          [ `Asf
          | `Autodetect
          | `Flac
          | `Mp4
          | `Mpc
          | `Mpeg
          | `OggFlac
          | `OggVorbis
          | `Speex
          | `TrueAudio
          | `WavPack ]
      type 'a file_tag constraint 'a = [< Taglib.File.file_type ]
      type 'a file = 'Taglib.File.file_tag Taglib.t
        constraint 'a = [< Taglib.File.file_type ]
      exception Closed
      exception Not_implemented
      exception Invalid_file
      val open_file :
        Taglib.File.file_type ->
        string -> Taglib.File.file_type Taglib.File.file
      val close_file : Taglib.File.file_type Taglib.File.file -> unit
      val file_save : Taglib.File.file_type Taglib.File.file -> bool
      val file_type :
        Taglib.File.file_type Taglib.File.file -> Taglib.File.file_type
      val audioproperties_length :
        Taglib.File.file_type Taglib.File.file -> int
      val audioproperties_bitrate :
        Taglib.File.file_type Taglib.File.file -> int
      val audioproperties_samplerate :
        Taglib.File.file_type Taglib.File.file -> int
      val audioproperties_channels :
        Taglib.File.file_type Taglib.File.file -> int
    end
  module Inline :
    sig
      module Id3v2 :
        sig
          type state = [ `Invalid | `Parsed | `Valid ]
          type 'a id3v2_tag constraint 'a = [< Taglib.Inline.Id3v2.state ]
          type 'a id3v2 = 'Taglib.Inline.Id3v2.id3v2_tag Taglib.t
            constraint 'a = [< Taglib.Inline.Id3v2.state ]
          type frame_type = string
          type frame_text = string
          val init : unit -> [ `Invalid ] Taglib.Inline.Id3v2.id3v2
          val header_size : int
          val parse_header :
            [ `Invalid ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Parsed ] Taglib.Inline.Id3v2.id3v2
          val tag_size :
            [< `Parsed | `Valid ] Taglib.Inline.Id3v2.id3v2 -> int
          val parse_tag :
            [ `Parsed ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val attach_frame :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            Taglib.Inline.Id3v2.frame_type ->
            Taglib.Inline.Id3v2.frame_text ->
            [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val render : [ `Valid ] Taglib.Inline.Id3v2.id3v2 -> string
          val tag_set_title :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val tag_set_artist :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val tag_set_album :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val tag_set_comment :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val tag_set_genre :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            string -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val tag_set_year :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            int -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
          val tag_set_track :
            [< `Invalid | `Valid ] Taglib.Inline.Id3v2.id3v2 ->
            int -> [ `Valid ] Taglib.Inline.Id3v2.id3v2
        end
    end
  type file_type =
      Mpeg
    | OggVorbis
    | Flac
    | Mpc
    | OggFlac
    | WavPack
    | Speex
    | TrueAudio
    | Mp4
    | Asf
  exception Closed
  exception Not_implemented
  val set_strings_unicode : bool -> unit
  val open_file :
    ?file_type:Taglib.file_type ->
    string -> Taglib.File.file_type Taglib.File.file
  val audioproperties_length : Taglib.File.file_type Taglib.File.file -> int
  val audioproperties_bitrate : Taglib.File.file_type Taglib.File.file -> int
  val audioproperties_samplerate :
    Taglib.File.file_type Taglib.File.file -> int
  val audioproperties_channels :
    Taglib.File.file_type Taglib.File.file -> int
  val close_file : Taglib.File.file_type Taglib.File.file -> unit
  val file_save : Taglib.File.file_type Taglib.File.file -> bool
end