summaryrefslogtreecommitdiff
path: root/doc/index.html
blob: bb128f5e5fb6df2fcd4a609e7443d1b27fc352e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>

<HEAD>
	<TITLE>
	libsndfile
	</TITLE>
	<META NAME="Author"      CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)">
    <META NAME="Version"     CONTENT="libsndfile-1.0.25">
	<META NAME="Description" CONTENT="The libsndfile Home Page">
	<META NAME="Keywords"    CONTENT="WAV AIFF AU SVX PAF NIST W64 libsndfile sound audio dsp Linux">
	<META NAME="ROBOTS" 	 CONTENT="NOFOLLOW">
	<LINK REL="stylesheet" HREF="libsndfile.css" TYPE="text/css" MEDIA="all">
	<LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print">
</HEAD>

<BODY>
<!-- pepper -->
<CENTER>
	<IMG SRC="libsndfile.jpg" HEIGHT=98 WIDTH=367 ALT="libsndfile.jpg">
</CENTER>
<!-- pepper -->
<CENTER>
		<A HREF="#History">History</A> -+-
		<A HREF="#Features">Features</A> -+-
		<A HREF="#Similar">Similar or Related Projects</A> -+-
		<A HREF="NEWS">News</A>
		<br>
		<A HREF="development.html">Development</A> -+-
		<A HREF="api.html">Programming Interface</A> -+-
		<A HREF="bugs.html">Bug Reporting</A> -+-
		<A HREF="#Download">Download</A>
		<br>
		<A HREF="FAQ.html">FAQ</A> -+-
		<A HREF="lists.html">Mailing Lists</A> -+-
		<A HREF="ChangeLog">Change Log</A> -+-
		<A HREF="#Licensing">Licensing Information</A> -+-
		<A HREF="#SeeAlso">See Also</A>
</CENTER>

<br><br>
<P>
	Libsndfile is a C library for reading and writing files containing sampled sound
	(such as MS Windows WAV and the Apple/SGI AIFF format) through one standard
	library interface. It is released in source code format under the
		<A HREF="http://www.gnu.org/copyleft/lesser.html">Gnu Lesser General Public License</A>.
</P>
<!-- pepper -->
<P>
	The library was written to compile and run on a Linux system but should compile
	and run on just about any Unix (including MacOS X).
	There are also pre-compiled binaries available for 32 and 64 bit windows.
</P>
<P>
	It was designed to handle both little-endian (such as WAV) and big-endian
	(such as AIFF) data, and to compile and run correctly on little-endian (such as Intel
	and DEC/Compaq Alpha) processor systems as well as big-endian processor systems such
	as Motorola 68k, Power PC, MIPS and Sparc.
	Hopefully the design of the library will also make it easy to extend for reading and
	writing new sound file formats.
</P>
<!-- pepper -->
<P>
    It has been compiled and tested (at one time or another) on the following systems:
</P>
<!-- pepper -->
<UL>
	<LI>Every platform supported by Debian GNU/Linux including x86_64-linux-gnu,
		i486-linux-gnu, powerpc-linux-gnu, sparc-linux-gnu, alpha-linux-gnu,
		mips-linux-gnu and armel-linux-gnu.</LI>
	<LI>arm-linux-androideab (Android phones OS)</LI>
	<LI>powerpc-apple-darwin7.0 (Mac OS X 10.3)</LI>
	<LI>sparc-sun-solaris2.8 (using gcc)</LI>
	<LI>mips-sgi-irix5.3 (using gcc)</LI>
	<LI>QNX 6.0</LI>
	<LI>i386-unknown-openbsd2.9</LI>
</UL>
<!-- pepper -->
<P>
	At the moment, each new release is being tested on i386 Linux, x86_64 Linux,
	PowerPC Linux, Win32 and Win64.
</P>
<!-- pepper -->

<A NAME="Capabilities"></A>
<A NAME="Features"></A>
<H1><B>Features</B></H1>
<P>
	libsndfile has the following main features :
</P>
	<UL>
	<lI> Ability to read and write a large number of file formats.
	<LI> A simple, elegant and easy to use Applications Programming Interface.
	<LI> Usable on Unix, Win32, MacOS and others.
	<LI> On the fly format conversion, including endian-ness swapping, type conversion
			and bitwidth scaling.
	<LI> Optional normalisation when reading floating point data from files containing
			integer data.
	<LI> Ability to open files in read/write mode.
	<LI> The ability to write the file header without closing the file (only on files
			open for write or read/write).
	<LI> Ability to query the library about all supported formats and retrieve text
			strings describing each format.
	</UL>
