Getting Started with SMS (Spectral Modeling Synthesis)

Goto: [ download | using | analysis | synthesis ]

Downloading and Installing SMS software

    You can download software for SMS for Linux, Windows or Mac OS 9 from the webpage:

    You will have to register for a free account the first time you download the software. Select a version SMS 2.6.3 for your computer.

    Alternatively, you can access the SMS frontend on the web from the webapge: . In this way you will not need to download and install any software; however, using sms via the web can be slow, especially with longer soundfiles. Also, the web interface does not seem to be working right now (13 Jan 2003).

Using the sms program in linux

    The sms program has been installed at Peabody on mambo in the directory /usr/local/sms. To use the sms program, log into mambo remotely as you usually do. To check if the command is available, type the following command:

       which sms
    The which should reply that the sms program is located in /usr/local/bin/sms.

    You can type the command sms by itself to see the basic help for the program:

    # sms
    SMS version 2.6.3
          sms analysis FileName
          sms synthesis FileName
          sms tosdif FileName
          sms fromsdif FileName
    The sms program can either create a soundfile or analyze an existing soundfile according to the parameters commands you write in the score-file which is the second argument given to the sms command.

    Basic help for the sms command can be found by typing the command

       man sms
    or clicking on this link:

    The next two sections demonstrate a basic score-file for analysis and synthesis of a sound.

SMS analysis

    In order to manipulate a sound file with the sms program, you need to go through two steps:
    1. Analyze the a soundfile to generate sinwave tracks and noise models of the residual sound.
    2. Synthesize a new sound with various transformations such as changes in pitch, duration, harmonics.
    The analysis stage of sms requires a score-file which contains parameters necessary to analyze a sound. There are many parameters which are used to control the analysis of the sound. Refer to the online manual for a complete description of the score-file. In particular, view the analysis parameters. An old summary of the analysis parameters is available on this website which will be converted eventually to the newer sms score-file syntax.

    Sample sounds for use with SMS can be found in the directory /usr/local/sms/sounds.

    As an example, download the file flute-c5-22050.wav and run the sms program with the following script, flute-c5.anl:

    The command to type is:
       sms analysis flute-c5.anl
    This command will read the soundfile flute-c5-22050.wav and generate the SMS analysis file flute-c5.sms which contains spectral anlayses of the soundfile and is usually about 10x larger than the orginal soundfiles, so don't keep too many of these files lying around or the server will get full fast. Also note that the score-file cannot contain tab characters.

    The soundfile can be analysed with many different settings for the options, but the default settings are good for monophonic harmonic sounds. Next, the file flute-c5.sms can be used to generate new sounds. As demonstrated in the next section.


SMS synthesis

    Here is a description of the synthesis parameters which is useful to refer to when writing score-files for the sms program.

    Copy the following score to a file called flute-c5.syn:

    Process this score-file with the following command:
       sms synthesis flute-c5.syn
    This will generate a soundfile called flute-c5-sines.wav which contains only the major sinewaves present in the original soundfile.

    The resulting file sounds pretty similar to the input sound, but it is different. Listen to the input and output files and see if you can hear a difference. The following command can be used to listen to the difference between the two files:

       subtract flute-c5-22050.wav flute-c5-sines.wav difference.wav
    This command will subtract the second file from the first file sample by sample, and put the result into the third file.