mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-10-31 06:03:49 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Content
 | |
| =======
 | |
| 
 | |
| libsbsms is a library for high quality time and pitch scale modification.  It uses octave subband sinusoidal modeling.
 | |
| 
 | |
| sbsms has optional support for libsndfile(--enable-sndfile) and libmad(--enable-mp3) for reading(.wav and .mp3) and writing(.wav) files, and optional support for portaudio for playing .sbsms format files(--enable-portaudio) with sbsmsplay.
 | |
| 
 | |
| The API is found in sbsms.h.  sbsms_create is called and supplied a callback which feeds sbsms_process samples.  The pitch_create and pitch_process functions are called only if pitch shifting is required.  It simply sticks a resampler on the end of the FIFO.  
 | |
| 
 | |
| A program called sbsms is included.  It reads PCM files such as .wav and .aif (and .mp3 files if --enable-mp3), and writes .wav files using libsndfile.  The usage is:
 | |
| sbsms infile outfile rate-start rate-end halfsteps-start halfsteps-end <quality>
 | |
| 
 | |
| For example:
 | |
| sbsms blob.wav blobOut.wav .5 .5 0 2 
 | |
| will slow down blob.wav by a factor of 2, while simultaneously sliding the pitch up two half-steps, and put the output in blobOut.wav
 | |
| 
 | |
| Without sndfile support, the sbsms program will read text files in the format:
 | |
| %g %g\n
 | |
| ...
 | |
| and write output in the same format.
 | |
| 
 | |
| sbsms can also write .sbsms format files:
 | |
| sbsms blob.wav blob.sbsms 1 1 0 0
 | |
| 
 | |
| which can be quickly rendered into .wav files at a new rate/pitch:
 | |
| sbsms blob.sbsms blobOut.wav .5 .5 0 2
 | |
| 
 | |
| or played in realtime with sbsmsplay (if --enable-portaudio):
 | |
| sbsmsplay blob.sbsms .5 .5 0 2
 | |
| 
 | |
| NOTE:
 | |
| When reading the output from sbsms, you must determine a stopping condition for yourself, as the library zero pads the output ad infinitum and never returns 0 samples.  The simplest method for doing so is found in test.cpp.
 | |
|   
 | |
| Clayton Otey (otey@users.sourceforge.net)
 | |
| 
 | |
| Requirements
 | |
| ============
 | |
| 
 | |
|   POSIX systems (e.g. Linux, OS X):
 | |
|   ---------------------------------
 | |
| 
 | |
|   You need at least to have libtool installed to be able to build the
 | |
|   library with "./configure && make".
 | |
| 
 | |
| Compiling
 | |
| =========
 | |
| 
 | |
|   Call './configure && make' on the console to compile the library, all
 | |
|   tools and demo applications, documentation and install them with
 | |
|   'make install'. The latter has to be called as root.
 | |
| 
 | |
|   If you are compiling from CVS you have to call 'make -f Makefile.cvs'
 | |
|   to generate all autotools build files before calling
 | |
|   './configure && make'.
 | |
| 
 | |
|   You can use 'make distclean' and probably 'make -f Makefile.cvs clean'
 | |
|   to clean up everything again. The latter will also delete all automatic
 | |
|   generated autools build files. |