Ceres3 Help

By Stanko Juzbasic

based on Ceres Help by Oyvind Hammer and Ceres2 Help by Jonathan F. Lee


This is the help file for versions 0.28b.xx. Some of the functionality may not apply to older versions (0.25, 0.26.xx and 0.27.xx). If you have any comments about Ceres3, please send them here.


A Transform menu function called "Mirror" has been completed. Now the third control function can be used for non-linear mirroring, to create sort of "Mirror within a mirror"(see Mirror).

Keyboard shortcuts for switching among the active control functions and edit areas have been implemented. No more need for opening "Settings>Edit/Display" each time you switch to a different control function or edit area. (see Settings).

Functionality of "Edit>Extract" improved and maximum number of control function points raised to 200.

Graphical display gain can be now controlled by means of "+". "-" and "=" keys. (see Quick Tour)

A GUI inconsistency, which did not update dialog-box in "Settings>FFT/Play" is fixed.

A nasty bug, which accumulated phase errors in in successive overlap/add resyntheses, has been crushed. You'll see no more "low quality" warnings in Settings-Resynthesis

Dave L. Phillips, the undisputed promoter of free Linux audio and music software has recently published a useful Ceres3 mini-tutorial, with many interesting examples. You can visit it here.


Ceres3 is a free cut-and-paste sound editor which works in the frequency domain. It is currently supporting SGI-IRIX Linux, LinuxPPC and MacOS X platforms. My work on it has been inspired by its older siblings, Ceres and Ceres2, to which it owes most of its basic concept and framework, and to whose authors I dedicate and return my work as "practical feed-back". This program includes new functionality, extending some of the Ceres & Ceres2 implicit potentials to full features.

Instead of concentrating this writing on the changes and modifications to other "Cereses", I've decided to compose this help file as brief reference for anyone interested in trying out and hopefully using the program.

