mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-10-31 06:03:49 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| SoX Resampler Library       Copyright (c) 2007-18 robs@users.sourceforge.net
 | |
| 
 | |
| The SoX Resampler library `libsoxr' performs one-dimensional sample-rate
 | |
| conversion -- it may be used, for example, to resample PCM-encoded audio.
 | |
| For higher-dimensional resampling, such as for visual-image processing, you
 | |
| should look elsewhere.
 | |
| 
 | |
| It aims to give fast¹ and very high quality² results for any constant
 | |
| (rational or irrational) resampling ratio.  Phase-response, preserved
 | |
| bandwidth, aliasing, and rejection level parameters are all configurable;
 | |
| alternatively, simple `preset' configurations may be selected.  A
 | |
| variable-rate resampling mode of operation is also included.
 | |
| 
 | |
| The resampler is currently available either as part of `libsox' (the audio
 | |
| file-format and effect library), or stand-alone as `libsoxr' (this package).
 | |
| The interfaces to libsox and libsoxr are slightly different, with that of
 | |
| libsoxr designed specifically for resampling.  An application requiring
 | |
| support for other effects, or for reading-from or writing-to audio files or
 | |
| devices, should use libsox (or other libraries such as libsndfile or
 | |
| libavformat).
 | |
| 
 | |
| Libsoxr provides a simple API that allows interfacing using the most
 | |
| commonly-used sample formats and buffering schemes: sample-formats may be
 | |
| either floating-point or integer, and multiple channels either interleaved
 | |
| or split in separate buffers.  The API is documented in the header file
 | |
| `soxr.h', together with sample code found in the 'examples' directory.
 | |
| 
 | |
| For compatibility with the popular `libsamplerate' library, the header file
 | |
| `soxr-lsr.h' is provided and may be used as an alternative API.³  Note
 | |
| however, that libsoxr does not provide a full emulation of libsamplerate
 | |
| and that using this approach, only a sub-set of libsoxr's features are
 | |
| available.
 | |
| 
 | |
| The design was inspired by Laurent De Soras' paper `The Quest For The
 | |
| Perfect Resampler', http://ldesoras.free.fr/doc/articles/resampler-en.pdf;
 | |
| in essence, it combines Julius O. Smith's `Bandlimited Interpolation'
 | |
| technique (https://ccrma.stanford.edu/~jos/resample/resample.pdf) with FFT-
 | |
| based over-sampling.
 | |
| 
 | |
| Note that for real-time resampling, libsoxr may have a higher latency
 | |
| than non-FFT based resamplers.  For example, when using the `High Quality'
 | |
| configuration to resample between 44100Hz and 48000Hz, the latency is
 | |
| around 1000 output samples, i.e. roughly 20ms (though passband and FFT-
 | |
| size configuration parameters may be used to reduce this figure).
 | |
| 
 | |
| For build and installation instructions, see the file `INSTALL'; for
 | |
| copyright and licensing information, see the file `LICENCE'.
 | |
| 
 | |
| For support and new versions, see https://soxr.sourceforge.net
 | |
| ________
 | |
| ¹ For example, multi-channel resampling can utilise multiple CPU-cores.
 | |
| ² Bit-perfect within practical occupied-bandwidth limits.
 | |
| ³ For details of that API, see http://www.mega-nerd.com/SRC/api.html.
 |