Editing and cleaning of Makefiles of all levels.
[Faustine.git] / interpretor / lib / src / libsndfile-ocaml / sndfile.mli
diff --git a/interpretor/lib/src/libsndfile-ocaml/sndfile.mli b/interpretor/lib/src/libsndfile-ocaml/sndfile.mli
new file mode 100644 (file)
index 0000000..d383fca
--- /dev/null
@@ -0,0 +1,209 @@
+(*
+** File: sndfile.ml
+**
+**     Copyright (c) 2006, 2007 Erik de Castro Lopo <erikd at mega-nerd dot com>
+**     WWW: http://www.mega-nerd.com/libsndfile/Ocaml/
+**
+**     This library is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU Lesser General Public
+**     License as published by the Free Software Foundation; either
+**     version 2 of the License, or (at your option) any later version.
+**
+**     This library is distributed in the hope that it will be useful,
+**     but WITHOUT ANY WARRANTY; without even the implied warranty of
+**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**     Lesser General Public License for more details.
+**
+**     You should have received a copy of the GNU Lesser General Public
+**     License along with this library; if not, write to the Free Software
+**     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*)
+
+(** libsndfile interface for OCaml.
+
+       libsndfile (http://www.mega-nerd.com/libsndfile) is a library for reading
+       and writing a huge number of different audio file formats.
+
+       Typical (simple) usage for small files:
+
+{[
+       let file = Sndfile.openfile filename in
+       let frames = Int64.to_int (Sndfile.frames file) in
+       let data = Array.create frames 0.0 in
+       let readcount = Sndfile.read file data in
+       .....
+]}
+
+*)
+
+type open_mode_t =
+       |       READ                    (** Open file for read. *)
+       |       WRITE                   (** Open file for write. *)
+       |       RDWR                    (** Open file for read/write. *)
+
+type seek_mode_t =
+       |       SEEK_SET                        (** Seek relative to start of file. *)
+       |       SEEK_CUR                        (** Seek relative to current position. *)
+       |       SEEL_END                        (** Seek relative to end of file. *)
+
+type major_format_t =
+       |       MAJOR_NONE
+       |       MAJOR_WAV               (** Microsoft WAV format (little endian default). *)
+       |       MAJOR_AIFF              (** Apple/SGI AIFF format (big endian). *)
+       |       MAJOR_AU                        (** Sun/NeXT AU format (big endian). *)
+       |       MAJOR_RAW               (** RAW PCM data. *)
+       |       MAJOR_PAF               (** Ensoniq PARIS file format. *)
+       |       MAJOR_SVX               (** Amiga IFF / SVX8 / SV16 format. *)
+       |       MAJOR_NIST              (** Sphere NIST format. *)
+       |       MAJOR_VOC               (** VOC files. *)
+       |       MAJOR_IRCAM             (** Berkeley/IRCAM/CARL *)
+       |       MAJOR_W64               (** Sonic Foundry's 64 bit RIFF/WAV *)
+       |       MAJOR_MAT4              (** Matlab (tm) V4.2 / GNU Octave 2.0 *)
+       |       MAJOR_MAT5              (** Matlab (tm) V5.0 / GNU Octave 2.1 *)
+       |       MAJOR_PVF               (** Portable Voice Format *)
+       |       MAJOR_XI                        (** Fasttracker 2 Extended Instrument *)
+       |       MAJOR_HTK               (** HMM Tool Kit format *)
+       |       MAJOR_SDS               (** Midi Sample Dump Standard *)
+       |       MAJOR_AVR               (** Audio Visual Research *)
+       |       MAJOR_WAVEX             (** MS WAVE with WAVEFORMATEX *)
+       |       MAJOR_SD2               (** Sound Designer 2 *)
+       |       MAJOR_FLAC              (** FLAC lossless file format *)
+       |       MAJOR_CAF               (** Core Audio File format *)
+
+type minor_format_t =
+       |       MINOR_NONE
+       |       MINOR_PCM_S8                    (** Signed 8 bit data *)
+       |       MINOR_PCM_16                    (** Signed 16 bit data *)
+       |       MINOR_PCM_24                    (** Signed 24 bit data *)
+       |       MINOR_PCM_32                    (** Signed 32 bit data *)
+       |       MINOR_PCM_U8                    (** Unsigned 8 bit data (WAV and RAW only) *)
+       |       MINOR_FLOAT                     (** 32 bit float data *)
+       |       MINOR_DOUBLE                    (** 64 bit float data *)
+       |       MINOR_ULAW                      (** U-Law encoded. *)
+       |       MINOR_ALAW                      (** A-Law encoded. *)
+       |       MINOR_IMA_ADPCM         (** IMA ADPCM. *)
+       |       MINOR_MS_ADPCM          (** Microsoft ADPCM. *)
+       |       MINOR_GSM610                    (** GSM 6.10 encoding. *)
+       |       MINOR_VOX_ADPCM         (** OKI / Dialogix ADPCM *)
+       |       MINOR_G721_32           (** 32kbs G721 ADPCM encoding. *)
+       |       MINOR_G723_24           (** 24kbs G723 ADPCM encoding. *)
+       |       MINOR_G723_40           (** 40kbs G723 ADPCM encoding. *)
+       |       MINOR_DWVW_12           (** 12 bit Delta Width Variable Word encoding. *)
+       |       MINOR_DWVW_16           (** 16 bit Delta Width Variable Word encoding. *)
+       |       MINOR_DWVW_24           (** 24 bit Delta Width Variable Word encoding. *)
+       |       MINOR_DWVW_N                    (** N bit Delta Width Variable Word encoding. *)
+       |       MINOR_DPCM_8                    (** 8 bit differential PCM (XI only) *)
+       |       MINOR_DPCM_16           (** 16 bit differential PCM (XI only) *)
+
+
+type endianness_t =
+       |       ENDIAN_FILE                     (** Default endianness for file format. *)
+       |       ENDIAN_LITTLE           (** Force little endian format. *)
+       |       ENDIAN_BIG                      (** Force Big endian format. *)
+       |       ENDIAN_CPU                      (** Use same endianness as host CPU. *)
+
+
+type file_format_t
+(**
+       An opaque type representing a sound file file format.
+
+       It is constructed using either format or format_e.
+*)
+
+type error =
+       |       No_error
+       |       Unrecognised_format
+       |       System
+       |       Malformed_file
+       |       Unsupported_encoding
+       |       Internal
+  
+exception Error of (error * string)
+
+type t
+(**
+       [Sndfile.t] An opaque type representing a open sound file.
+*)
+
+val format : major_format_t -> minor_format_t -> file_format_t
+(**
+       [Sndfile.format ma mi] constructs a file_format_t for use with
+       sf_open for the supplied major format [ma], minor format [mi].
+*)
+
+val format_e : major_format_t -> minor_format_t -> endianness_t -> file_format_t
+(**
+       [Sndfile.format ma mi] constructs a file_format_t for use with
+       sf_open for the supplied major format [ma], minor format [mi] and
+       endianness [e].
+*)
+
+val openfile :
+       ?info : (open_mode_t * file_format_t * int * int) ->
+       string ->
+       t
+(**
+       [Sndfile.openfile fn] opens the file specified by the filename [fn] for
+       read.
+
+       [Sndfile.openfile (SFM_WRITE, fmt, ch, sr) fn] opens the file specified
+       by the filename [fn] for write with the specified file_format_t, channel
+       count and samplerate.
+
+       [Sndfile.openfile (SFM_RDWR, fmt, ch, sr) fn] opens the file specified 
+       by the filename [fn] for read/write with the sepcified file_format_t,
+       channel count and samplerate.
+*)
+
+val close : t -> unit
+(**
+       [Sndfile.close f] closes the file [f].
+
+       Attempting to read from or write to a file after it has been closed will
+       fail.
+*)
+
+val read : t -> float array -> int
+(**
+       [Sndfile.read f a] read data from the file [f] into the supplied array
+       [a] and return the number of float values read.
+
+       For multi-channel files, the array length must be an integer multiple of
+       the number of channels.
+*)
+
+val write : t -> float array -> int
+(**
+       [Sndfile.write f a] write data from the supplied array [a] to the file
+       [f] and return the number of float values written.
+
+       For multi-channel files, the array length must be an integer multiple of
+       the number of channels.
+*)
+
+val frames : t -> Int64.t
+(**
+       [Sndfile.frames f] returns the number of frames in the file [f].
+*)
+
+val samplerate : t -> int
+(**
+       [Sndfile.samplerate f] returns the sample rate of the file [f].
+*)
+
+val channels : t -> int
+(**
+       [Sndfile.channels f] returns the channel count for the file [f].
+*)
+
+val seek : t -> Int64.t -> seek_mode_t -> Int64.t
+(**
+       [Sndfile.seek f pos m] seeks to posiont [pos] of file [f] using
+       the specified seek mode [m]. Returns offset from start of file.
+*)
+
+val compare : t -> t -> int
+(**
+       The comparison function for Sndfile.t, with the same specification as
+    [Pervasives.compare].
+*)