MODIFICATIONS IN CERES2:




1. COMMAND LINE FFT SETTINGS:

All FFT settings available on command line in this order: FFT size,
Window Size, Window overlap (fraction of window size (1/X), Display
width. For example, typing "ceres2 4096 4096 8 1600" will load ceres2
with an FFT size of 4096 samples, a window size of 4096 samples, a
window overlap of 512 samples, and a display width of 1600 (presumably
related to pixels).

Available settings:     FFT size: 512, 1024, 2048, 4096, 8192
			Window size: 512, 1024, 2048, 4096, 8192, 16384
			Window overlap: 2, 4, 8, 16, 32 (1/X the window
			size) Display width: Maximum of 1600 (in ceres,
			set to 800)


BUGS: Any setting over 1600 for the display width destroys Ceres2's
ability to redraw the display.


2. MENU OPTION FFT SETTINGS (CURRENTLY INACTIVE):

All FFT settings are also accessible via a menu after Ceres2 has been
loaded, but any changes in the loaded settings WILL NOT resize the
display frame. This can cause problems if the user wants to change the
FFT size or the display width to a value larger than the loaded
values.

Until this issue is resolved, it is best to reload the program with new
parameters at the command line instead of using the menu options. In
other words, DO NOT USE THE MENU FFT SETTINGS UNTIL FURTHER NOTICE.


BUGS: Inability to redraw display frame because of display
initialization at start of program. If there is too large a discrepancy
between the FFT and window size, the display will not work at all. If
the display does redraw, most of the time the results are inaccurate.



3. CONTROL FUNCTIONS (FILE MENU, DISPLAY SETTINGS DIALOG BOX):

There is now a total of three control functions, whose effect is
dependent on the transformation being used. The color of each control
function is dependent on the display color settings. Selecting "Show
all control functions" displays all three functions simultaneously, and
the user can choose which function to edit. Deleting a node now
automatically causes the next node to the left to be selected. Although
each control function has a different starting position for display
purposes, they all operate on the same display range; i.e., the highest
value is at the top of the frequency display (22050 Hz) while the
lowest value is at the bottom.

There is now a load and save option for control function data so that
the user can preserve control function settings. These options are
located under the FILE menu. The data is stored as settings relative to
the display width at the time of storage NOT as settings relative to
time. If the user loads a control function data file with a display
width different than the one saved, then the settings will be cut off
at the end, NOT scaled to fit the new display width. If the user wants
to scale the data so that setting changes occur at specific times
instead of relative to the soundfile duration, the data file can be
altered directly and scaled so that the control functions operate
exactly at certain times. Keep in mind that all numbers MUST BE INTEGER
VALUES. 

	Grey colors:    1=red, 2=green, 3=blue 
	Hot colors:     1=darkblue, 2=blue, 3=lightblue 
	Cold colors:    1=red, 2=orange, 3=yellow

Maximum number of nodes: 101 (including the left and right end nodes)

Scaling method: stored_data_file_value/display_width+50=
		value_in_seconds/soundfile_duration

	stored_value=(value_in_seconds*display_width+50)/duration
		OR
	value_in_seconds=(duration*stored_value)/display_width+50


BUGS: none



4. SELECTION AREAS (FILE MENU, DISPLAY SETTINGS DIALOG BOX):

Area selection boxes, created by using the right mouse button (with
"Show paint" toggled off), now have a load and save option for location
data so that the user can preserve box settings for three areas. It is
also useful for selecting large areas of a soundfile that go past the
screen display (such as when the display width is set past around 1000
or when the FFT size is 2048 or above). Data files can be altered
directly as with control function data. The scaling operations for time
are the same as with the control functions. Keep in mind that all
numbers MUST BE INTEGER VALUES.

The data is stored as two sets of coordinates for a square. The first
pair are for the x and y value of the first selected corner, and the
second pair are for the x and y value of the second selected corner.
The pairs themselves are interchangeable. For instance, the pairs
(50,2068),(1650,20) would select an area that from the lowest left-hand
corner to the upper right-hand corner, given that the FFT size is 4096
and the display width is 1600. 

Scaling method FOR FREQUENCY: frequency/(sampling_rate/2)=
		stored_data_file_value/((FFT_size/2)+20)

	stored_value=(frequency*((FFT_size/2)+20))/(sampling_rate/2)
		OR
	frequency=stored_value*(sampling_rate/2)/((FFT_size/2)+20)


BUGS: none



5. TIME-FREQUENCY DISPLAY GRID (DISPLAY DIALOG BOX, SETTINGS MENU):

Selecting "Show display grid" creates a grid that marks off the seconds
and frequencies with lines extending to the top of the display.


BUGS: none



6. USER-SPECIFIABLE PAINT SIZE (DISPLAY DIALOG BOX, SETTINGS MENU):

The user can now specify the pixel size for the paint function, thereby
allowing large-scale and detailed soundfile alterations. The user must
choose "Keep" or "Remove" for each paint size, and then has to refresh
the screen by choosing "Restart" before choosing a new paint size.


BUGS: Paint pixel size is related to the number of horizontal analysis
frames and the display width. This seems to sometimes give either
larger or smaller amounts of alterations if the soundfile is short (to
the point where the pixels are differentiated on the screen; about less
than 3 seconds) or long (to the point where the pixels are mashed
together; about more than 30 seconds). Try experimenting with the pixel
size until "Keep" or "Remove" affects the desired area.



7. PRESET PITCH GRID MODIFICATIONS AND USER SPECIFIABLE STARTING
FREQUENCY (GRID SCALE DIALOG BOX, SETTINGS MENU):

The user can now specify the starting frequency for any of the preset
pitch grids. A harmonic series preset grid has been added, as well as
grids with frequencies on every even or odd numbered harmonic in
addition to the fundamental. A whole-tone preset grid has been added.
The user can also now load a frequencies score file from any directory
with any name. The presets based on scales have been altered to match
equal temperment ratios instead of ratios based on just intonation
(this includes the chromatic scale as well). (Time-varying pitch grids
from a specified score file in development.)

Frequency files no longer have to list an ordered set of frequencies
for the pitch grid function to work properly.


BUGS: Need to implement time-varying pitch grids option.



8. MULTIPLE MIRROR CONTROL FUNCTIONS (TRANSFORM MENU):

The mirror function now has three 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, and the third
mirror inverts the result of the the second mirror (which itself is an
inversion of the first mirror). This allows the user to preserve
sequential inversion operations for use among soundfiles.


BUGS: none



9. SPECTRUM SHIFT CONTROL FUNCTION CHANGE (TRANSFORM MENU):

The control function is now interactive with the shift value and acts
as a multiplier (0 to 1) for the shift value. For example, a control
function value located at the top of the display will shift that area
to the frequency specified in "shift value," while a control function
value located at the middle of the display will shift that area to 50%
of the frequency specified in shift value.


BUGS: none



10. PITCH SHIFT CONTROL FUNCTION CHANGE (TRANSFORM MENU):

The control function is now interactive with the transposition factor
and acts as a multiplier (0 to 1) for the transposition factor,
behaving similarly to the spectrum shift control function.


BUGS: none



11. NULL PHASE CONTROL FUNCTION AND MULTIPLIER (TRANSFORM MENU):

I actually kind of liked the null phase effect, so I decided to add
some controls. It behaves by multiplying the number of a phase vocoder
channel (multiplied by a factor specified in the dialog box) by the bin
frequency for the frequency of each "frequency pixel" (I hope this
description is correct). The control function now behaves as a scaling
function for the multiplier (0 to multiplier value).

The controls for this transform can have somewhat unpredictable
results.  The FFT setting also has an extreme effect on the result of
the transformation. The higher the FFT size, the slower the rate of
soundfile "mashing" (if the multiplier value is set to 1). At higher
multiplier values (for example, above 2), the "stuttering" rate
increases while the rhythmic "clicking" becomes less pronounced. The
control function has a profound effect on the transform, with
increasingly slower "mashing rates" from 1 to 0, and increasing
transposition effects at values higher than 1. Experimentation is
required.


BUGS: The redraw function gives an inaccurate representation of the
resulting soundfile after the transform has been completed. As to bugs
in the actual function itself, I have no idea. Efforts towards an
effective probability function have not been successful.



12. ADDITIONAL FREQUENCY GRID CONTROLS (TRANSFORM MENU):

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.


BUGS: If "load pitch grid frequencies file" is selected, the file
selection dialog box will return after the frequency grid
transformation is processed (this appears to have no affect on the
soundfile transformation). Variable voice spread function (Control
function 2) still in development.



13. NEW DEFAULT SETTINGS:

FFT settings:   FFT size = 4096
		Window size = 4096 
		Window overlap = 512 samples 
		Display width = 1600

Resynthesis setting:    Additive synthesis (for pitch modifications)
			(overlap-add resynthesis recommended for time
			scale modifications)

Display settings:       Hot colors

Pitch grid scale:       Load pitch grid frequencies file



14. VARIOUS COSMETIC CHANGES AND INCREASE IN MAXIMUM SIZES OF SPECIFIED
FUNCTIONS:

maximum number of paint: 10000 maximum number of specified grid
frequencies: 500 maximum number of grid frequencies (including
		frequencies of additional voices): 8000



15. MISC. THINGS (prior to work on Ceres2):

- stereo files are read only from the left channel

- display does not scroll automatically when using the control function
	or when drawing rectangles






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

