SNDAN: MUSICAL SOUND ANALYSIS, GRAPHICS,

MODIFICATION, AND RESYNTHESIS ROUTINES FOR UNIX

SNDAN is a package of Unix C programs for spectrum analysis, graphics, modification, and resynthesis specifically designed for monophonic musical sounds. Two programs are available for spectral analysis of single channel sound files to produce analysis files containing the time-varying amplitudes and frequencies of the components comprising the sounds. Another program is used to display, modify, and resynthesize sounds from the spectral data. There are also a variety of other programs for resynthesis and for display of time domain data.

Generally it is assumed that the sound file is a monaural sound file of type .snd (or .au) or .wav, where the sample data consists of 16-bit integers. (Note that the freeware Unix sound utility sox can be used to convert from/to other sound file formats.)

Graphics are EPS files and are automatically viewed by the computer's resident EPS viewer program, which on Linux is usually some form of ghostview or gv. With the Terminal app on an Intel Mac using OSX 10.6 or greater, the Preview app automatically converts EPS to PDF while displaying the graphic. The PDF files can be easily saved, printed, and imported into various other applications.

Sound files can be graphed using the program sp. It allows control of both the time and amplitude scales of the graphs. This program is exceptional for the SNDAN package in that it works for both monaural and stereo sound files.

The program sextract can be used to extract individual sounds from a sound file containing a sequence of these sounds (separated by brief silences) and put them in separate sound files.

Time-varying spectral analysis can be performed by either pvan (phase vocoder analysis) or mqan (spectral tracking analysis). Two types of analysis files are currently used. One (with suffix .an) is produced by pvan, while the other (with suffix .mq) is produced by mqan, although *.mq files can often be converted into *.an files. (* means wild card) (Note that these are cross-platform file formats and can be used unaltered on Big and Little Endian machines.) While *.an files contain a fixed number of partials (harmonics, whose frequencies are integral multiples of a fundamental), *.mq files consist of tracks, whose number varies with time throughout the sound's duration. In both cases the partials or tracks each have an amplitude and frequency for each analysis frame. (mqan's tracks also have phase on each frame.) We have found that pvan works best for sounds which vary little in pitch, whereas mqan is superior for sounds whose pitch varies substantially. pvan is particularly appropriate for single harmonic sounds of definite pitch because the analysis frequency can be set to match the sound's frequency. This is accomplished by a sample rate conversion program internal to pvan. For sounds of indefinite pitch, one can experiment with the analysis frequency; e.g., 20 Hz gives good frequency resolution, although not as good time resolution as a higher frequency would. The alternative is to use mqan, which does not require a specific analysis frequency; it also can handle inharmonic sounds.

monan combines the activities of parameter viewing, modification, and additive synthesis for *.an analysis files.

Some of the ways that monan can graph time-varying spectral data are; amplitude-vs.-time or frequency-vs.-time for a specific harmonic; amplitudes-vs.-time or frequencies-vs.-time for a group of hamonics; amplitudes-vs.-time-vs.-harmonic (3D spectrum); fundamental pitch-vs.-time (log frequency scale); brightness (spectral centroid)-vs.- time; harmonic amplitude-vs.-a different harmonic amplitude; spectral irregularity-vs.-time.

monan also allows input of an auxiliary analysis file. Commands have been written to scale the spectrum of the main data to achieve the spectrum of the auxiliary data at some time point or to blend the two sets of data in order to achieve an interpolation between the two. Another command takes the ratio of the two analysis data sets in order to compute a filter function between them.

Modification of *.an file data can be done using monan. Synthesis of *.an files (using additive synthesis) can be done with monan or with special standalone programs (e.g., addsyn).

Synthesis of *.mq files (using additive synthesis) can be done using the program mqsyn2. Display for *.mq files can be done with the program mqplot.

SNDAN is available as follows: Binary executable code for recent Linux and older Macintosh command line systems plus the C source code. For other systems, the user is expected to compile the C code with a resident cc (or gcc) compiler. Over the years, SNDAN has compiled successfully on the following computers: NeXT, SGI Indigo, Indy and O2, Dec Alpha, RS-6000, Sun Sparc, Intel PC with the Linux OS, and Macintosh running Mac OS X, until OSX 10.13. OSX 10.14 works for execution only. After that its 32-bit code is not supported at all.

SNDAN will run "as is" on both 32-bit and 64-bit PC Linux and older Macintosh systems. If the user wishes to modify its C code and compile it on a 64-bit machine, he/she should verify that the i386 library package has been installed. This is because all SNDAN recompiles (using Makefiles which include the -m32 or -arch i386 (Mac only) option on the cc compile and link lines) require this library. So far, we have found that the i386 library is automatically included with Macintosh OS X 10.5-10.13, but current Ubuntu Linux versions (e.g., v. 13.04) require special i386 installation. Unix code for implementing this is "sudo apt-get install g++-multilib", which installs the cc and i386 libraries. The i386 library alone can be installed using "sudo apt-get install libc6-dev-i386". Other useful downloads are 'gv' (for graphics on Linux), 'tcsh' (for the shell used with SNDAN), and 'sox' (for changing sound file formats), which can be obtained using "sudo apt-get install gv tcsh sox".

If you wish to download a copy of SNDAN, please register by sending the following information to James Beauchamp using the email link given below.

Example of what to send:
     Name:        John W. Jones
     Affiliation: University of Canterbury at Kent
     Address*:    2136 Ornithology Bldg., 1114 W. Aviary, Kent, AB3 6ZP UK
     Phone*:      +44-1344-330730
     Email:       jwjones@ucant.uk
     Computer:    Pentium II Intel PC
     Op. Sys.:    Linux (Ubuntu 12.0)
     Software Requested: SNDAN
     What is your application? analysis of bird songs
     How did you hear about SNDAN? from the animal biology site
* optional

You will then be sent the URL for downloading the software.

A Windows/DOS version of SNDAN is available at the SNDAN32 Site, but this is not supported by the Unix SNDAN developers.

Other links:

James Beauchamp's home page

James Beauchamp's email: jwbeauch at illinois dot edu

Updated on: November 25, 2021