SpecAnaSyn - Spectral Analysis and Synthesis


This software was written mainly in 2006. The used language is C++, and has about 8,000 lines of code. It provides two binaries, mostly identical in features; one of them a command line application (using libpopt for option parsing), and the other one a graphical application (using libgtkmm (version 2) for the GUI and libao for sound playing). It uses spectral modelling techniques for parameterized sound analysis and synthesis.

For the analysis phase an STFT is done (using libfftw for doing FFTs), and then harmonic/sinusoidal analyis. For the synthesis phase additive synthesis is used. Using libsndfile for sound loading and saving allows to support many uncompressed sound file formats (WAV, AIFF, AU, headerless RAW, ...), and also OGG and FLAC, but MP3 isn't supported.

Available parameters include window type, size, and overlapping; sinusoid discarding; equalization; time strechting, frequency scaling and shifting; frequency and amplitude interpolation; normalization; dynamic range compression and expansion, etc.

It can be used to obtain new sounds, from existing sound files. The way of representing the analyzed sounds can also be used to implement a new lossy audio compression format (by further compressing losslessly the text data obtained in the analysis phase).