Shout

`sig
type shout
exception Insane
exception No_connect
exception No_login
exception Socket
exception Malloc
exception Metadata
exception Connected
exception Unconnected
exception Unsupported
exception Send_error
type data_format = Format_vorbis | Format_mp3
type protocol = Protocol_http | Protocol_xaudiocast | Protocol_icy
val init : unit -> unit
val shutdown : unit -> unit
val version : unit -> string * int * int * int
val get_error : Shout.shout -> string
val get_errno : Shout.shout -> int
val new_shout : unit -> Shout.shout
val is_connected : Shout.shout -> bool
val set_host : Shout.shout -> string -> unit
val get_host : Shout.shout -> string
val set_port : Shout.shout -> int -> unit
val get_port : Shout.shout -> int
val set_user : Shout.shout -> string -> unit
val get_user : Shout.shout -> string
val set_password : Shout.shout -> string -> unit
val get_password : Shout.shout -> string
val set_protocol : Shout.shout -> Shout.protocol -> unit
val get_protocol : Shout.shout -> Shout.protocol
val set_format : Shout.shout -> Shout.data_format -> unit
val get_format : Shout.shout -> Shout.data_format
val set_mount : Shout.shout -> string -> unit
val get_mount : Shout.shout -> string
val set_dumpfile : Shout.shout -> string -> unit
val get_dumpfile : Shout.shout -> string
val set_agent : Shout.shout -> string -> unit
val get_agent : Shout.shout -> string
val set_public : Shout.shout -> bool -> unit
val get_public : Shout.shout -> bool
val set_name : Shout.shout -> string -> unit
val get_name : Shout.shout -> string
val set_url : Shout.shout -> string -> unit
val get_url : Shout.shout -> string
val set_genre : Shout.shout -> string -> unit
val get_genre : Shout.shout -> string
val set_description : Shout.shout -> string -> unit
val get_description : Shout.shout -> string
val set_audio_info : Shout.shout -> string -> string -> unit
val get_audio_info : Shout.shout -> string -> string
val set_multicast_ip : Shout.shout -> string -> unit
val get_multicast_ip : Shout.shout -> string
val open_shout : Shout.shout -> unit
val close : Shout.shout -> unit
val send : Shout.shout -> string -> unit
val send_raw : Shout.shout -> string -> int
val sync : Shout.shout -> unit
val delay : Shout.shout -> int
val set_metadata : Shout.shout -> (string * string) array -> unit
end`