<P>
	libsndfile has a comprehensive test suite so that each release is as bug free
	as possible.
	When new bugs are found, new tests are added to the test suite to ensure that
	these bugs don't creep back into the code.
	When new features are added, tests are added to the test suite to make sure that
	these features continue to work correctly even when they are old features.
 </P>
<P>
	The following table lists the file formats and encodings that libsndfile can read
	and write.
	The file formats are arranged across the top and encodings along the left
	edge.
</P>
<br>

<TABLE BORDER="1" cellpadding="2">
	<TR><TD>&nbsp;</TD>
	<TD ALIGN="center">Micro- soft<br>WAV</TD>
	<TD ALIGN="center">SGI / Apple<br>AIFF / AIFC</TD>
	<TD ALIGN="center">Sun / DEC /<br>NeXT<br>AU / SND</TD>
	<TD ALIGN="center">Header- less<br>RAW</TD>
	<TD ALIGN="center">Paris Audio<br>File<br>PAF</TD>
	<TD ALIGN="center">Commo- dore<br>Amiga<br>IFF / SVX</TD>
	<TD ALIGN="center">Sphere<br>Nist<br>WAV</TD>
	<TD ALIGN="center">IRCAM<br>SF</TD>
	<TD ALIGN="center">Creative<br>VOC</TD>
	<TD ALIGN="center">Sound forge<br>W64</TD>
	<TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.0</A><br>MAT4</TD>
	<TD ALIGN="center"><A HREF="octave.html">GNU Octave 2.1</A><br>MAT5</TD>
	<TD ALIGN="center">Portable Voice Format<br>PVF</TD>
	<TD ALIGN="center">Fasttracker 2<br>XI</TD>
	<TD ALIGN="center">HMM Tool Kit<br>HTK</TD>
	<TD ALIGN="center">Apple<br>CAF</TD>
	<TD ALIGN="center">Sound<br>Designer II<br>SD2</TD>
	<TD ALIGN="center">Free Lossless Audio Codec<br>FLAC</TD>
	</TR>
<TR><TD>Unsigned 8 bit PCM</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>Signed 8 bit PCM</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
</TR>

<TR><TD>Signed 16 bit PCM</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
</TR>

<TR><TD>Signed 24 bit PCM</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
</TR>

<TR><TD>Signed 32 bit PCM</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>32 bit float</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>64 bit double</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>u-law encoding</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>
<TR><TD>A-law encoding</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>IMA ADPCM</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>MS ADPCM</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>GSM 6.10</TD>
	<TD ALIGN="center">R/W</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>G721 ADPCM 32kbps</TD>
	<TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>G723 ADPCM 24kbps</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>G723 ADPCM 40kbps</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>12 bit DWVW</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>16 bit DWVW</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>

<TR><TD>24 bit DWVW</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>
<TR><TD>Ok Dialogic ADPCM</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>
<TR><TD>8 bit DPCM</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>
<TR><TD>16 bit DPCM</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
	<TD>&nbsp;</TD><TD ALIGN="center">R/W</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>
</TR>
</TABLE>

<p>
From version 1.0.18, libsndfile also reads and writes
	<a href="http://flac.sourceforge.net/">FLAC</a>
and
	<a href="http://www.vorbis.com/">Ogg/Vorbis</a>.
</p>

<!-- pepper -->

<P>
	Some of the file formats I am also interested in adding are:
</P>
	<UL>
	<LI> Kurzweil K2000 sampler files.
	<LI> Ogg Speex.
	</UL>
<P>
	I have decided that I will not be adding support for MPEG Layer 3 (commonly
	known as MP3) due to the patent issues surrounding this file format.
	See
		<a href="http://www.mega-nerd.com/libsndfile/FAQ.html#Q020">
		the FAQ</a>
	for more.
</P>
<P>
	Other file formats may also be added on request.
</P>

<!-- pepper -->

