Ceres Help

Ceres Help

If you have any comments on Ceres, send a mail to

oyvindha@notam.uio.no (Řyvind Hammer).


Ceres is a simple program for displaying sonograms and for sound effects in the frequency domain.

Ceres is started simply with the command "ceres". You may give an FFT size parameter as a command-line parameter (for advanced users!). An empty window will appear with a menu bar at the top.

Select "Load & Analyze" in the "File" menu, and select a sound file. There is unfortunately no way to change the default directory "/sounds". Ceres accepts files in AIFF or AIFC format, any sampling rate, mono or stereo (stereo files will be treated as mono).

The file will then undergo a phase vocoder FFT analysis with N=1024, and the analysis will be stored in memory. This means that there is a limit on the size of the sound file, because the analysis data size will be huge. If the program crashes for sounds shorter than 30 seconds at 44.1 kHz sampling frequency, your computer has a too small swap space anyway, and your swap space should be increased. A sonogram is drawn as the analysis progresses.

At any time, you may change the color map of the display in the "Settings->Display" dialogue.

You may now use the options in the "Transform" menu to change the spectral data, as described below.

To hear the result, you must resynthesize the sound with the "Synth & Save" button in the "File" menu, and then play the sound either with the "Play" option or with the "sfplay" command in your UNIX shell. Sorry 'bout the directories and file names not updating in the Play file selector.

In the "Settings->Resynthesis" dialogue, you may control the way the sound is resynthesized. "Resynth time stretch" does what it says, but the result may have irritating pulsation in it. To avoid this, and to avoid a "gritty" sound that may result from some transforms, select "Additive synthesis". This will select an additive synthesis method instead of inverse FFT.

3. Transforms

Many of the transform parameters can be controlled over time using a control function. Select "Settings->Display->Show control function" to display a breakpoint curve which can be edited using the middle mouse button (press Backspace or Delete to remove a node).

Using the right mouse button, you may select a rectangular area in the spectrum. Consecutive transforms and exports will then only apply to this area.


Sieve is a useful operation which will only retain the N strongest frequency components for each analysis window. This makes an interesting sound in itself for N less than about 20, and it can be used as an effective noise reduction method for larger N. Also, it is often necessary to reduce the amount of data with "Sieve" before you export the analysis to a Csound score file (see below).

You may select any N ("Number of harmonics"). This value N may be multiplied continuously by a factor which you select for exponential increase (A>1) or decrease (A<1). A=0.5 will thus apply an envelope in such a way that N is halved each second. This is great for "morphing", because you can let one sound "desintegrate" and another "integrate", and then mix the two together. You can also control N from the control function by ticking the box.

A composer here wanted more "life in the top", and so you can weight high frequencies with the "Boost" parameter. Try the value 1.

Spectrum shift

Spectrum shift will add the specified number of Hz (positive or negative) to each frequency component. This will upset the harmonic relationship, and sounds somewhat like ring modulation. The "Multiplication pr. sec" and "Control function" fields work as for Sieve. Frequency components which fall below 0 Hz or above Fs/2 will be removed.


Mirror Mirror will fold all frequency components around the specified mirror frequency - those below it will flip above, and vice versa.

Pitch shift

Pitch shiftwill multiply each frequency with the specified factor, so that 0.5 will drop you one octave, 1.5 will increase the pitch by a fifth, etc. Again, you may specify an exponential envelope for glissando effects. A=1.05946, for example, will increase the pitch by one semitone each second. "Static frequency" is rather fun. This specifies the frequency which will remain stationary (normally 0 Hz). If you set this to 800 Hz, you may let all harmonics converge to (A<1) or diverge from (A>1) 800 Hz.


Filter will remove all frequencies between the two you specify.

Null phase

Null phase is an experimental feature which zeroes all phase (and therefore frequency) information. You may try it, but the result is not sensational. You will get some kind of deep "robot" sound.


Average just averages the spectra over time, making one continuous note. Useful for subsequent LPC analysis etc., to extract the "mean" frequency characteristic of a person talking, for instance.

Move to pitch grid

Move to pitch grid is a function which lets you move the frequency components to a fixed set of frequencies (a chord) called a "pitch grid". Choose "Settings->Display->Show grid" to display the grid. The chord is selected in "Settings->Grid Scale". You may there select different standard scales, or you may choose to read the frequencies (in Hz) from a user-defined text file which must reside in the directory from which you started Ceres, and which must have the name "frequencies".

The "Probability" field gives the probability (0-1) that a given frequency component at a given point in time will be moved to the nearest frequency in the grid.


Convolve is an experimental function which is probably of little use. You may select different standard convolution operators (3X3 masks) used in digital image processing.

4. Export

The Export functions let you send analysis data to text files for later processing in other programs.

Parmerud Csound scorefile

This specialized export was made for the Swedish composer Aake Parmerud. The frequency axis is divided into a number of "strings". As soon as the amplitude in a frequency band corresponding to a string exceeds the Trigger value, a new Csound note is written with a duration given by the Resonance value. After a number of seconds (Hysteresis), the string will again enter a trigger mode, waiting for the amplitude to exeed the threshold.

Spectral peaks

Writes all spectral peaks as time-amplitude-frequency triples.

Csound scorefile

Sends the complete spectral analysis to a Csound score file. Each line represents a "pixel" as shown in the sonogram, and is formatted as follows:

i1 Starting_time Duration Frequency Amplitude

Note that "Duration" will always have the same value.

Warning! The Csound score file may become ***huge***. It is strongly recommended to do a Sieve operation first, to reduce the number of non-zero pixels.

STF visualization

Writes an ASCII file which is compatible with the scientific visualization program "SciAn" from Florida State University. The format is really simply a matrix with amplitude as a function of time (rows) and frequency (columns).

Single LTAS frame

Writes a single FFT frame taken from a time point in the middle of the sound. Useful to extract the spectrum following an "Average" spectrum. (LTAS is short for Long Time Average Spectrum).

5. Settings

Most of the options here have been described in their proper context under Introduction and Transforms above.


Here you can select the type of window function to use both in analysis and resynthesis. It is recommended to use the default (Hanning). Because the Rectangular and Hamming windows do not taper down to zero in the ends, they may cause clicks for certain transform operations.


Select "Settings->Display->Show paint" to turn on the painting modus. Instead of marking rectangular areas, the right mouse button can now be used to paint small squares in the spectrum. Selecting "Keep" or "Remove" in the Paint menu will then keep the selected pixels (discarding all others) or remove them (keeping all others).

Select "Restart" to remove all paint and start anew.

6. A final word

I repeat that Ceres is under development. Please be patient with its flaws. And yes, it's slow, I know. If you have bug reports, things you want to see added, or even want to take part in the programming, please mail me.

Why Ceres?

Much of the functionality in this program (in particular the Sieve, Move to pitch grid and Export functions) regard the FFT as a granular sound processing method, where individual pixels in the sonogram can be considered to be discrete grains placed in time and frequency.

The name Ceres was therefore chosen in allusion to the Roman goddess of grain. So now you know!


The latest version of Ceres is available by anonymous FTP from ftp://notam.uio.no/pub/sgi/ceres/

top of document