Sculptor: the Sound-warping tool


Studio is a program for manipulating sound in the time domain, whereas Sculptor is designed for the manipulation of sounds in other domains. You can build the Sculptor suite by grabbing all the modules from the CVS, linking Common/Makefile to your working directory, and typing make. You will need the gtk and gnomelibraries and a C and FORTRAN-77 compiler. The Fortran code is from the netlib archives and is used for the efficient and reliable computation of Fourier transforms, eigenvalues and so on. Everything I wrote is in C!

Building the package gives you the following executables:

A real-time Fourier synthesiser;
A tool to produce the spectral files required by Prism;
A test program to generate strings which test Prism in batch mode;
A program which tests Prism in batch mode by playing as sounds the characteristic waves of Fermi-Dirac particles trapped in an infinite potential well (wot!?).

After building the package, you can test it in batch mode with Timbres program. From the directory in which you invoked make, issue the command

Timbres/timbres | Prism/prism

This will pop up a small gtk window with some sliders on it, and you can experiment with different mixtures of various harmonics, seeing the waveform you are hearing in a oscilloscope-like display. If you like musical wallpaper, you can try using Fermions/fermions as the pipe source instead. This produces a continuously changing, yet curiously soothing melody... could become your favourite executive toy.

Using Prism to modify sound

To start playing with real audio samples, you need first of all to generate a spectrum file. Start off with an audio file. We use .au files at 22050Hz sampling rates. There are some supplied in the distribution, including an extract from a performance of "Fanfare for the Common Man" by Copland, as performed by Leeds University Union Music Society. I thought this was a good title to be packaged with a piece of free software. First generate an associated spectrum file. You can say make common-man or make testfiles to do all the .au files in one go. Then invoke prism using its alternative appellation: Prism/xprism common-man. This will cause the program to start in interactive mode with an gtk display.

In interactive mode you can:

Click or drag on the spectrogram
to change the spectrum of the generated sound in real-time
Move the play-speed/pitch sliders
to change the speed/pitch of the playback (really??)
Examine the poles of the spectrums associated estimation filter
whenever you release the mouse button in the spectrograph window, a linear predictor tries to find an all-pole model of a system which generates the given spectrum. Moving the mouse close to the poles will show you their natural frequency and damping factor

Timbral Manipulation via Auto-Regressive Model Parameters

As of version 3.1 (released 11th September 1998), you can run an autoregressive model against a single spectral sample, then resynthesise using the model stimulated with 1/f periodic noise at a given fundamental frequency.

Since the input is not related to the model's residual, the timbre generated isn't always closely related to the starting point, but having selected the model as the source, it's possible to edit the formants and hear the timbral effect in real time

Smooth Timbral Glides

As of version 3.3 (public release, 5th Semptember 1999), the formant editing dialogue shown above has extra functionality. The user has disabled perceptually less significant formants using the check-boxes (poles are shown in purple on the predictor plot). The resulting model has been saved with the name "A New Formant Set"

The user can group the formants towards the top of the formant editor by swapping them. Selecting a formant to edit, then pressing one of the buttons labeled "Fmt n:" on the left of the dialogue restults in the selected formant and formant n being exchanged. In the screen-shot on the left, the user has first moved all of the "active" formants to the top 4 positions, and saved them under the name "A New Formant Set". After further editing (the results of which are audible in real-time) and/or acquiring a different model from the audio file, a second formant-set has been saved under the name "An Edited Formant Set". These two sets are used for interpolation through the "Timbral Glide" slider.

The order of the formants in each set, and whether or not they are enabled, is important. Interpolation where formants in both sets are present is achieved by varying the amplitude, centre frequency and damping of the formant. However, if the formant is enabled in only one set, the formant is "faded out" without the centre frequency of damping being changed. Thus there is a difference in interpolating between, on the one hand, an enabled and disabled formant, and on the other, two enabled formants one of which has zero amplitude; in the latter case, the frequency and damping of the formant can be varied as it fades in and out.

Continuing Development

Send me an email if you are interested in the development of the Sculptor package. We have our own research agenda, so cannot promise to include any new features you might think up, but we'll be pleased to accept bug fixes and discuss our work!

You can grap a copy of the code at the Sourceforge Sculptor Page via CVS.

The Linux Journal carried an article on this software in Issue 54. You can see the HTML version here or download the LaTeX source if you prefer.

The above articles were submitted and published before the gtk port took place.

Maintained by: suggestions for additions welcome.