<A NAME="History"></A>
<H1><B>History</B></H1>
<P>
	My first attempt at reading and writing WAV files was in 1990 or so under Windows
	3.1.
	I started using Linux in early 1995 and contributed some code to the
		<A HREF="http://www.vaxxine.com/ve3wwg/gnuwave.html">wavplay</A>
	program.
	That contributed code would eventually mutate into this library.
	As one of my interests is Digital Signal Processing (DSP) I decided that as well as
	reading data from an audio file in the native format (typically 16 bit short integers)
	it would also be useful to be able to have the library do the conversion to floating
	point numbers for DSP applications.
	It then dawned on me that whatever file format (anything from 8 bit unsigned chars,
	to 32 bit floating point numbers) the library should be able to convert the data to
	whatever format the library user wishes to use it in.
	For example, in a sound playback program, the library caller typically wants the sound
	data in 16 bit short integers to dump into a sound card even though the data in the
	file may be 32 bit floating point numbers (ie Microsoft's WAVE_FORMAT_IEEE_FLOAT
	format).
	Another example would be someone doing speech recognition research who has recorded
	some speech as a 16 bit WAV file but wants to process it as double precision floating
	point numbers.
</P>
<P>
    Here is the release history for libsndfile :
</P>
	<UL>
	<LI>Version 0.0.8 (Feb 15 1999) First official release.
	<LI>Version 0.0.28 (Apr 26 2002) Final release of version 0 of libsndfile.
	<LI>Version 1.0.0rc1 (Jun 24 2002) Release candidate 1 of version 1 of libsndfile.
	<LI>Version 1.0.0rc6 (Aug 14 2002) MacOS 9 fixes.
	<LI>Version 1.0.0 (Aug 16 2002) First 1.0.X release.
	<LI>Version 1.0.1 (Sep 14 2002) Added MAT4 and MAT5 file formats.
	<LI>Version 1.0.2 (Nov 24 2002) Added VOX ADPCM format.
	<LI>Version 1.0.3 (Dec 09 2002) Fixes for Linux on ia64 CPUs.
	<LI>Version 1.0.4 (Feb 02 2003) New file formats and functionality.
	<LI>Version 1.0.5 (May 03 2003) One new file format and new functionality.
	<LI>Version 1.0.6 (Feb 08 2004) Large file fix for Linux/Solaris, new functionality
		and Win32 improvements.
	<LI>Version 1.0.7 (Feb 24 2004) Fix build problems on MacOS X and fix ia64/MIPS etc
		clip mode detction.
	<LI>Version 1.0.8 (Mar 14 2004) Minor bug fixes.
	<LI>Version 1.0.9 (Mar 30 2004) Add AVR format. Improve handling of some WAV files.
	<LI>Version 1.0.10 (Jun 15 2004) Minor bug fixes. Fix support for Win32 MinGW compiler.
	<LI>Version 1.0.11 (Nov 15 2004) Add SD2 file support, reading of loop data in WAV and AIFF.
				Minor bug fixes.
	<LI>Version 1.0.12 (Sep 30 2005) Add FLAC and CAF file support, virtual I/O interface.
				Minor bug fixes and cleanups.
	<LI>Version 1.0.13 (Jan 21 2006) Add read/write of instrument chunks. Minor bug fixes.
	<LI>Version 1.0.14 (Feb 19 2006) Minor bug fixes. Start shipping windows binary/source ZIP.
	<LI>Version 1.0.15 (Mar 16 2006) Minor bug fixes.
	<LI>Version 1.0.16 (Apr 30 2006) Add support for RIFX. Other minor feature enhancements and
				bug fixes.
	<LI>Version 1.0.17 (Aug 31 2006) Add C++ wrapper sndfile.hh. Minor bug fixes and cleanups.
	<LI>Version 1.0.18 (Feb 07 2009) Add Ogg/Vorbis suppport, remove captive libraries, many
				new features and bug fixes. Generate Win32 and Win64 pre-compiled binaries.
	<LI>Version 1.0.19 (Mar 02 2009) Fix for CVE-2009-0186. Huge number of minor fixes as a
				result of static analysis.
	<LI>Version 1.0.20 (May 14 2009) Fix for potential heap overflow.
	<LI>Version 1.0.21 (December 13 2009) Bunch of minor bug fixes.
	<LI>Version 1.0.22 (October 04 2010) Bunch of minor bug fixes.
	<LI>Version 1.0.23 (October 10 2010) Minor bug fixes.
	<LI>Version 1.0.24 (March 23 2011) Minor bug fixes.
	<LI>Version 1.0.25 (July 13 2011) Fix for Secunia Advisory SA45125. Minor bug fixes and
				improvements.
	</UL>

