sig
  type t
  external openFromFile : filename:string -> SFMusic.t
    = "caml_sfMusic_openFromFile"
  external openFromMemory : data:string -> SFMusic.t
    = "caml_sfMusic_openFromMemory"
  external destroy : music:SFMusic.t -> unit = "caml_sfMusic_destroy"
  external getDuration : music:SFMusic.t -> SFTime.t
    = "caml_sfMusic_getDuration"
  external play : music:SFMusic.t -> unit = "caml_sfMusic_play"
  external pause : music:SFMusic.t -> unit = "caml_sfMusic_pause"
  external stop : music:SFMusic.t -> unit = "caml_sfMusic_stop"
  external getChannelCount : music:SFMusic.t -> int
    = "caml_sfMusic_getChannelCount"
  external getSampleRate : music:SFMusic.t -> int
    = "caml_sfMusic_getSampleRate"
  type sound_status = Stopped | Paused | Playing
  external getStatus : music:SFMusic.t -> SFMusic.sound_status
    = "caml_sfMusic_getStatus"
  external setPlayingOffset : music:SFMusic.t -> timeOffset:SFTime.t -> unit
    = "caml_sfMusic_setPlayingOffset"
  external getPlayingOffset : music:SFMusic.t -> SFTime.t
    = "caml_sfMusic_getPlayingOffset"
  external setLoop : music:SFMusic.t -> loop:bool -> unit
    = "caml_sfMusic_setLoop"
  external getLoop : music:SFMusic.t -> bool = "caml_sfMusic_getLoop"
  external setVolume : music:SFMusic.t -> volume:float -> unit
    = "caml_sfMusic_setVolume"
  external getVolume : music:SFMusic.t -> float = "caml_sfMusic_getVolume"
  external setPitch : music:SFMusic.t -> pitch:float -> unit
    = "caml_sfMusic_setPitch"
  external getPitch : music:SFMusic.t -> float = "caml_sfMusic_getPitch"
  external setRelativeToListener : music:SFMusic.t -> relative:bool -> unit
    = "caml_sfMusic_setRelativeToListener"
  external isRelativeToListener : music:SFMusic.t -> bool
    = "caml_sfMusic_isRelativeToListener"
  external setMinDistance : music:SFMusic.t -> minDistance:float -> unit
    = "caml_sfMusic_setMinDistance"
  external getMinDistance : music:SFMusic.t -> float
    = "caml_sfMusic_getMinDistance"
  external setAttenuation : music:SFMusic.t -> attenuation:float -> unit
    = "caml_sfMusic_setAttenuation"
  external getAttenuation : music:SFMusic.t -> float
    = "caml_sfMusic_getAttenuation"
  external setPosition :
    music:SFMusic.t -> x:float -> y:float -> z:float -> unit
    = "caml_sfMusic_setPosition"
  external setPosition3 :
    music:SFMusic.t -> pos:float * float * float -> unit
    = "caml_sfMusic_setPosition3"
  external getPosition : music:SFMusic.t -> float * float * float
    = "caml_sfMusic_getPosition"
end