cannam@125
|
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
cannam@125
|
2 <HTML>
|
cannam@125
|
3
|
cannam@125
|
4 <HEAD>
|
cannam@125
|
5 <TITLE>
|
cannam@125
|
6 libsndfile
|
cannam@125
|
7 </TITLE>
|
cannam@125
|
8 <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
|
cannam@125
|
9 <META NAME="Version" CONTENT="libsndfile-1.0.27">
|
cannam@125
|
10 <META NAME="Description" CONTENT="The libsndfile Home Page">
|
cannam@125
|
11 <META NAME="Keywords" CONTENT="WAV AIFF AU SVX PAF NIST W64 libsndfile sound audio dsp Linux">
|
cannam@125
|
12 <META NAME="ROBOTS" CONTENT="NOFOLLOW">
|
cannam@125
|
13 <LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
|
cannam@125
|
14 <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
|
cannam@125
|
15 </HEAD>
|
cannam@125
|
16
|
cannam@125
|
17 <BODY>
|
cannam@125
|
18 <!-- pepper -->
|
cannam@125
|
19 <CENTER>
|
cannam@125
|
20 <IMG SRC="libsndfile.jpg" HEIGHT=98 WIDTH=367 ALT="libsndfile.jpg">
|
cannam@125
|
21 </CENTER>
|
cannam@125
|
22 <!-- pepper -->
|
cannam@125
|
23 <CENTER>
|
cannam@125
|
24 <A HREF="#History">History</A> -+-
|
cannam@125
|
25 <A HREF="#Features">Features</A> -+-
|
cannam@125
|
26 <A HREF="#Similar">Similar or Related Projects</A> -+-
|
cannam@125
|
27 <A HREF="NEWS">News</A>
|
cannam@125
|
28 <br>
|
cannam@125
|
29 <A HREF="development.html">Development</A> -+-
|
cannam@125
|
30 <A HREF="api.html">Programming Interface</A> -+-
|
cannam@125
|
31 <A HREF="bugs.html">Bug Reporting</A> -+-
|
cannam@125
|
32 <A HREF="#Download">Download</A>
|
cannam@125
|
33 <br>
|
cannam@125
|
34 <A HREF="FAQ.html">FAQ</A> -+-
|
cannam@125
|
35 <A HREF="lists.html">Mailing Lists</A> -+-
|
cannam@125
|
36 <A HREF="ChangeLog">Change Log</A> -+-
|
cannam@125
|
37 <A HREF="#Licensing">Licensing Information</A> -+-
|
cannam@125
|
38 <A HREF="#SeeAlso">See Also</A>
|
cannam@125
|
39 </CENTER>
|
cannam@125
|
40
|
cannam@125
|
41 <br><br>
|
cannam@125
|
42 <P>
|
cannam@125
|
43 Libsndfile is a C library for reading and writing files containing sampled sound
|
cannam@125
|
44 (such as MS Windows WAV and the Apple/SGI AIFF format) through one standard
|
cannam@125
|
45 library interface. It is released in source code format under the
|
cannam@125
|
46 <A HREF="http://www.gnu.org/copyleft/lesser.html">Gnu Lesser General Public License</A>.
|
cannam@125
|
47 </P>
|
cannam@125
|
48 <!-- pepper -->
|
cannam@125
|
49 <P>
|
cannam@125
|
50 The library was written to compile and run on a Linux system but should compile
|
cannam@125
|
51 and run on just about any Unix (including MacOS X).
|
cannam@125
|
52 There are also pre-compiled binaries available for 32 and 64 bit windows.
|
cannam@125
|
53 </P>
|
cannam@125
|
54 <P>
|
cannam@125
|
55 It was designed to handle both little-endian (such as WAV) and big-endian
|
cannam@125
|
56 (such as AIFF) data, and to compile and run correctly on little-endian (such as Intel
|
cannam@125
|
57 and DEC/Compaq Alpha) processor systems as well as big-endian processor systems such
|
cannam@125
|
58 as Motorola 68k, Power PC, MIPS and Sparc.
|
cannam@125
|
59 Hopefully the design of the library will also make it easy to extend for reading and
|
cannam@125
|
60 writing new sound file formats.
|
cannam@125
|
61 </P>
|
cannam@125
|
62 <!-- pepper -->
|
cannam@125
|
63 <P>
|
cannam@125
|
64 It has been compiled and tested (at one time or another) on the following systems:
|
cannam@125
|
65 </P>
|
cannam@125
|
66 <!-- pepper -->
|
cannam@125
|
67 <UL>
|
cannam@125
|
68 <LI>Every platform supported by Debian GNU/Linux including x86_64-linux-gnu,
|
cannam@125
|
69 i486-linux-gnu, powerpc-linux-gnu, sparc-linux-gnu, alpha-linux-gnu,
|
cannam@125
|
70 mips-linux-gnu and armel-linux-gnu.</LI>
|
cannam@125
|
71 <LI>powerpc-apple-darwin7.0 (Mac OS X 10.3)</LI>
|
cannam@125
|
72 <LI>sparc-sun-solaris2.8 (using gcc)</LI>
|
cannam@125
|
73 <LI>mips-sgi-irix5.3 (using gcc)</LI>
|
cannam@125
|
74 <LI>QNX 6.0</LI>
|
cannam@125
|
75 <LI>i386-unknown-openbsd2.9</LI>
|
cannam@125
|
76 </UL>
|
cannam@125
|
77 <!-- pepper -->
|
cannam@125
|
78 <P>
|
cannam@125
|
79 At the moment, each new release is being tested on i386 Linux, x86_64 Linux,
|
cannam@125
|
80 PowerPC Linux, Win32 and Win64.
|
cannam@125
|
81 </P>
|
cannam@125
|
82 <!-- pepper -->
|
cannam@125
|
83
|
cannam@125
|
84 <A NAME="Capabilities"></A>
|
cannam@125
|
85 <A NAME="Features"></A>
|
cannam@125
|
86 <H1><B>Features</B></H1>
|
cannam@125
|
87 <P>
|
cannam@125
|
88 libsndfile has the following main features :
|
cannam@125
|
89 </P>
|
cannam@125
|
90 <UL>
|
cannam@125
|
91 <lI> Ability to read and write a large number of file formats.
|
cannam@125
|
92 <LI> A simple, elegant and easy to use Applications Programming Interface.
|
cannam@125
|
93 <LI> Usable on Unix, Win32, MacOS and others.
|
cannam@125
|
94 <LI> On the fly format conversion, including endian-ness swapping, type conversion
|
cannam@125
|
95 and bitwidth scaling.
|
cannam@125
|
96 <LI> Optional normalisation when reading floating point data from files containing
|
cannam@125
|
97 integer data.
|
cannam@125
|
98 <LI> Ability to open files in read/write mode.
|
cannam@125
|
99 <LI> The ability to write the file header without closing the file (only on files
|
cannam@125
|
100 open for write or read/write).
|
cannam@125
|
101 <LI> Ability to query the library about all supported formats and retrieve text
|
cannam@125
|
102 strings describing each format.
|
cannam@125
|
103 </UL>
|
cannam@125
|
104 <P>
|
cannam@125
|
105 libsndfile has a comprehensive test suite so that each release is as bug free
|
cannam@125
|
106 as possible.
|
cannam@125
|
107 When new bugs are found, new tests are added to the test suite to ensure that
|
cannam@125
|
108 these bugs don't creep back into the code.
|
cannam@125
|
109 When new features are added, tests are added to the test suite to make sure that
|
cannam@125
|
110 these features continue to work correctly even when they are old features.
|
cannam@125
|
111 </P>
|
cannam@125
|
112 <P>
|
cannam@125
|
113 The following table lists the file formats and encodings that libsndfile can read
|
cannam@125
|
114 and write.
|
cannam@125
|
115 The file formats are arranged across the top and encodings along the left
|
cannam@125
|
116 edge.
|
cannam@125
|
117 </P>
|
cannam@125
|
118 <br>
|
cannam@125
|
119
|
cannam@125
|
120 <TABLE BORDER="1" cellpadding="2">
|
cannam@125
|
121 <TR><TD> </TD>
|
cannam@125
|
122 <TD ALIGN="center">Micro- soft<br>WAV</TD>
|
cannam@125
|
123 <TD ALIGN="center">SGI / Apple<br>AIFF / AIFC</TD>
|
cannam@125
|
124 <TD ALIGN="center">Sun / DEC /<br>NeXT<br>AU / SND</TD>
|
cannam@125
|
125 <TD ALIGN="center">Header- less<br>RAW</TD>
|
cannam@125
|
126 <TD ALIGN="center">Paris Audio<br>File<br>PAF</TD>
|
cannam@125
|
127 <TD ALIGN="center">Commo- dore<br>Amiga<br>IFF / SVX</TD>
|
cannam@125
|
128 <TD ALIGN="center">Sphere<br>Nist<br>WAV</TD>
|
cannam@125
|
129 <TD ALIGN="center">IRCAM<br>SF</TD>
|
cannam@125
|
130 <TD ALIGN="center">Creative<br>VOC</TD>
|
cannam@125
|
131 <TD ALIGN="center">Sound forge<br>W64</TD>
|
cannam@125
|
132 <TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.0</A><br>MAT4</TD>
|
cannam@125
|
133 <TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.1</A><br>MAT5</TD>
|
cannam@125
|
134 <TD ALIGN="center">Portable Voice Format<br>PVF</TD>
|
cannam@125
|
135 <TD ALIGN="center">Fasttracker 2<br>XI</TD>
|
cannam@125
|
136 <TD ALIGN="center">HMM Tool Kit<br>HTK</TD>
|
cannam@125
|
137 <TD ALIGN="center">Apple<br>CAF</TD>
|
cannam@125
|
138 <TD ALIGN="center">Sound<br>Designer II<br>SD2</TD>
|
cannam@125
|
139 <TD ALIGN="center">Free Lossless Audio Codec<br>FLAC</TD>
|
cannam@125
|
140 </TR>
|
cannam@125
|
141 <TR><TD>Unsigned 8 bit PCM</TD>
|
cannam@125
|
142 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
143 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
144 <TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD>
|
cannam@125
|
145 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
146 </TR>
|
cannam@125
|
147
|
cannam@125
|
148 <TR><TD>Signed 8 bit PCM</TD>
|
cannam@125
|
149 <TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
150 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD> </TD>
|
cannam@125
|
151 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
152 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
153 </TR>
|
cannam@125
|
154
|
cannam@125
|
155 <TR><TD>Signed 16 bit PCM</TD>
|
cannam@125
|
156 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
157 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
158 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
159 <TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
160 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
161 </TR>
|
cannam@125
|
162
|
cannam@125
|
163 <TR><TD>Signed 24 bit PCM</TD>
|
cannam@125
|
164 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
165 <TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
166 <TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
167 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
168 </TR>
|
cannam@125
|
169
|
cannam@125
|
170 <TR><TD>Signed 32 bit PCM</TD>
|
cannam@125
|
171 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
172 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD> </TD>
|
cannam@125
|
173 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
174 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
175 </TR>
|
cannam@125
|
176
|
cannam@125
|
177 <TR><TD>32 bit float</TD>
|
cannam@125
|
178 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
179 <TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD>
|
cannam@125
|
180 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD> </TD>
|
cannam@125
|
181 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
182 </TR>
|
cannam@125
|
183
|
cannam@125
|
184 <TR><TD>64 bit double</TD>
|
cannam@125
|
185 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
186 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
187 <TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
188 <TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
189 </TR>
|
cannam@125
|
190
|
cannam@125
|
191 <TR><TD>u-law encoding</TD>
|
cannam@125
|
192 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
193 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
194 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
195 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
196 </TR>
|
cannam@125
|
197 <TR><TD>A-law encoding</TD>
|
cannam@125
|
198 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
199 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
200 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
201 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
202 </TR>
|
cannam@125
|
203
|
cannam@125
|
204 <TR><TD>IMA ADPCM</TD>
|
cannam@125
|
205 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
206 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD>
|
cannam@125
|
207 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
208 <TD> </TD><TD> </TD>
|
cannam@125
|
209 </TR>
|
cannam@125
|
210
|
cannam@125
|
211 <TR><TD>MS ADPCM</TD>
|
cannam@125
|
212 <TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
213 <TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
214 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
215 </TR>
|
cannam@125
|
216
|
cannam@125
|
217 <TR><TD>GSM 6.10</TD>
|
cannam@125
|
218 <TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
219 <TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
220 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
221 </TR>
|
cannam@125
|
222
|
cannam@125
|
223 <TR><TD>G721 ADPCM 32kbps</TD>
|
cannam@125
|
224 <TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
225 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
226 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
227 </TR>
|
cannam@125
|
228
|
cannam@125
|
229 <TR><TD>G723 ADPCM 24kbps</TD>
|
cannam@125
|
230 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
231 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
232 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
233 </TR>
|
cannam@125
|
234
|
cannam@125
|
235 <TR><TD>G723 ADPCM 40kbps</TD>
|
cannam@125
|
236 <TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
237 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
238 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
239 </TR>
|
cannam@125
|
240
|
cannam@125
|
241 <TR><TD>12 bit DWVW</TD>
|
cannam@125
|
242 <TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
243 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
244 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
245 </TR>
|
cannam@125
|
246
|
cannam@125
|
247 <TR><TD>16 bit DWVW</TD>
|
cannam@125
|
248 <TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
249 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
250 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
251 </TR>
|
cannam@125
|
252
|
cannam@125
|
253 <TR><TD>24 bit DWVW</TD>
|
cannam@125
|
254 <TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
255 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
256 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
257 </TR>
|
cannam@125
|
258 <TR><TD>Ok Dialogic ADPCM</TD>
|
cannam@125
|
259 <TD> </TD><TD> </TD><TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD>
|
cannam@125
|
260 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
261 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
262 </TR>
|
cannam@125
|
263 <TR><TD>8 bit DPCM</TD>
|
cannam@125
|
264 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
265 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
266 <TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
267 </TR>
|
cannam@125
|
268 <TR><TD>16 bit DPCM</TD>
|
cannam@125
|
269 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
270 <TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
271 <TD> </TD><TD ALIGN="center">R/W</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD>
|
cannam@125
|
272 </TR>
|
cannam@125
|
273 </TABLE>
|
cannam@125
|
274
|
cannam@125
|
275 <p>
|
cannam@125
|
276 From version 1.0.18, libsndfile also reads and writes
|
cannam@125
|
277 <a href="http://flac.sourceforge.net/">FLAC</a>
|
cannam@125
|
278 and
|
cannam@125
|
279 <a href="http://www.vorbis.com/">Ogg/Vorbis</a>.
|
cannam@125
|
280 </p>
|
cannam@125
|
281
|
cannam@125
|
282 <!-- pepper -->
|
cannam@125
|
283
|
cannam@125
|
284 <P>
|
cannam@125
|
285 Some of the file formats I am also interested in adding are:
|
cannam@125
|
286 </P>
|
cannam@125
|
287 <UL>
|
cannam@125
|
288 <LI> Kurzweil K2000 sampler files.
|
cannam@125
|
289 <LI> Ogg Speex.
|
cannam@125
|
290 </UL>
|
cannam@125
|
291 <P>
|
cannam@125
|
292 I have decided that I will not be adding support for MPEG Layer 3 (commonly
|
cannam@125
|
293 known as MP3) due to the patent issues surrounding this file format.
|
cannam@125
|
294 See
|
cannam@125
|
295 <a href="FAQ.html#Q020">
|
cannam@125
|
296 the FAQ</a>
|
cannam@125
|
297 for more.
|
cannam@125
|
298 </P>
|
cannam@125
|
299 <P>
|
cannam@125
|
300 Other file formats may also be added on request.
|
cannam@125
|
301 </P>
|
cannam@125
|
302
|
cannam@125
|
303 <!-- pepper -->
|
cannam@125
|
304
|
cannam@125
|
305 <A NAME="History"></A>
|
cannam@125
|
306 <H1><B>History</B></H1>
|
cannam@125
|
307 <P>
|
cannam@125
|
308 My first attempt at reading and writing WAV files was in 1990 or so under Windows
|
cannam@125
|
309 3.1.
|
cannam@125
|
310 I started using Linux in early 1995 and contributed some code to the
|
cannam@125
|
311 <A HREF="http://www.vaxxine.com/ve3wwg/gnuwave.html">wavplay</A>
|
cannam@125
|
312 program.
|
cannam@125
|
313 That contributed code would eventually mutate into this library.
|
cannam@125
|
314 As one of my interests is Digital Signal Processing (DSP) I decided that as well as
|
cannam@125
|
315 reading data from an audio file in the native format (typically 16 bit short integers)
|
cannam@125
|
316 it would also be useful to be able to have the library do the conversion to floating
|
cannam@125
|
317 point numbers for DSP applications.
|
cannam@125
|
318 It then dawned on me that whatever file format (anything from 8 bit unsigned chars,
|
cannam@125
|
319 to 32 bit floating point numbers) the library should be able to convert the data to
|
cannam@125
|
320 whatever format the library user wishes to use it in.
|
cannam@125
|
321 For example, in a sound playback program, the library caller typically wants the sound
|
cannam@125
|
322 data in 16 bit short integers to dump into a sound card even though the data in the
|
cannam@125
|
323 file may be 32 bit floating point numbers (ie Microsoft's WAVE_FORMAT_IEEE_FLOAT
|
cannam@125
|
324 format).
|
cannam@125
|
325 Another example would be someone doing speech recognition research who has recorded
|
cannam@125
|
326 some speech as a 16 bit WAV file but wants to process it as double precision floating
|
cannam@125
|
327 point numbers.
|
cannam@125
|
328 </P>
|
cannam@125
|
329 <P>
|
cannam@125
|
330 Here is the release history for libsndfile :
|
cannam@125
|
331 </P>
|
cannam@125
|
332 <UL>
|
cannam@125
|
333 <LI>Version 0.0.8 (Feb 15 1999) First official release.
|
cannam@125
|
334 <LI>Version 0.0.28 (Apr 26 2002) Final release of version 0 of libsndfile.
|
cannam@125
|
335 <LI>Version 1.0.0rc1 (Jun 24 2002) Release candidate 1 of version 1 of libsndfile.
|
cannam@125
|
336 <LI>Version 1.0.0rc6 (Aug 14 2002) MacOS 9 fixes.
|
cannam@125
|
337 <LI>Version 1.0.0 (Aug 16 2002) First 1.0.X release.
|
cannam@125
|
338 <LI>Version 1.0.1 (Sep 14 2002) Added MAT4 and MAT5 file formats.
|
cannam@125
|
339 <LI>Version 1.0.2 (Nov 24 2002) Added VOX ADPCM format.
|
cannam@125
|
340 <LI>Version 1.0.3 (Dec 09 2002) Fixes for Linux on ia64 CPUs.
|
cannam@125
|
341 <LI>Version 1.0.4 (Feb 02 2003) New file formats and functionality.
|
cannam@125
|
342 <LI>Version 1.0.5 (May 03 2003) One new file format and new functionality.
|
cannam@125
|
343 <LI>Version 1.0.6 (Feb 08 2004) Large file fix for Linux/Solaris, new functionality
|
cannam@125
|
344 and Win32 improvements.
|
cannam@125
|
345 <LI>Version 1.0.7 (Feb 24 2004) Fix build problems on MacOS X and fix ia64/MIPS etc
|
cannam@125
|
346 clip mode detction.
|
cannam@125
|
347 <LI>Version 1.0.8 (Mar 14 2004) Minor bug fixes.
|
cannam@125
|
348 <LI>Version 1.0.9 (Mar 30 2004) Add AVR format. Improve handling of some WAV files.
|
cannam@125
|
349 <LI>Version 1.0.10 (Jun 15 2004) Minor bug fixes. Fix support for Win32 MinGW compiler.
|
cannam@125
|
350 <LI>Version 1.0.11 (Nov 15 2004) Add SD2 file support, reading of loop data in WAV and AIFF.
|
cannam@125
|
351 Minor bug fixes.
|
cannam@125
|
352 <LI>Version 1.0.12 (Sep 30 2005) Add FLAC and CAF file support, virtual I/O interface.
|
cannam@125
|
353 Minor bug fixes and cleanups.
|
cannam@125
|
354 <LI>Version 1.0.13 (Jan 21 2006) Add read/write of instrument chunks. Minor bug fixes.
|
cannam@125
|
355 <LI>Version 1.0.14 (Feb 19 2006) Minor bug fixes. Start shipping windows binary/source ZIP.
|
cannam@125
|
356 <LI>Version 1.0.15 (Mar 16 2006) Minor bug fixes.
|
cannam@125
|
357 <LI>Version 1.0.16 (Apr 30 2006) Add support for RIFX. Other minor feature enhancements and
|
cannam@125
|
358 bug fixes.
|
cannam@125
|
359 <LI>Version 1.0.17 (Aug 31 2006) Add C++ wrapper sndfile.hh. Minor bug fixes and cleanups.
|
cannam@125
|
360 <LI>Version 1.0.18 (Feb 07 2009) Add Ogg/Vorbis suppport, remove captive libraries, many
|
cannam@125
|
361 new features and bug fixes. Generate Win32 and Win64 pre-compiled binaries.
|
cannam@125
|
362 <LI>Version 1.0.19 (Mar 02 2009) Fix for CVE-2009-0186. Huge number of minor fixes as a
|
cannam@125
|
363 result of static analysis.
|
cannam@125
|
364 <LI>Version 1.0.20 (May 14 2009) Fix for potential heap overflow.
|
cannam@125
|
365 <LI>Version 1.0.21 (December 13 2009) Bunch of minor bug fixes.
|
cannam@125
|
366 <LI>Version 1.0.22 (October 04 2010) Bunch of minor bug fixes.
|
cannam@125
|
367 <LI>Version 1.0.23 (October 10 2010) Minor bug fixes.
|
cannam@125
|
368 <LI>Version 1.0.24 (March 23 2011) Minor bug fixes.
|
cannam@125
|
369 <LI>Version 1.0.25 (July 13 2011) Fix for Secunia Advisory SA45125. Minor bug fixes and
|
cannam@125
|
370 improvements.
|
cannam@125
|
371 <LI>Version 1.0.26 (November 22 2015) Fix for CVE-2014-9496, CVE-2014-9756 and CVE-2015-7805.
|
cannam@125
|
372 Add ALAC/CAF support. Minor bug fixes and improvements.
|
cannam@125
|
373 <LI>Version 1.0.27 (June 19 2016) Fix a seek regression in 1.0.26. Add metadata read/write
|
cannam@125
|
374 for CAF and RF64. FIx PAF endian-ness issue.
|
cannam@125
|
375 </UL>
|
cannam@125
|
376
|
cannam@125
|
377 <A NAME="Similar"></A>
|
cannam@125
|
378 <H1><B>Similar or Related Projects</B></H1>
|
cannam@125
|
379
|
cannam@125
|
380 <UL>
|
cannam@125
|
381 <LI><A HREF="http://sox.sourceforge.net/">SoX</A> is a program for
|
cannam@125
|
382 converting between sound file formats.
|
cannam@125
|
383 <LI><A HREF="http://www.hitsquad.com/smm/programs/WavPlay/">Wavplay</A> started out
|
cannam@125
|
384 as a minimal WAV file player under Linux and has mutated into Gnuwave, a client/server
|
cannam@125
|
385 application for more general multimedia and games sound playback.
|
cannam@125
|
386 <LI><A HREF="http://www.68k.org/~michael/audiofile/">Audiofile</A> (libaudiofile) is
|
cannam@125
|
387 a library similar to libsndfile but with a different programming interface. The
|
cannam@125
|
388 author Michael Pruett has set out to clone (and fix some bugs in) the libaudiofile
|
cannam@125
|
389 library which ships with SGI's IRIX OS.
|
cannam@125
|
390 <LI><A HREF="ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz">sndlib.tar.gz</A> is
|
cannam@125
|
391 another library written by Bill Schottstaedt of CCRMA.
|
cannam@125
|
392 </UL>
|
cannam@125
|
393
|
cannam@125
|
394 <A NAME="Licensing"></A>
|
cannam@125
|
395 <H1><B>Licensing</B></H1>
|
cannam@125
|
396 <P>
|
cannam@125
|
397 libsndfile is released under the terms of the GNU Lesser General Public License,
|
cannam@125
|
398 of which there are two versions;
|
cannam@125
|
399 <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">version 2.1</a>
|
cannam@125
|
400 and
|
cannam@125
|
401 <a href="http://www.gnu.org/copyleft/lesser.html">version 3</a>.
|
cannam@125
|
402 To maximise the compatibility of libsndfile, the user may choose to use libsndfile
|
cannam@125
|
403 under either of the above two licenses.
|
cannam@125
|
404 You can also read a simple explanation of the ideas behind the GPL and the LGPL
|
cannam@125
|
405 <A HREF="http://www.gnu.org/copyleft/copyleft.html">here</A>.
|
cannam@125
|
406 </P>
|
cannam@125
|
407 <P>
|
cannam@125
|
408 You can use libsndfile with
|
cannam@125
|
409 <A HREF="http://www.gnu.org/">Free Software</A>,
|
cannam@125
|
410 <A HREF="http://www.opensource.org/">Open Source</A>,
|
cannam@125
|
411 proprietary, shareware or other closed source applications as long as libsndfile
|
cannam@125
|
412 is used as a dynamically loaded library and you abide by a small number of other
|
cannam@125
|
413 conditions (read the LGPL for more info).
|
cannam@125
|
414 With applications released under the GNU GPL you can also use libsndfile statically
|
cannam@125
|
415 linked to your application.
|
cannam@125
|
416 </P>
|
cannam@125
|
417 <P>
|
cannam@125
|
418 I would like to see libsndfile used as widely as possible but I would prefer it
|
cannam@125
|
419 if you released software that uses libsndfile as
|
cannam@125
|
420 <A HREF="http://www.gnu.org/">Free Software</A>
|
cannam@125
|
421 or
|
cannam@125
|
422 <A HREF="http://www.opensource.org/">Open Source</A>.
|
cannam@125
|
423 However, if you put in a great deal of effort building a significant application
|
cannam@125
|
424 which simply uses libsndfile for file I/O, then I have no problem with you releasing
|
cannam@125
|
425 that as closed source and charging as much money as you want for it as long as you
|
cannam@125
|
426 abide by <A HREF="http://www.gnu.org/copyleft/lesser.html">the license</A>.
|
cannam@125
|
427 </P>
|
cannam@125
|
428
|
cannam@125
|
429 <A NAME="Download"></A>
|
cannam@125
|
430 <H1><B>Download</B></H1>
|
cannam@125
|
431 <P>
|
cannam@125
|
432 Here is the latest version. It is available in the following formats:
|
cannam@125
|
433 </P>
|
cannam@125
|
434 <UL>
|
cannam@125
|
435 <LI>Source code as a .tar.gz :
|
cannam@125
|
436 <A HREF="files/libsndfile-1.0.27.tar.gz">libsndfile-1.0.27.tar.gz</A>.
|
cannam@125
|
437 <LI>Win32 installer:
|
cannam@125
|
438 <A HREF="files/libsndfile-1.0.27-w32-setup.exe">
|
cannam@125
|
439 libsndfile-1.0.27-w32-setup.exe</A> (thoroughly tested under
|
cannam@125
|
440 <a href="http://www.winehq.com/">Wine</a> and Windows XP).
|
cannam@125
|
441 <LI>Win64 installer:
|
cannam@125
|
442 <A HREF="files/libsndfile-1.0.27-w64-setup.exe">
|
cannam@125
|
443 libsndfile-1.0.27-w64-setup.exe</A>
|
cannam@125
|
444 (thoroughly tested on 64 bit Windows 7).
|
cannam@125
|
445 </UL>
|
cannam@125
|
446
|
cannam@125
|
447 <P>
|
cannam@125
|
448 The Win32 installer should work on Windows Vista or later.
|
cannam@125
|
449 </p>
|
cannam@125
|
450
|
cannam@125
|
451 <P>
|
cannam@125
|
452 Pre-release versions of libsndfile are available
|
cannam@125
|
453 <A HREF="http://www.mega-nerd.com/tmp/">here</A>
|
cannam@125
|
454 and are announced on the
|
cannam@125
|
455 <A HREF="lists.html">libsndfile-devel</A>
|
cannam@125
|
456 mailing list.
|
cannam@125
|
457 </P>
|
cannam@125
|
458
|
cannam@125
|
459 <A NAME="SeeAlso"></A>
|
cannam@125
|
460 <H1><B>See Also</B></H1>
|
cannam@125
|
461 <UL>
|
cannam@125
|
462 <LI><a href="http://www.mega-nerd.com/libsndfile/tools/">
|
cannam@125
|
463 sndfile-tools</a>
|
cannam@125
|
464 : a small collection of programs which use libsndfile.
|
cannam@125
|
465 </UL>
|
cannam@125
|
466
|
cannam@125
|
467 <br><br>
|
cannam@125
|
468
|
cannam@125
|
469 <hr>
|
cannam@125
|
470
|
cannam@125
|
471 <P>
|
cannam@125
|
472 The latest version of this document can be found
|
cannam@125
|
473 <A HREF="http://www.mega-nerd.com/libsndfile/">here</A>.
|
cannam@125
|
474 </P>
|
cannam@125
|
475 <P>
|
cannam@125
|
476 Author :
|
cannam@125
|
477 <A HREF="mailto:erikd@mega-nerd.com">
|
cannam@125
|
478 Erik de Castro Lopo</a>
|
cannam@125
|
479 </P>
|
cannam@125
|
480 <!-- pepper -->
|
cannam@125
|
481 <P>
|
cannam@125
|
482 This page has been accessed
|
cannam@125
|
483 <IMG SRC=
|
cannam@125
|
484 "/cgi-bin/Count.cgi?ft=6|frgb=55;55;55|tr=0|trgb=0;0;0|wxh=15;20|md=7|dd=B|st=1|sh=1|df=libsndfile.dat"
|
cannam@125
|
485 HEIGHT=30 WIDTH=100 ALT="counter.gif">
|
cannam@125
|
486 times.
|
cannam@125
|
487 </P>
|
cannam@125
|
488 <!-- pepper -->
|
cannam@125
|
489 <!-- pepper -->
|
cannam@125
|
490 <!-- pepper -->
|
cannam@125
|
491
|
cannam@125
|
492 <br><br>
|
cannam@125
|
493 </BODY>
|
cannam@125
|
494 </HTML>
|