<A NAME="Similar"></A>
<H1><B>Similar or Related Projects</B></H1>

	<UL>
	<LI><A HREF="http://sox.sourceforge.net/">SoX</A> is a program for
		converting between sound file formats.
	<LI><A HREF="http://www.hitsquad.com/smm/programs/WavPlay/">Wavplay</A> started out
		as a minimal WAV file player under Linux and has mutated into Gnuwave, a client/server
		application for more general multimedia and games sound playback.
	<LI><A HREF="http://www.68k.org/~michael/audiofile/">Audiofile</A> (libaudiofile) is
		a library similar to libsndfile but with a different programming interface. The
		author Michael Pruett has set out to clone (and fix some bugs in) the libaudiofile
		library which ships with SGI's IRIX OS.
	<LI><A HREF="ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz">sndlib.tar.gz</A> is
		another library written by Bill Schottstaedt of CCRMA.
	</UL>

<A NAME="Licensing"></A>
<H1><B>Licensing</B></H1>
<P>
	libsndfile is released under the terms of the GNU Lesser General Public License,
	of which there are two versions;
		<a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">version 2.1</a>
	and
		<a href="http://www.gnu.org/copyleft/lesser.html">version 3</a>.
	To maximise the compatibility of libsndfile, the user may choose to use libsndfile
	under either of the above two licenses.
	You can also read a simple explanation of the ideas behind the GPL and the LGPL
		<A HREF="http://www.gnu.org/copyleft/copyleft.html">here</A>.
</P>
<P>
	You can use libsndfile with
		<A HREF="http://www.gnu.org/">Free Software</A>,
		<A HREF="http://www.opensource.org/">Open Source</A>,
	proprietary, shareware or other closed source applications as long as libsndfile
	is used as a dynamically loaded library and you abide by a small number of other
	conditions (read the LGPL for more info).
	With applications released under the GNU GPL you can also use libsndfile statically
	linked to your application.
</P>
<P>
	I would like to see libsndfile used as widely as possible but I would prefer it
	if you released software that uses libsndfile as
		<A HREF="http://www.gnu.org/">Free Software</A>
	or
		<A HREF="http://www.opensource.org/">Open Source</A>.
	However, if you put in a great deal of effort building a significant application
	which simply uses libsndfile for file I/O, then I have no problem with you releasing
	that as closed source and charging as much money as you want for it as long as you
	abide by <A HREF="http://www.gnu.org/copyleft/lesser.html">the license</A>.
</P>

<A NAME="Download"></A>
<H1><B>Download</B></H1>
<P>
	Here is the latest version. It is available in the following formats:
</P>
	<UL>
	<LI>Source code as a .tar.gz :
			<A HREF="files/libsndfile-1.0.25.tar.gz">libsndfile-1.0.25.tar.gz</A>
			and
			<A HREF="files/libsndfile-1.0.25.tar.gz.asc">(GPG signature)</A>.
	<LI>Win32 installer:
			<A HREF="files/libsndfile-1.0.25-w32-setup.exe">
			libsndfile-1.0.25-w32-setup.exe</A> (thoroughly tested under
			<a href="http://www.winehq.com/">Wine</a> and Windows XP).
	<LI>Win64 installer:
			<A HREF="files/libsndfile-1.0.25-w64-setup.exe">
			libsndfile-1.0.25-w64-setup.exe</A>
			(thoroughly tested on 64 bit Windows 7).
	</UL>

<P>
The Win32 installer was compiled for Windows XP but should also work on Windows
2000, Vista and Windows 7.
</p>

<P>
	Pre-release versions of libsndfile are available
			<A HREF="http://www.mega-nerd.com/tmp/">here</A>
	and are announced on the
			<A HREF="lists.html">libsndfile-devel</A>
	mailing list.
</P>

<A NAME="SeeAlso"></A>
<H1><B>See Also</B></H1>
	<UL>
	<LI><a href="http://www.mega-nerd.com/libsndfile/tools/">
		sndfile-tools</a>
		: a small collection of programs which use libsndfile.
	</UL>

<br><br>

<hr>

<P>
	The latest version of this document can be found
		<A HREF="http://www.mega-nerd.com/libsndfile/">here</A>.
</P>
<P>
Author :
	<A HREF="m&#97;ilt&#111;:&#101;rikd&#64;&#109;eg&#97;-&#110;erd.&#99;om">
		Erik de Castro Lopo</a>
</P>
<!-- pepper -->
<P>
This page has been accessed
	<IMG SRC=
	"/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"
	HEIGHT=30 WIDTH=100 ALT="counter.gif">
times.
</P>
<!-- pepper -->
<!-- pepper -->
<!-- pepper -->

<br><br>
</BODY>
</HTML>