This is libsamplerate, 0.1.8

libsamplerate (also known as Secret Rabbit Code) is a library for
perfroming sample rate conversion of audio data.

The src/ directory contains the source code for library itself.

The doc/ directory contains the libsamplerate documentation.

The examples/ directory contains examples of how to write code using
libsamplerate.

The tests/ directory contains programs which link against 
libsamplerate and test its functionality.

The Win32/ directory contains files and documentation to allow
libsamplerate to compile under Win32 with the Microsoft Visual C++ 
compiler.

Win32
-----
There are detailed instructions for building libsamplerate on Win32 
in the file

	doc/win32.html
	

MacOSX
------
Building on MacOSX should be the same as building it on any other 
Unix.


OTHER PLATFORMS
---------------
To compile libsamplerate on platforms which have a Bourne Shell compatible
shell, an ANSI C compiler and a make utility should require no more that
the following three commands :
		./configure
		make
		make install
		
CONTACTS
--------

libsamplerate was written by Erik de Castro Lopo (erikd AT mega-nerd DOT com).  
The libsamplerate home page is at :

	http://www.mega-nerd.com/libsamplerate/

