advertisement
|
CURRENT NEWSSTAND ISSUERead the full Table of Contents for the issue on sale now! Click here Subscribe for only $1.84 an issue! Please tell us about yourself so we can better serve you. Click here to take our user survey. |
![]() |
Personal Studio Series This special issue is not only a must-read for users of Cubase software, but it also delivers essential information for anyone recording/producing music in a personal-studio. Click for more |
![]() Listen to these latest podcasts and more: |
|
eDeals Newsletter for Discounts on GearGet First Dibs on Hot Gear Discounts, Manufacturer Close-Outs and Job Opportunities when you sign up to receive eDeals E-newsletter, sent twice a month. Check out an issue get advertising info or subscribe |
|
Many desktop musicians are familiar with MIT's sound-programming language, Csound. What they might not know is that it's no longer necessary to type code to work with the software. A number of new helper applications have appeared that provide graphical interfaces for Csound, making the language much easier to work with (see “Csound Comes of Age” in the July 2002 EM). One application, Alexandre Burton and Jean Piché's Cecilia, has been available for Mac and Linux for some time but was only recently ported to Windows by UC Davis faculty member Bill Beck. Like all things Csound, Cecilia is in the public domain and is free of charge.
Cecilia offers access to all of Csound's features but extends the language in unique and exciting ways. It runs “on top” of Csound — you can use Cecilia without any knowledge of what's happening under the hood, though the more you know about Csound and sound synthesis, the more you'll get from the program.
I'll review Cecilia 2.04 running under Windows, but the feature set is nearly identical on the other platforms. First, just a few words of introduction about Csound itself.
FROM C TO SHINING C
Csound is a programming language for generating and processing sound that has its roots at Bell Labs, where, in the late 1950s, many of the most significant developments in computer-generated sound first occurred. Like any programming language, Csound supplies a library of functions with which the user builds the types of sound-generating and -processing algorithms desired. Most functions have one or more parameters that the user must supply, and a complex design (which Csound calls an Instrument) can require dozens of parameters. Though it was originally developed as a non-real-time application, several new versions of Csound allow you to hear your sounds as they compile (see the Csound home page at http://csounds.com for further details).
![]() |
|
|
Cecilia's main job is to help you avoid the extensive typing that is typically required to work with Csound. Using its large and colorful main screen, called the Grapher (see Fig. 1), you enter values for the various parameters of the included Csound Instruments by drawing large sweeping arcs with your mouse or using the various data-input tools Cecilia provides.
Before you start making sound, you'll need to set up various preferences to optimize Cecilia for use on your computer. There are numerous adjustable settings: you designate the version of Csound you want Cecilia to call upon (a real-time version is included), choose folders for the various types of files you'll use and create, and identify external audio and MIDI programs to play those types of data.
Inside Cecilia, you can also tweak all of Csound's own settings; you can, for example, adjust the buffer size for real-time playback, pick the default sampling rate and output file type (WAV, AIFF, or RAW), and choose how much memory to allocate to the program. With just a little effort, you can tweak Cecilia for optimal performance within nearly any computing environment.
JOB ONE
If you're inclined to run through the presets when first checking out a new piece of gear, you can start right in by testing Cecilia's existing Modules to see how they sound. Modules are text files that contain complete Csound Instrument designs along with additional information that determines how the Modules look when first loaded (see the sidebar “Module Building” for more details).
Included with Cecilia for Windows are several dozen Modules that are grouped by category. Among these are spectral effects (equalizers and filters), dynamics processors (distortion and compression/expansion), additive- and granular-synthesis processes, time-based routines (delays and time compression/expansion), and a number of processing functions that defy categorization (including my favorite, Singin-in the-Fog). There are also Modules for performing LPC- and additive-based analysis/resynthesis and several that serve a variety of utility purposes.
To run a Module, load it from the New menu and specify the name of an audio file for processing (if needed), then click on the Play button to hear the sound using the Module's default values. To record the sound, choose Disk as the output before pressing Play and supply a name for the new file that will be created. “Playing” the Modules feels very much like working with a soft synth or sampler, but there is one major difference: you can't change parameter settings while a sound is playing back.
DIGGING IN
When you're ready to dig a bit deeper, maximize the Grapher window, and you'll find a very intuitive and efficient interface. The main area of the screen contains envelopes (or “Graphs,” as they're termed in Cecilia) and sliders that control the various parameters of the Csound Instrument being used by the current Module. Along the left of the window are buttons that you use to switch among the parameters — click the Density button in the StochasticGrains Module shown in Fig. 1, for example, and the envelope for that parameter will be highlighted. Once highlighted, you can edit the envelope by adding or deleting breakpoints or moving existing ones.
The number of breakpoints an envelope can have is unlimited, and you can use both linear and nonlinear curves. Also, when you add a new breakpoint or select an existing one, a small display appears showing you the exact value for that point and its position in time. It's hard to enter specific values — even with the screen zoomed all the way in, the cursor still jumps to nonconsecutive values.
Working with the sliders is a bit easier; clicking on the blank space on either side of a slider increments the value by its smallest amount. You can also change a slider's resolution by editing its Module. Still, it would be useful to have a separate dialog box available in which you could type an exact value for either a slider or an envelope.
Once you've created all the control data for the parameters of a Module, you can change the amount of time over which the sound will evolve by using the Duration slider at the bottom of the screen. That feature, reminiscent of Xenakis's UPIC system and U&I Software's MetaSynth, offers tremendous potential for creating a vast range of sounds from a single Instrument design and cries out for experimentation. You might, for example, create an evolving additive or FM sound, then recompile the sound after having scaled it to 25 times its original length. See the EM Web site for an example of this and other sounds created in Cecilia.
You'll be happiest using a large monitor or high screen resolution, because Cecilia's modular windows — the Grapher in particular — take up a lot of real estate.
ENTER HERE
![]() |
|
|
One of the most extraordinary features of Cecilia is the toolkit it provides for manipulating and generating control data. In the Tools window, you'll find buttons for importing and exporting Grapher data to or from a text file; cutting, copying, or pasting existing data to the Clipboard; resetting the graph to its default value; and scaling existing data (see Fig. 2). You can also copy the envelope of one parameter onto another.
The five buttons found in the center column of the Tools window are perhaps the most useful and interesting, however, as they allow you to generate entirely new data in unique ways. For example, the Sine tool lets you quickly create sine curves to control a parameter, and like the others, it provides precise control over the type of curve that will be generated. You can set the number of control points on the curve (from 2 through 150 in increments of 1), as well as its frequency (0.01 to 20 in increments of 0.1 Hz), amplitude (values are normalized between 0.01 and 1 and are adjustable in increments of 0.01), and phase (0 to 360 in 1-degree increments).
Among the other tools are a pulse- and ramp-waveform generator complete with controls for frequency, amplitude, and pulse width; a noise generator, which offers control over the number of points and the noise's overall amplitude; and a scatter tool that will sprinkle breakpoints all over the screen. The final tool is called Drunk, and the name gives a pretty clear indication of the effect this tool has.
MIGHTY MODULES
| PRODUCT
SUMMARY
Burton and Piché |
|
| FEATURES | 4.5 |
| EASE OF USE | 4.0 |
| QUALITY OF SOUNDS | 5.0 |
| VALUE | 5.0 |
| RATING PRODUCTS FROM 1 TO 5 | |
| PROS: Unique parameter control for sounds. Highly graphical and colorful interface. Outstanding presets. | |
| CONS: Building Modules requires knowledge of Csound. | |
| Manufacturer Burton and Piché Web http://music.ucdavis.edu/re4m/cecilia |
|
As mentioned above, Modules are at the heart of the Cecilia universe. The included Modules cover only a fraction of the vast range of functions Csound provides, so many more Modules are likely to appear at the Cecilia Web site (and, of course, you can create your own!).
I can't cover all of the Modules in detail but will focus on a few of my favorites. For starters, the Brassage Module from the Time category produces striking granulated bursts of sound that build into dense, layered textures. The Module uses Csound's FOF2 opcode and requires an audio file for processing. Parameters include Grain Frequency and Placement, Density, a pointer into the sample file being processed, and Grain Attack and Decay times. The MP3 file
brassagelaugh uses an increasing density coupled with a descending pitch-range curve.
Cuisi-warp mixes four versions of an audio input and gives you independent control over each version's pitch level and sample position. By setting the Index parameter below zero, you can make any of the four audio streams play backwards. The effect using a Gregorian chant sample as input is found in the MP3 file cuisiwarpchant.
The AdditiveSynth Module from the Synthesis category offers exacting control over 16 harmonic partials. As expected, you can specify the fundamental frequency, then design complex, evolving envelopes for each of the partials. You can also draw a waveform for the partials to use (why stick with a sine wave?) — just be sure to uncheck “sinus” at the bottom of the screen. By using the FreqShift slider to move each partial up or down a small amount, you can easily create beating inharmonic sounds.
Also in the Synthesis category is StochasticGrains, a granular “synthesizer” that uses Csound's Foscil opcode to generate an FM sound source. The FM sound is
controlled by a host of parameters, each of which offers varying degrees of randomness.
The Compressor-Expander has a look slightly different from the others — its controls (which include Slew Rate, Compression Ratio, and Gate Threshold, as well as both Input- and Output-Gain Amounts) appear as a bank of sliders. And if you're a big Hendrix fan, try drawing your own nonlinear transfer functions in the Distortion Module and see if you can match The Master's sound.
SEE WHAT YOU CAN C
Cecilia's documentation (HTML format only) is tightly linked with the application and is comprehensive and well organized. You'll also find a number of tutorials online at the Windows Cecilia home page as well as at the sites that support the versions running on other platforms.
Cecilia is a unique and fun program for working with sound. It is well suited to experimentation and is guaranteed to produce results that would be hard or even impossible to get in many of today's software synthesizers and samplers. It could also serve as a great introduction to some esoteric synthesis methods, granular in particular, and if it inspires you to learn more about Csound itself, so much the better. At this price, it's an unbeatable deal.
|
|
|
| MAC: | G3/600 MHz; 64 MB RAM; Mac OS 9 |
| PC: | Pentium II/800 MHz; 64 MB RAM; Windows 98, 2000, ME, XP |
Dennis Miller is an associate editor of EM.
MODULE BUILDING
Building your own modules in Cecilia is fairly trivial, though some experience with Csound is highly recommended. The Module in this example requires Csound version 4.02 or greater, which is included with Cecilia for Windows. For the completed Phaser2 Module, which has a few extra bells and whistles, go to http://music.ucdavis.edu/re4m/cecilia.
This example uses the Csound opcode phaser2, a classic phaser effect with time-varying feedback and separation of the filter bands that produce the characteristic sweeping overtones. The Csound manual shows this phaser2 syntax:
ar phaser2 asig, kfreq, iqual, iord, imode, ksep, kfeedback
Csound k-rate data is represented in Cecilia with graphs, i-rate data with sliders. Looking at phaser2, you can see that it will have three sliders and three graphs.
![]() |
|
|
From Cecilia's File menu, choose New/Module, which brings up Cecilia's Module editor (see Fig. A). The buttons along the top give you access to text-editing windows for the code involved in Module making; the blue boxes along the right are labels for each section. This example is in mono, so you'll need to remove code from the stereo orchestra that appears by default. Click on the Stereo button to reveal the code that begins “stereo template,” then Select All and Cut. Move your cursor to the tk_interface area and add the following, which tells Cecilia to accommodate an input sound file:
cfilein source
Our first graph will be for the “kfreq” variable. Enter the following on the next line in the tk_interface screen:
cgraph freq -label “Phase Freq” -unit cps -min 25
-max 15000 -rel log -func “0 600 .5 3000 1 300”
Note that the arguments all begin with dashes. In order, they set these parameters:
-label “Phase Freq” gives the graph a label; -unit cps labels the units; -min 25 and -max 15000 set the minimum and maximum values (in units of cps); -rel log specifies that the graph value be treated logarithmically rather than linearly; and -func “0 600 .5 3000 1 300” specifies that the initial graph be a function defined by three breakpoints.
Less obvious is that the code “cgraph freq” tells Cecilia to create a global variable “gkfreq” that we will use in instrument 1 to access the graph data. Gkfreq itself will be defined behind the scenes in Cecilia's own instrument.
Next, add graphs for the other two k-rate variables, along with a fourth for adjusting the wet/dry mix. These graphs will initialize with the value specified by “-init”:
cgraph feedback -label “Feedback” -unit x -min -1 -max 1 -rel lin -init .9
cgraph sep -label “Harmonic\nSeparation” -unit x -min .1 -max 9 -init 1 -rel lin
cgraph wet -label “Wet/Dry Mix” -unit x -min 0 -max 1 -init .7 -rel lin
The sliders work in a similar manner. Enter the text below, which will create one slider for each i-rate variable in phaser2:
cslider ord -label “Filter Order” -min 1 -max 200 -res 1 -init 4
cslider qual -label “Quality” -min .01 -max 20 -init .5 -res .25
cslider mode -label “Mode” -min 1 -max 2 -res 1 -init 1
Note that this code uses a “-res” argument instead of “-rel”; “-res” controls the step size of the slider. With sliders, Cecilia will create global i-rate variables. Click on Mono to bring up the mono orchestra code. Add the following code between the “instr 1” and “out ar” lines:
asig soundin “[source]”
aphs phaser2 asig, gkfreq, giqual, giord, gimode, gksep, gkfeedback
amix = asig * (1-gkwet) + aphs* gkwet
ar balance amix, asig
Here, [source] refers to the interface code variable “source” that we created with the Cecilia “cfilein” command. Note that our i and k variables are now global and ready to receive the data from Cecilia's interface instrument.
Finally, click on the Score button to view the Csound score. Replace the default code with the text “#minimum”, and Cecilia will simply call our instrument for a duration equal to the input sound we process. From the File menu, choose “Save Module As” and find your way to Cecilia's Files/Builtin folder. Name your module “Phaser2” or any name without spaces. The module is ready to go!
Acceptable Use Policy blog comments powered by Disqus
Want to use this article? Click here for options!
© 2009 Penton Media, Inc.














