libsms in an open source C library that implements SMS techniques for analysis, transformation and synthesis of musical sounds based on a sinusoidal plus residual model. It is derived from the original code of Xavier Serra, as part of his PhD thesis. The goal of this library is to organize the many different components of SMS into an efficient, open, and well-documented architecture that can be utilized by various software systems within their own programming styles. See the library documentation below.

Latest Release:

libsms-1.101 - (October 27, 2009)
interesting changes (see doc/changes.txt for details)

  • Now compiles on Windows (Hurray John!)
  • new memory allocation schemes to handle changing window sizes appropriately
  • many python test scripts for using pysms
  • Mersenne Twister algo for random number generation
  • Removed FFTW3 library and now just use OOURA - it is slightly slower but the code is 5x cleaner. Who knows, maybe one day it will be back.
  • cepstrum.c functions for descrete cepstrum analysis and spectral enveloping

dependencies: scons, libsndfile libgsl,
documentation generated with doxygen.

Development Repo:

Hosted on github:
Also checkout John Glover's much more updated fork (hopefully to be merged soon):

[smspd] external library for Pure Data:

smspd-0.95 - real-time SMS synthesis and editing sure is nice (Nov. 15, 2008)
dependencies: libsms (above), Pure Data
externals: you will find these in [smspd]:

  • [smsbuf] - main storage place for sms data
  • [smsanal] - analysis that works on soundfiles or arrays of audio
  • [smssynth~] - real-time synthesis and basic manipulations (i.e. transpose)
  • [smsedit] - lowlevel editing of data within the buffer

sms-help.pd -- here is an image of the main helpfile, which should give you a good idea of the set of externals that are currently implemented.