
|
In the fall of 1997 I finished a working version of my revision of Oyvind Hammer's sound processing program Ceres (available at www.notam.uio.no), called Ceres2. The latest version, ported to Linux by Dave Phillips, is available from his great web page. Here's a link to Dave Phillips' site..The latest version of Ceres2 features a control function over the frequency domain (a vertical control function designed for the pitch-gridding function). There is also some other little tweaks as well (such as identifying the soundfile path in the title bar). Oyvind Hammer has updated his version of Ceres with different functions, and now it works with stereo files! If anyone wants to help merge our two versions together, please contact me. So what is Ceres2? It a signal-processing program working with an FFT of a soundfile. This version differs from Oyvind Hammer's in that it contains enhancements in the interface and in the control over certain functions, particularly in doing pitch gridding. The goal in mind in this version was to provide composers with more subtle controls over how the soundfile is processed for a desired musical result. But how does one use it? The user inputs a soundfile for analysis, after which a sonogram appears. The sound is now represented as a huge number of frequency and amplitude points over time, which can then be manipulated in various ways for musical and non-musical applications. The graphical nature of the program helps ease the navigation through the data, and reflects changes in the data as the analysis is manipuated. Various regions can be altered with varying parameters over time (depending on the particular function), and the results can be synthesized into a new soundfile Back to top |
|
| 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. Back to top |
| 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. Back to top |
| 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 Back to top |
| 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 Back to top |
| 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 Back to top |
| 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. Back to top |
| 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. Back to top |
| 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 Back to top |
| 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 Back to top |
| 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 Back to top |
| 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. Back to top |
| 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. Back to top |
| 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 Back to top |
|
| 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 Back to top |
|
| 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 Back to top |
|
| 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 Back to top |
|