Please, once again, bear in mind - this help file is for version (0.28), it does not apply completely to the earlier versions. Get the new version of the program (it's free), rather than dealing with information which doesn't deal with your app.

Quick Tour

Ceres3 is started by (double)clicking its icon or from unix shell, by typing in the "ceres3" command. On Mac OS X you can also start it from the "Applications" menu in the X11 menu-bar (however, to make it double-clickable, you first have to rename it ceres3.x11app. You may give additional parameters as command-line options,  but these are not necessary just to make the program start. 

An empty menu-bar will appear on your screen, reading  File, Edit, Transform, Settings and Help.

Select "Load & Analyze" in the "File" menu, and select a sound file. Ceres3 accepts mono and stereo 16-bit, 24-bit and 32-bit integer files in AIFF format, at 22.05k, 44.1k and 48k sampling rate, so far. However, stereo files will be interpreted as mono during analysis, according to user's selection in the Load file dialog (L, R or L+R). One could eventually argue in favor of the comfort of rather working with stereo files, however the theory behind the phase vocoding (that's the technical name of the analysis-resynthesis process atop of which Ceres3 is built) really works only if the sound source model can be approximated with a point. This means harmonic relationship within the spectral content of a sound only works with monophonic audio signals accurately. In other words, plain phase-vocoder technology does not support stereo processing. Therefore, once you let load, analyze, edit and transform your file, it will ALWAYS be resynthesized as a monophonic file, no mater if the original sound file was stereo. However, all other file attributes (sampling rate, bit depth) will be preserved.

The file will then undergo an FFT analysis with default analysis values, unless you choose something else in the Settings>Analysis, Settings>FFT/Play and Settings>Display menu items. The analysis image will than be stored in the memory and displayed in the main window which opens on screen. However, if sound files are huge, analysis data are much huger, therefore Ceres3 is a memory-hungry and processor power demanding program. It is not recommended to work with sound files longer than 60 seconds, unless you have a lot of RAM and you know what you're doing.

What appears on the screen also depends on how loud or soft the analyzed sound was. To fine-tune the display gain you may use the "+", "-" and "=" keys."+" and "-" keys will respectively increase or decrease the display gain in 3 dB steps. The "=" key will reset dthe display gain back to the default level.

You may try to test the "Sieve..." option from the "Transform" menu for example just to have a taste of what it does to your sound. A dialog-box will appear. Just check the "Invert" button and press OK. The  program will change spectral data by eliminating ten strongest spectral contours.

If you wish to hear the results of your work, first you have to resynthesize the sound by pressing the "Synth & Save" button in the "File" menu. If you want to hear the preview of the result, press "<Shift>-p" on the keyboard. If you are satisfied, choose and type appropriate name for the resynthesized file into the dialog box, then press OK. After this has been done, you can listen to  the current sound either by selecting the "Play Current" option in the "File" menu , or by pressing the 'p' key on your computer's keyboard. If you'd like to  play the original sound for comparison with the current, select "Play" from the "File" menu. A file selection box will appear, letting you choose the original file. Pressing OK will paly it back.

You may wish to play around with other "Transform" menu options and try how they sound. Take care to synth&save the transformed sounds. Else you won't hear how they sound, because the program does not do it automatically.

Ceres3 GUI

As most UNIX programs do, Ceres3 graphical user interface is simple and network transparent, which means that you can operate the program on one computer, while it actually runs on another. It has a main window with a menu-bar and a number of dialog boxes which let you communicate with the program. In the main window you can draw curves, shapes and paint spots useful for editing a sound. You can also choose  among processes from the menus. Those of the menu items which, once selected, open their corresponding dialog-boxes into which you can type additional parameters and select commands, are marked on the menu-bar with an elipse (...) character following the name.

This is a standard main-window appearance of Ceres3 (in KDE 1.2). Ascending spectral frequencies (in kiloHertz) are shown linearly from bottom upward. Time development (in secs.) is displayed from left to right. Please remark the control function layout:

Dialog box is another standard feature of Ceres3. What is particularly nice about UNIX dialog boxes is that you can keep multiple boxes open at the same time if you need them (e.g. to change settings from process to precess) and neither would block the program. Many dialogs can also be invoked by kewboard shortcuts  -  e.g. Edit control function dialog from the Edit menu can also be invoked by pressing  ^f  (control-key and f-key together). This is the layout of a typical Ceres3 dialog-box:

Tracking filter - a typical Ceres3 dialog-box

Command line arguments

Even though most of Ceres3 works throuhgh the GUI and relays on it, it is still worth knowing about the few command line arguments with which one can start Ceres3 from console (it's better to do so some times).

1st  argument : program name (in lowercase letters, that's ceres3)
2nd argument: FFT size (must be a power of 2 i.e. 256 or 512 or 1024
or 2048 or 4096 or 8192)
3rd argument: window size
4th argument: window step (must be a fraction of window size)
5th argument: display width (any number btw. 500 and 1600)

This is how it works:

FFT size

This number is technically very important because it determins how many frequency channels your analysis will have. Number of channels always equals one half of the FFT size + 1. What is this number of frequency channels? - A straightforward value of spectral resolution. Therefore, higher resolution also requires larger FFT size.

window size

This value is closely related to the FFT.
It determins the lowest frequency that can get detected.

window step

is a fraction of the window size. It determins the time resoultion of your analysis.

display width

is the with of the window to display the sonogram.

Example: ceres3 1024 1024 256 500

Default values for the program (unless you start with command line arguments are the following:
 FFT size = 1024; Window size = 1024; Window step = 128; Display width = 700;


This is the brief Ceres3 Functionality overview in terms of menus, menu items and dialogs:



A frequency domain analysis need not be started from a real sound file (Load&Analyze)but can be also made from scratch (New). You can enter the desired length of the analysis and either of two spectral scratch-pads:

Load & Analyze

It opens a standard file-selection dialog-box to pick the sound file you'd like to edit in the frequency domain. Above the file name text field you will see the file info. This is very useful if you want to pick a sound from a folder with a mess of files, not all of which are sounds. If you select a stereo file, a sub-window will open with radio-buttons, to let you choose which trach you want to import. Once you select your sound file, click "Ok". Then the program performs the frequency-domain analysis of the chosen file, in order to render it frequency-domain-editable. Finaly, it displays this analysis graphically, in a form which is called sonogram. In common-sense words, the program decomposes your sound into an image which is suitable for spectral editing.
Hint: Check the analysis settings in "Settings->Analysis" and "Settings->FFT/Play"

Synth & Save

It performs the oposite action than Load &Analyze. Once the frequency-domain editing is completed, the sound has to be composed back together into a form which is playable. This process is called resynthesis. Then the sound sets saved to file, as you name it in file-save dialog-box, which tho program opens for you.
Hint: Check the resynthesis settings in"Settings->Resynthesis"


Any file can be played-back using standard file-selection dialog-box, which the program opens for you.

Play Current

Current file can be played without entering file-replies or clicking dialog-boxes.


The contents of the analysis, edits and transforms, stored in the working mamory will be resynthesized directly to the default audio output, without actually creating a sound file. This function, as its name says, depends on different audio hardware for different UNIX operating systems, and has been fully implemented only in IRIX and OSX, so far. On a O2+ workstation it can resynthesize up to 16384 point FFT size with window overlap of 1/4 window size in real time.


Control function data

Control function data (see below) make possible to manipulate one sound with parameters of another one, or even multiple sounds. For Control function file data  format see Export.

Area data

Editing areas need not be drawn by hand each time. For editing of multiple files one can export, than import area data as well.

Analysis data

Reads an FFT analysis text file which is interchangeable with IRCAM's AudioSculpt and SVP format and draws the sonogram representation on screen. For file format details see information in Export sub-menu's paragraph of this file.

Sonogram data

Reads a dump of instantaneous amplitude/frequency pairs, together with relevant global info, such as sampling rate, FFT size, step and time resolution, as well as amplitude conversion factor.

PBM ascii image

Reads and displays any Portable BitMap image file saved as ASCII text. These files can be generated by IRIX system (SGI) or by programs such as GIMP (all platforms). It is an experimental feature with no explicit musical meaning, because images which make sense to one's eye may "sound" very unatractive to one's ear. By cheching appropriate toggles in the file-select-box you can select what and how the image will be displayed:
Neg. toggles between positive and negative display
Full displays file on full screen height
R,G and B display respective intensities of red, green & blue color components


The Export sub-menu lets you save various analysis data to text files for later processing in Ceres3 or in other programs.


Control function data

Control functions can also be exported to file . The format is a text file with  <x  y>  pairs, both normalized to the range 0-1.

x1_1  y1_1
x1_2  y1_2
x1_n y1_n
x2_1  y2_1
x2_2  y2_2
x3_1  y3_1

Area data

Editing areas are rectangles, on how to use them you can read later in this text. Specifying the two diagonal points is enough for export and re-import:

x1 y1
x2 y2
x3 y3
x4 y4
x5 y5
x6 y6

Csound scorefile

This 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.

Parmerud Csound scorefile

This specialized export was made by Oyvind Hammer 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.

It is somewhat like sympathetic resonance generator.

Spectral peaks

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

IRCAM Partials

This type of file is being used in IRCAM's AudioSculpt, PatchWork, SVP but also in Columbia CMC's RTcmix.
This is the format of IRCAM's  "partials"  text file - it's actually a LISP-list:

(PARTIALS <number_of_partials>
(POINTS <number_of_points>
<time> <freq> <amp>
...     ...    ...

Analysis data

Writes an FFT analysis text file which is interchangeable with IRCAM's AudioSculpt and SVP format. This file is extremely huge. It can be used in Source Filter command of the Transform menu and it looks like this:

<time> <number of bands>
<amp> <freq>
...     ...
...     ...
...     ...

...     ...
...     <Nyquist freq>

<time> <number of bands>
<amp> <freq>
...     ...
...     ...

Sonogram data

Writes a dump of instantaneous amplitude/frequency pairs, together with relevant global info, such as sampling rate, FFT size, step and time resolution, as well as amplitude conversion factor.

Inventor visualization

Writes an Inventor 2.0 ASCII file with a 3D model of the spectral landscape. This can be viewed with any program compatible with the "Ivview" program for SGI computers. Also, the format is largely compatible with VRML, and can be viewed in a Web browser with the appropriate plug-in. This file can also get surprisingly large, in terms of megabytes.

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).


This command will close the analysis window and destroy all the information from your analysis. Before doing it, the program will post a question dialog to remind you if you have saved all you needed from this session. If you haven't, just press the "Cancel" button, and save or export whatever you have to.


This command will post a dialog which will give you a last chance to make up your mind before quitting the program.


Edit menu options (Copy, Cut and Paste) deal with actual spectral data. In case you make a mistake in the middle of creating a marvellous sound you can still undo your edit. However, to perrforme pasting and multiple pasting  "Settings -> Edit/Display -> Allow Undo" must be checked.

Undo Ceres3 currently supports only one level of undo.

Redo Ceres3 currently supports only one level of redo.

Copy places all spectral data within selected area to the clip file.

Cut copies, then clears the spectral data within the selection. Please note that there is no separate "Clear" menu item - it just makes no sense in spectral editing. You can use "Gain" from "Transform" menu and set the factor to zero.

Paste replaces selected area with spectral data from the clip file by finding frequency channels that match. Only the part of the target area containing common frequency analysis channels will be affected. Only as much time will get affected as allowed by either the length of the clip-file or the length of the edit area. The rest of the sound will be left unchanged.

Certain time-varying and frequency-varying qualities from the sound analysis can be extracted into control functions. These control function can be edited, applied in the frequency-domain transforms as control data, or exported into text files for further processing. This can be accessed by selecting "Extract" in the "Edit" menu.
It will pop open a dialog-box titled "Extract". You have choice to select:

Further, the amplitude and average spectrum extraction work either on the entire sound or on pre-selected active Edit Areas (see: Settings -> Edit/Display).

Control Function
Algorithmic editing of the control functions (breakpoint curves or graphs)can also be accessed from the "Edit" menu, taken  the following steps:

Select "Settings->Edit/Display->Edit control function...." to manually or algorithmically edit any of the three breakpoint curves. You can edit them using the middle mouse button, or by pressing <Alt-2> while clicking a single-button muuse (press Backspace or Delete to remove a node). Thus, any of the control functions first has to be activated in order to become editable either manually or algorithmically.

The selection "Control function" in the "Edit" menu will pop open a dialog box titled "Edit active control function" containing two text fields and ten radio-buttons...

Paint (Restart, Keep, Remove)
Select "Settings->Display->Allow paint" to switch into the painting mode. Instead of marking rectangular areas, the right mouse button can now be used to paint squares and lines in the spectrum (Size of those spots can be entered in the "Settings>Display" dialog). Selecting "Keep" or "Remove" in the Paint menu will then keep the selected squares (discarding all others) or remove them (keeping all others). An interesting granular effect can be achieved by painting a lot of little squares at random, and then selecting "Keep".

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

Hint: Even though edit squares will stop showing once "Allow Paint" selected, they will stay effective unlsee unchecked. This means that you can choose either to restrict the "Paint" editing to a designated area, or apply it to the full screen.  


Most of the transform parameters can be controlled over time using three available control functions. Two of them, control function 1 and control function 2 can be assigned to control sound parameters which develop in time. The third control function, the vertical one can take over qualities of sound which span across the spectrum.

All of the transform options can be made to work either on the entire file or on a rectangular patch of it. Any of these three patches, or edit areas can be made active by being selected in "Settings">"Edit/Display">"Activate/edit area ___". Then, the area itself can be drawn by using the right mouse button. Following transforms will then only apply to the designated area.

Menu options whose names are followed by elipsis character (...) are those which will open dialog boxes.


Sieve is an operation which will only retain or eliminate the N strongest frequency components for each resynthesis window. Apart from using it to reduce the amount of data with "Sieve" before you export the analysis to a Csound score file (see below), there are many other ways for using it creatively.

If you type a number other than 1 into the field "Multiplication per sec" the value N ("Number of harmonics") will be multiplied continuously by this factor . A 0.5 factor will  half the number of "surviving" harmonics each following second.

The value N (number of harmonics) can be also controlled via control function 1 (you have to check it in the dialog-box).

By choosing "Invert" in the dialog box, you generate a process which is an exact negative of the normal sieve. Thus you can make sounds appear and dissappear in a very curious and elegant way. This can be great for morphing.

You can also control the number of harmonics N from the control function 1 by checking its box.

"High frequency boost " will accentuate high frequencies prior to the sieve operation. Unless "Invert" is selected, much more high-end will be preserved.

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 works as for Sieve. The Control function  1 is now interactive with the shift value and acts as a multiplier (0 to 1) for the shift value. Control function 2 makes the process affect loud spectral bands more than soft ones.  Control function 3 can make the shift value also frequency dependant. However, frequency components which will get moved below 0 Hz or beyond half of the sampling rate will be removed.

Spectrum Shape

Spectrum shape is a unique Ceres3 process. It will reorganize (selected or all) spectral data in such a way that average spectrum and variation from this average (spectral dynamics) will be computed for each frequency channel separately. By substituting these averages with control function 3 values, the basic timbre of the sound will get changed. Control function 2 can make exaggerate or reduce the spectral dynamics. Control function 1 affects the modification depth, or how much the original sound will be modified.


DynamicBlur will low-pass-filter or hi-pass-filter the amplitude and frequency values along the time axis, blurring or sharpening the spectral development, depending on whether you type positive or negative value into the "Blur (-1 to 1):" text field. Values close to zero vill produce very subtle changes. More extreme values, close to 1 (or -1) will also give more radical results (such as spectral freezing for the blur value of 1.0).

You can switch Control function 1 -> Blur button to make the blur development time dependent rather than static. However, please observa that blur values go between -1 and 1. Therefore, the zero blur value is located in the middle of the sonogram, half-way between the top and bottom of the  drawind area.

Further, by switching Control function 3 -> Blur scaler you can make the blur value frequency dependent.

Finally, the filter may be reset to the original spectrum at a fixed frequency, to produce a sample-and-hold effect.

Band Filter

Band filter is a completely new filtering option which allows for a number of filtering methods:

*Low-pass/High-pass filtering:  If high-pass frequency  is set to zero the entire sound spectrum will go through. If lower than the low pass, this will produce a band-pass effect. If opposite, a band-stop filter will be produced.
-For musical convenience, freauencies can also be entered in terms of pitch.

*Bandwidth control , how it changes in time - can be modulated by control function 1.

*Stop-band gain can be modulated by control function 2.

*Frequencies file format:

stop              <if stop-band, else nothing>
freq_1            <or pitch_1>
freq_2            <or pitch_2>
freq_p            <or pitch_p>
freq_q            <or pitch_q>

Ceres3 will also accept file format of Ceres2.
*Hint:  The filter-frequencies file can bear any name - you can type it into the dialog-box.It only has to stay in the  working directory. Else, the program won't be able to find it.

Breakpoint Filter

Breakpoint filter is a newly implemented feature which lets filter the spectral data either in-between two breakpoint curves (control function 1 and control function 2) or outside their boundaries, depending on whether pass-band or stop-band mode is being selected in its dialog-box.
Further on the amount of stop-band attenuation can be entered in its text-field.

Pass-band equalization can be controlled by control function 3. (Tip: if both control functions 1 and2 are off and the filter is in pass-band mode, the control function 3 makes it work as graphic equalizer, turn it on).

Comb Filter

Comb filter keeps or removes only partials with frequencies that are integer multiples of the given fundamental frequency/pitch, or less than one half FFT channel away from such a multiple. Control function 1 can supply information for such a fundamental, while control function 2 can control the depth of the filtering process.
Please remark that control function 1 in this filter covers values between 0 and 1000 Hertz.
In addition, Inverted comb filter mode will rather remove than keep the matching frequencies.

Resonant Filter

This is an experimental feature of Ceres3. The program simulates sympathetic resonance by low-pass filtering those energy-bands which which fall within the range of a pitch grid. You must specify this grid in Setings>Pitch Grid menu. The resonance factor varies from zero (no resonance) to one (infinite resonance). It can be also controled by control function 1.

Source Filter

This is one of the most powerful Ceres3 tools. It lets you cross-synthesize two different sounds by independently manipulating amplitude and frequency information. It bears such a name because it deals with two files: the source (the one which has been loaded and analyzed in memory of Ceres3) and the filter (which had been previously exported to FFT analysis text file). Control function 1 controls the interchange of frequency information while control function 2 controls the amplitude information (most of filter data comes in at uppermost position of either). The loopback toggle lets the program loop back to the begining of the filter file if it s shorter than the source. Interpolation method option menu lets you choose the transition morphing among aritmetic, geometric and harmonic mean value interpolation. Experiment, so you can get the best results for your particular needs with your specific sounds.
Caution: Both source and filter file must have the same FFT size and must originate from files with equal sampling rates.

Tracking Filter

This is another Ceres3 experimental feature. It is actually a generalized model of a frequency-domain comb filter with a few tweaks, which give it a bit more human sound.
The filter actually tracks and extracts the strongest spectral activity in the very neighbourhood of the entered fundamental value or control function 2 plot. Then it manipulates amplitude and phase data of the channels harmonically related to this activity.
You can also use the option to track a previously extracted fundamental directly. This will give more precise result, bacause the control function is only an approximation.


Mirror will fold all frequency components around the specified mirror frequency - those below it will flip above, and vice versa.
It supports two control functions, each of which controls a mirror. The control functions operate sequentially, so that the second mirror inverts the result of the first mirror.

The third control function, which spans throughout the frequency domain affects the second mirror by multiplying its instantaneous value by the factor of its own instantaneous values. Thus, the mirroring pattern can get folded within itself, producing sort of "mirror within a mirror effect". It works particularly interesting in gombination with "Move to Pitch Grid" transform.


Warp will stochastically scatter frequency and amplitude data of each channel back and forth in time, together or independently.
It is a granular synthesis which treats amplitude and frequency information individually. If 'Warp' factor is set to 1, spectral information is shuffled through entire active edit area, 0.5 across one halfth, etc. Negative values have no meaning.Control function3 interactively modifies this factor, while control function2 interpolates between processed and original information.


Exponentiate will raise each of the channel frequencie to the power which you either specify in athe uppermost text-field or plot in the control function 1. It works best with values btw. 0.8 and 1.2. If you want more control over the proces you can use two extra text fields: Multiplication factor weighs the original frequencies, while Slope factor weighs the exponent extracted from the control function by making the changes smoother.
If you work on a selected edit area it will most likely happen that the processed frequencies leak out of the designated vertical portion of your rectangle. If you don't like it you can prevent it by checking the  "Area Strict" button.


Spread scatters the frequency components randomly. Using the "Amplitude sensitivity" parameter, you may enforce increased spreding for larger amplitudes. Using the "Control function 3 -> Frequency sensitivity" may selectively use "Amplitude sensitivity" on certain frequency bands.
If you work on a selected edit area it will most likely happen that the processed frequencies leak out of the designated vertical portion of your rectangle. It is bad, unless you want it. You can still prevent it by checking the  "Area Strict" button.

Pitch Shift

Pitch shift will 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.


Gain allows you to scale all or selected portions of spectra (edit area) with either a factor or an envelope (control function 1), depending on how you select the treshold value (in % of average bin amplitude). The "Below" toggle determines if the gain change will affect amplitudes above or below theshold value. In other words you can configure the "Gain" module to act as dynamic time-varying compressor/expander as well. Even more, the control function 3 can be used for equalization.

Null Phase

Null phase zeroes all phase (and therefore frequency) information by reseting it to a multiple of bin frequency for each analysis channel. Control function1 is the interactive modifier of the multiplying factor. Control functions 2 and 3 control the interpolation between original and processed sound horizontally and vertically. Area Strict in and Area Srtrict out toggles restrict either of the source or result data to the selected active edit area.

Keep Peaks Only

Keep peaks only will remove all spectral activity except for the peaks. This is useful to limit the amount of data for export, and may also be used as a pre-processing step to improve the quality of some transforms.


Average just averages the spectra over time, making one continuous note. Useful for extracting the "mean" frequency characteristic of a person talking, for instance.

Move To Pitch Grid

Move to pitch grid is an option which lets you move the frequency components to a fixed set of frequencies (a chord) called a "pitch grid". Choose "Settings-> Edit/Display-> Show pitch grid" to display the grid. The grid can be programmed in "Settings->Pitch grid". You may there select among different preset modes, or you may activate your own intervals, or choose to read the frequencies or pitches from a text file.  The last option works well with microtonal stuff and scals which don't repeat on the octave (multiply file frequencies) - See Settings: Pitch Grid.

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.

For each additional voice, each frequency in the specified frequency grid will be multiplied by the "spread of voices" factor. The spread factor is progressively increased for each additional voice. If the spread factor has a minus flag (for example, -1.00125), the extra grids will alternate from those that contain frequencies above the original grid and those containing frequencies below the original grid. Even numbers of voices will have more additional grids above the original, while odd numbers of voices will have an equal number of additional grids above and below the original grid. The maximum number of additional voices is fifteen. The second control function behaves as a multiplying factor (0 to 1) for the spread factor value (INACTIVE). The third control function controls the tendency of each pixel to move to the specified grid. At the highest value every pixel will move to the exact grid frequency, while a lower values, the pixels will move toward but not exactly to the grid frequency. The third control function interacts with the probability function in that at higher probability values, a corresponding percentage of pixels will move towards the grid frequency at the value specified by the third control function.

Setting additional voices within the critical band of a pitch (in theory) will create chorus-like and beating effects, while setting the voice spread function to higher values will create transpositions of the original frequency grid.

The third control function is useful for establishing a smooth transition between the spectrum of the original sound and the spectrum of the spectrum of the frequency grid. For example, try manipulating white noise as a way to see how the move tendency function operates.

The frequency grid function has also been slightly modified so that the function does not compute values larger than the Nyquist frequency, thereby preventing any visual "foldover" in the "display grid" option with low fundamental frequencies and also reducing the amount of excess data. The increase in the maximum number of grid frequencies should in almost all cases allow the grid to cover the spectrum up to the nyquist frequency.


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.


Many of the options here have been also described in their proper context under Edit and Transforms above. So, this is more as a reference.


Here you can select  any of the eight types of window function to use both in analysis and resynthesis:
Hanning, Hamming, Bartlett, Kaiser, Rectangular, Gauss, Blackmann and Welch.
It is recommended to use the the same type of window for resynthesis which had been used for analysis.


This dialog has a double purpose: To set the audio playback engine and FFT analysis parameters. The name of the system-installed Sound playback engine (sndplay, cmixplay, sfplay, or whatsoever) can now be entered in its text-field.
The FFT size toggles let you select the FFT size only for the first run. Later it cannot be altered, unless restarting the program. The window size can be either selected from preset values, or entered exactly in the text field, both in terms of lowest detectable frequency or pitch. If you enter an integer value, eg. 440 the program will interpret it as window size and try to find the closest suitable window size. If you enter a floating point value, eg. 440.0, the program will understand it as frequency in cps and take care to adjust the window size so this frequency would be detected. If you enter a symbolic value, such as A3, G#2 or Bb1, the program will look for a matching window size to accomodate this pitch.


Time stretch factor can be either fixed (typed into text field) or time-varying in itself (managed by control function 1).


Most of the functionallity of this dialog box has been covered in appropriate "Edit" and "Transform" topics. This is the brief summary:

As of version 0.28 a keyboard shortcut has been implemented for switching among the active control functions and edit areas, without having to open the dialog and click the "radio buttons". It uses Function keys and works like this:

Activate: F-key:
Control Funtion 1 F1
Control Funtion 2 F2
Control Funtion 3 F3
Edit Area 1 F4
Edit Area 2 F5
Edit Area 3 F6
Make all edit areas inactive Escape-key <Esc>

Pitch grid

This is probably the most sophisticated part of Ceres3's functionallity, it has been developed to the extent of becoming also musically attractive. Pitch grids can now be generated from Preset scales, User defined intervals and File imported frequencies, by checking the respective toggles in the uppermost part of the big dialog box..
The grid frequencies can also be written as pitches, where eg. C# and Db work as each others enharmonic substitutions. As such they can be both typed in the dialog as starting pitches or throughout the file..

The program currently supports around fifty different preset grid-scales or modes. All presetes are tuned to the equal temperamen.

Preset grids

Traditional modes: which are diatonic transpositions of traditional seven-tone western scale. These transpositions can be entered into th respective text field in numbers (starting degree), as well as actual names of the scales: major, minor, and old church modes (ionian, dorian, phrygian, lydian, mixolydian, aeolian, locrian - never mind the synonimes - the program will recognize them).

Example: If we select "Traditional Modes", type C4 in the upper text field and minor in the second we shall get a C-natural-minor scale starting on the middle C.

Harmonic minor can also be used in its root position and its transpositions.
Heptatonic Altered: It is an asymetrical scale with four lower notes as in Second mode of limited transposition and the three upper notes from First mode of limited. transposition. It has been systematically used in Jazz improvisations by Charlie Parker. It is also curious about this scale, that when started on its second degree - it (enharmonically) gives the ascending melodic minor.

Pentatonic traditional scale: is an equally tempered sibling of the old scale which is being used in folkloric music of many european and asian countries. It can be started on any degree, by typing in the appropriate number into the corresponding text field.

Modes of limited transposition:
These modern scales with high degree of internal symetry have been discovered, theoretically described and systematically used in compositional practice by the french composer Olivier Messiaen. They give a very distinct impression of tonal ambiguity without really being bi-tonal. Any of the modes can be selected through its option-menu, the degree on which the scale starts can be typed into the same text field as for other scales.

(Olivier Messiaen's modes of limited transposition First through Seventh , each starting on C4 as root degree in the same order that they can be selected in Ceres3)

    Harmonic series:

This option works with five different types of harmonic series built on the starting frequency (pitch).
These series are: all, even, odd, prime and non-prime and be selested in the corresponding option-menu.

    User set intervals:

Twelve toggle-buttons define which intervals shall be set to the starting pitch (1 = root; m2 = minor second; M2 = major second etc) Example:  C4 in the text-field and all twelve buttons checked will give the chromatic scale starting on middle C.

    File frequencies:

This option can be attractive if you infer microtonal structures, or other out-of-time structures which don't repeat on the octave. Option has to be made active by ckecking the "File" button at top of the dialog box. The program will let you select the file upon closing the dialog-box by pushing OK. File format is quite straightforward:


or in terms of pitch values




Multiply file frequencies:
Check the button to make it active. Then open its option menu to select the interval on which the file frequencies repeat (tritone, octave, twelfth, double octave).


Discussion & Feedback Topics

There are a few questions I would like to share and discuss, as I don't have a definite answers which would satisfy me:

If you have any feedback, please send  e-mail to me

History and Credits

Why Ceres?

These are Dr. Oyvind Hammer's words:

"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!"

Ceres2 Credits:

"Special thanks to Oyvind Hammer for the source code for the original version of Ceres and the educational and inspirational value it provided and continues to offer. In this modified version I have tried to preserve the layout and method of operation of the original version of Ceres as much as possible.

Thanks to all those involved at the Columbia University Computer Music Center for helping a programming neophyte. Thanks to R. Luke Dubois, Paul Feuer, Brad Garton, Fernando Gomez-Evelson and Doug Geers for major help and suggestions in my hacking endeavors, without whom these modifications would not exist."

July 1997 Johnathan F. Lee

Why Ceres3?

September 2002 Stanko Juzbasic

top of document