In the first part of this short series, in last month's SOS, I looked at a number of programs that create sound directly on the desktop without requiring any additional hardware. This month, I'll finish off by examining several systems that combine sound-design software with hardware that accelerates the sound-creation process. These are Symbolic Sound's Kyma System; Native Instruments' Generator; and the MARS workstation from IRIS, which will appear later this year. I'll also take a close look at the software synthesis program Csound and some of the developments that are under way to make this powerful application friendlier and faster. Of the four programs, Csound and Kyma are available for the Mac as well as the PC, while MARS and Generator are for PC use only.
No matter how fast and powerful our desktop computers become, there will always be a strong case for using dedicated sound hardware. Not only will musicians continue to have an insatiable appetite for power ("My mate can do 100 voices of FM on his box and I'm topped out at 75!"), but the non-musical demands for CPU cycles will continue to increase as well. By combining the signal processing chips found in most synths with a highly flexible, graphic front-end, some developers have taken a hybrid approach to desktop synthesis, combining the best of both worlds. The following two systems make use of additional PC hardware to help generate the sounds you design (a third, the as-yet-unreleased MARS System, is covered in the 'MARS Exploration' box elsewhere in this article). Of special note in this category is the Kyma System from Symbolic Sound. Though there have been other attempts to create systems of this type, mostly relegated to research labs at major academic institutions, none have managed to endure for as long as Kyma, nor develop into such powerful, all-encompassing systems.
The Kyma System from Symbolic Sound Corporation is a synthesis workstation that combines user-friendly, graphic sound design software with a black box called the Capybara. Inside the Capybara are from two to eight Motorola 56002 DSP cards running at 66MHz, which provide the horsepower needed to synthesize the sounds you design. Like the sound design programs covered in the first part of this article, Kyma provides an extensive set of sound generating and processing modules that are linked together on-screen, but your designs are then turned into audio in real-time by the Capybara. What sets Kyma so far apart from any other system is the amazing number of options that exist for controlling sound. Any type of data, whether MIDI, real-time analogue input, scripts, or even ASCII characters extracted from a text file on your drive, can become control information for Kyma's sounds. Kyma also includes basic modules for virtually every type of synthesis and signal processing you can imagine. These modules, which Kyma calls Sounds, appear in the Prototype strip along the top of the main screen and are organised by categories (see Figure 1). You'll find many of the tools needed to create analogue sounds (as well as dozens of excellent examples that come with the system), plus a huge variety of options for other types of sound synthesis and manipulation. Every Sound in the Prototype strip is ready to play -- ie. it contains appropriate values for the various parameters it requires. When you want to change some aspect of the prototype sound, you open a sound editor window and drag a copy of the module into it. Though you can think of these prototypes as presets in your synth, the ability to alter every aspect of their structure, and chain numerous modules together, goes well beyond the basic concept of a synth preset.
Among the other categories you'll find in the Prototype strip are familiar synthesis tools such as oscillators, filters, delays, reverbs, and pitch-shifters. There are functions for playing sounds off your hard drive, sampling into the included sample memory on each installed DSP card (minimally 3Mb, and expandable to 12Mb per card), and playing multiple soundfiles from disk, each with independent processing. Other modules can be used for granular synthesis, spectral morphing and waveshaping. But it's the wide range of control options that's most impressive. For example, you can use a MIDI controller to alter the pitch of a soundfile as it plays back off your drive, or use an envelope to speed up and slow down the playback rate automatically. Even more unusual is the ability to attach a microphone to Kyma's analogue input, and have the pitch or amplitude of your voice change the file's playback speed in real-time, so that as you sing louder or higher, the file speeds up or slows down! This trick is accomplished by using a pitch or amplitude tracker to detect fluctuations in your voice, then having that data modulate the playback rate of the soundfile player module.
A more conventional work session might go as follows: drag an oscillator from the Prototype strip into a new sound edit window and double-click on its icon to bring up a view of the parameters that make up the sound (Figure 2). There are fields for controlling the sound's frequency, duration, wavetable, and envelope, and you can also convert the oscillator into an FM carrier by simply clicking on the Frequency tab under Modulation source. A setting to control the oscillator's response to pitch bend is also adjustable from this window.
To vary the sound of this oscillator, other sounds can be used to control its editable parameters. For example, dragging another oscillator into the frequency field gives you an LFO with dozens of waveshapes to choose from, while assigning a MIDI controller to the envelope field allows you to vary that parameter as the sound plays.
Things get really interesting when you connect the oscillator to other modules to make a complex sound. For example, you can take the output of the oscillator and connect it to the input of a granulator whose frequency and duration parameters are under the control of your own, custom-built envelopes. Then you could send that sound to a resonator whose frequency is controlled by incoming MIDI note events, and whose decay time is a function of yet another LFO with its own custom shape. Finally, the sound may be routed to a delay line and then to a panner, whose position may be modulated by the same controller data used in the original oscillator. This entire example takes only a few minutes to create, and uses just a small amount of the system's available resources. It's also worth remembering that the size of the file representing the design of any sound, no matter how complex, is trivial when compared to the actual audio the design produces. As result, you can store hundreds of designs in your library.
Kyma has always had interesting spectral processing, but the most recent version (4.5) easily offers the most advanced real-time capabilities around for manipulating spectral data. The morphing modules, for example, let you analyse the spectrum of a time-varying sound, and apply that spectrum to another signal in real time. You can use the included examples to automate the morphing of two sounds, or design a sound that responds to a slider you move on screen, or to MIDI control data from a file on disk. A graphical spectral editor allows you to view and hear each individual partial of a sound (analysis of up to 512 partials per sound is possible, with around 300-400 total sine wave oscillators available for resynthesis), and you can turn partials on and off as easily as solo'ing tracks in your sequencer (see Figure 3, on page 102). Quite a fun tool!
The Kyma System has been around for a number of years and continues to develop with each new software revision. This is one system that you'll just have to see (and hear!) to believe.
One of the newest systems to appear on the PC is the Generator from German company Native Instruments. Generator is a sound design system that combines a single-slot ISA card with a modular software interface. Unlike the MARS and Kyma systems, which use their hardware to accelerate the computation of sound, Generator relies completely on the host CPU, so a fast processor is a necessity. The included hardware minimises the latency time between control events, such as MIDI Note On/Off messages that are sent from external sources, and the audio output. The card also functions as a D/A converter, providing two-channels of high-quality analogue output at variable sampling rates. The system comes with dozens of modules that are used to build sounds, plus numerous complete examples that are ready to play.
Generator has a very intuitive interface that allows you to design sounds quickly and easily. All its basic modules can be accessed by clicking in the work area with the right mouse button (see Figure 4 on page 106). Here you'll find a pull-down menu containing the different categories of modules the system provides. These include 'elementary modules' such as oscillators, filters, envelopes, and various effects, plus functions to control audio routings, MIDI mappings and more. Select any module from the list and it appears on the workspace, where it can be connected to any other appropriate element. You can then play your design immediately, though you may have to adjust the output sample rate if the sound is very complex, or if you are requesting a large number of voices.
Generator calls its basic designs Structures, and any structure, no matter how complex, can be stored as a so-called Macro and re-used in another structure. Like the individual modules in a structure, the macro is represented as a single icon, which makes moving or manipulating very complex designs a breeze. Every structure has an associated Panel window, which is a single screen full of faders that represent all the adjustable parameters in the entire design (Figure 5). As you move the faders, changes take effect immediately, and you can capture the panel's current settings at any point in a 'snapshot' file, and recall the snapshots at any time.
Generator also provides multitimbral capabilities, by allowing you to create so-called Ensembles that contain numerous independent synthesis structures. Each structure can have its own MIDI channel and keyboard zone, and you can also specify the voice allocation for any sound in your ensemble.
By coupling a soundcard that offers extremely fast response time with a CPU-based, sophisticated sound design engine, Native Instruments has accomplished quite a feat; Generator is an exciting product that should continue to grow with the ever-increasing CPU power of the future.
When Max Matthews developed the first programming language for sound in the 1950s (see last month's SOS), he probably didn't imagine that what he created would survive and grow for dozens of years to come. Csound, written by Barry Vercoe at the MIT Media Lab, is a direct descendant of Matthews' Music N programs, and is easily the most powerful and widely used sound-synthesis language around. There's an extensive community of Csound users all over the world, and numerous utilities have been written to make working with the language easier and more intuitive. There are also some important hardware developments that will have a big impact on harnessing Csound's power. These are covered elsewhere in this article (see the 'Faster Csound' and 'Csound Support' boxes), but first, here's an overview of this public domain software.
Csound retains much of the structure of the original Music N programs: there are dozens of modules available that can be 'wired' together (all in software, of course!) to create an unlimited number of sound combinations. Csound calls these modules unit generators, and understanding them is the key to getting the sounds that you want. Many of these unit generators, such as the reverbs, filters and delays, are familiar to anyone who has ever edited a patch on their synthesizer. A number of the others, though, are far more esoteric and require a good knowledge of sound design to use effectively.
To give you an idea of how Csound works, take a look at the basic example below. This is an actual file that Csound will use to create a sine wave with a frequency of 440Hz. It's a very dull sound, but a good starting example.
a1 oscil 5000, 440, 1
This is part of the information Csound uses to create a soundfile on your hard drive. In Csound terms, these lines represent one 'Instrument' in an 'Orchestra' file, and the only thing missing is a score for this instrument to play. Notice that there are three lines at the top of this example starting with 'sr=44100'. This command sets the sample rate for the soundfile. On the second line, 'kr' represents the 'control rate', which is a secondary rate used for elements of the design that don't need to be updated with the accuracy of the oscillator itself. The third line simply does some division that the program requires to kick things off.
The real fun begins with the second half of the example, where the sound is actually designed. This Csound instrument is labeled 'instr 1' because it is the first (and here, the only) instrument in the Orchestra. The 'a1' on line five is the label or tag that represents the result or output of the process Csound will perform. That process is the 'oscil', which is a function Csound provides for looking repeatedly into a wavetable. When the 'oscil' frequency and amplitude are specified, it will output the values it finds in the table. You can then take that output and use it however you want; you can listen to it, by telling the program to write a soundfile with that data in it, as in this example, or the output could be used to control some other oscillator, which would be the software equivalent of an LFO.
The amplitude in the above example appears to the right of the word 'oscil' and is set at 5000. This is an arbitrary number used to scale the values in this wavetable, since internally, they're normalised from -1 to 1. That range of numbers wouldn't be strong enough to produce any sound (keep in mind that this whole process is generating samples, which are the changing amplitude values of the sound being designed). The frequency is given as 440, calculated in cycles per second, which will produce the note A. The final value on line five, the number 1, is a reference to the wavetable the oscil should use, which must be built or generated before you can hear anything. That's done with a line in the score.
One of the most important functions of a Csound score is to build the various wavetables instruments will read from. Csound provides numerous wave-generating (or GEN) functions specifically for this task. You can build absolutely any abitrary waveform using these functions and for our sine wave, GEN function 10 will do nicely. Like all the functions in Csound, GEN 10 requires certain parameters, or 'arguments', to do its work. Specifically, this wavetable generator requires that you specify the strengths of each harmonic partial relative to the fundamental. To generate a sine wave, you would need only a single number, 1, because a sine wave has only one partial. The exact syntax needed to build a sine wavetable is shown below:
f1 0 8192 10 1
Notice the numbers 10 and 1 at the end of this line. The 10 indicates GEN 10, and the 1 specifies a single partial -- so the result is a sine wave. The 'f1' at the beginning identifies this line as f (for 'function') table 1, which refers back to the number '1' used at the end of the oscil; the '0' indicates that this table needs to be built right at the beginning of the sound, ie. '0' delay; and '8192' refers to the number of values or 'points' we want in the table. This number must always be a power of two.
Next, a line is needed to indicate when the sine wave should start playing and for how long. The convention here is to start the line with the instrument number, 'i1', give the start time in beats (defaulting to quarter = 60), and specify the duration, also in beats. A 5-second sound would look like this:
i1 0 5 e
The 'e' on the second line is to tell Csound that the score has (e)nded. After both orchestra and score are completed and saved in separate text files, Csound needs to be run and given the name of the files it should use to create the final sound, as well as the name you want this resulting soundfile to have. When Csound has finished compiling the sound, you'll find a brand new WAV or AIFF file on your PC or Mac ready to play (Csound versions are also available for SGI, NeXt, Atari, and other computers).
Because Csound doesn't operate in real time, you can build sounds of any complexity -- for example, a waveform with a few hundred partials, or an instrument with a thousand sine waves (additive synthesis lovers, you're home!). And don't forget the filters, delays, reverbs, and envelopes you can add to your sounds; the list is huge, and growing daily as new unit generators are added to the language. You might not want to write your next symphony using Csound (though many excellent works for solo tape or tape plus instruments have been created with it), but there are other reasons to get involved with the language. For example, I've had great luck creating samples in Csound that I can then transfer to my Kurzweil K2000 and control over MIDI. If the samples are small, I simply save them to a floppy disk and load them right into the K2000, or if they are larger, I transfer them from my computer using MIDI Sample Dump or SMDI. You could also sample directly into your sampler, which works especially well if you have digital I/O on both ends. And since the samples are 16-bit, the sound quality is excellent.
I've also used Csound's audio processing features to manipulate samples and recordings that have come from other sources. Csound allows you to load in a pre-existing soundfile from your hard drive, and perform endless types of processing on it. Not only can you use simple options like LFOs and reverbs, but there are far fancier functions such as mapping the spectrum of one file onto another (a technique known as 'cross-synthesis' or 'convolution'), or using a file's amplitude envelope to control the frequency of another file. You could write another part of this series to cover this side of the program alone, but take a look at the utilities listed in the 'Csound Support' box elsewhere in this article -- all of these are intended to make Csound more friendly and intuitive. A book is also due shortly from Csound expert Dr. Richard Boulanger, of the Berklee College of Music in Boston, entitled Making Music with Csound, which is worth looking out for.
The Musical Audio Research Station (MARS) from the Italian Bontempi-Farfisa Research Institute Group (IRIS) is a hardware/software combo that has extensive real-time sound design capabilities. Although it is still at the early beta-testing stage (and currently lacks any English documentation!), I have spent several months with the system, and have been impressed with the direction it's taking.
MARS consists of an internal sound generation board that contains the system's proprietary DSP hardware, plus a configurable external audio unit that provides up to eight analogue ins and outs, and eight AES-EBU digital I/O connections. The unit also has ports for MIDI, volume controls and a headphone jack. Each board can be expanded with up to 64Mb of sample RAM, and you can build a system with up to eight separate sound boards, for a total of 64 discrete audio channels.
The MARS hardware is controlled by graphic software called the Audio Resource Editing System (ARES) that runs under Windows 3.X or Windows 95. There's also an integrated WaveTable Manager utility that is used to transfer wavefiles between the sample RAM and your hard drive, and a catalogue browser that stores the various sound resources that are associated with a project. Like the Kyma system, software upgrades and patches can be downloaded from the company's web site.
ARES's basic design layer is called an algorithm, which represents a combination of signal processing functions that are 'patched' together by the user (see screen below). There are nearly 200 individual modules that can be used to design algorithms, including numerous oscillators, filters, pitch and amplitude transformers, and modulators. You'll also find traditional effects, such as reverb and chorus, plus very convincing operators for creating physical models. Other functions are also available to assist in the design process, like an oscilloscope that can 'tap' into your design and display the signal at any point, and a graphic MIDI keyboard for sending Note On and other messages directly to your sound.
Once you've designed an algorithm, you next work with a Tone, which assigns various performance parameters to the algorithm. Parameters can be static (which means they will have a set value); or dynamic (they can be altered in real time via a MIDI controller), and you can build multiple tones with different settings for any algorithm. Next comes the Orchestra, where you define all audio routings for the system, and set up multitimbral MIDI environments, which the system calls Tonemaps. A Tonemap links Program Changes to Tones, and routes the tones to specific MIDI channels.
Overall, the system's architecture is very intuitive, and no more complex than that of an average professional synth or sampler. Even without documentation, I found it easy to design a sound containing several dynamic parameters, which I could then control from a sequencer running on the same computer. Another appealing aspect of working with MARS is that while you're editing, everything is updated in real time. If you're designing an FM sound, for example, you can draw the envelope that controls the carrier's frequency directly on the screen, and hear any changes you make to its shape instantly. Or you can add effects and filters to a sound by dragging them into the signal design, and the system will immediately update your sound. Numerous short-cut keys, plus access to all the program's basic functions via tool bar buttons, also make sound designing an easy and intuitive task.
The MARS System, complete with documentation and extensive tutorials, should be shipping by the time you read this. It won't come cheap, though -- basic systems with professional-quality audio will start at approximately $5000 US.
It's one thing to read about a new sound technology, but sometimes it can be even more interesting to hear stories about how people are really using it. Here are a couple of real-life applications of the Kyma System. For more stories like these, visit Symbolic Sound's website (http://www.symbolicsound.com).
SUMMONING SPIRITS FOR SMIRNOFF
Pete Johnston, resident audio alchemist for London's Tape Gallery, turns men into women, women into cats, and Londoners into New Yorkers using Kyma's 'sound-sculpting' facilities -- by breaking sounds up into hundreds of constituent sine waves, and then resculpting them in various ways, while still retaining some of the complexity and liveliness of the original recordings. The resculpting, which is done in real time, can be anything from a spectral morphing of one sound object into another, to modifying the apparent size of an object, or even making it sound more stressed or aggressive.
Tape Gallery's radio spot for Smirnoff vodka evokes startling mental images of people morphing into animals or changing gender in mid-sentence as a bartender walks by with a transformative bottle of Smirnoff on his tray. You can hear this 90-second bit of audio theatre at their web site (http://www.tape-gallery.co.uk) via streaming audio.
RESISTANCE IS FUTILE
If you saw Star Trek: First Contact then you'll have heard the work of Hollywood sound designer Francois Blaignan, who used Kyma to process the voice of the Borg (heard most prominently during the opening and recurring dream sequences, and in the obligatory sci-fi alien threat, "Lower your shields and surrender your ship... Resistance is futile"). Francois has now started his own company, Sound Rules, which specialises in cross-synthesis (the application of characteristics of one sound onto another). For example, to create the sound of a sleeping statue on a recent Muppets Dr. Seuss TV show, Francois used Kyma's RE (Resonator-Exciter) modules to impose the formants of a man snoring onto a sample of a rock slide; the result sounds like snoring rocks (hear it at http://www.symboliCsound.com/demo-crosssynth.html).
Csound has been enhanced numerous times throughout its life, but one of the biggest changes is taking place as you read this. Barry Vercoe, the program's creator, has written a new version of the software that can produce sound in real time using new hardware from Analogue Devices Inc. (ADI). ADI's Sharc DSP chip is a very fast, floating-point processor that has been adopted by Generalmusic and Denon Nippon for music products due to appear later this year. Though the chip has not yet found its way onto a 'virtual synthesizer' product, such as those described in this article, that development seems inevitable.
According to Richard Boulanger, Professor of Music Synthesis at the Berklee College of Music in Boston, and a key architect of the new Csound, desktop musicians will be in for a treat as new products that incorporate the Sharc chip and Csound appear. "Back in the old days, we used to wait while our processors crunched Csound code. It could take hours for a sound lasting only a few minutes to compile. With new Pentium chips, those hours have become minutes, but with Csound running on the Sharc, there's no wait at all. As soon as you've finished designing your sound, you hear it played back instantly."
This development will have a major impact on the large and growing community of current Csound users, and should provide an incentive to musicians who have yet to explore Csound's potential. Keep your eye on Csound's web site for further information!
Because Csound has been around for so long, a large number of support programs exist that make score and instrument creation much easier. One program, MIDI2CS by Rudigerr Boerman, for example, takes a standard MIDI file and turns it into a Csound score. That allows you to send MIDI data out to your synth at the same time as an audio version of your music plays back. It's also a convenient way to build Csound scores using a composing environment that you might be more familiar with.
Michael Cogins has developed an entire interface for working with Csound. Using Cogin's program Silence, you create 'libraries' of orchestra files, each of which can contain dozens of individual instruments. You then specify which instruments are to play which scores. Cogins has also made some important physical models compatible with Csound. These models, developed by Perry Cook of Princeton University, accurately reproduce a number of acoustic instruments in software.
Another approach to creating soundfiles comes from Csounder, a program that serves as a graphic front-end to Csound. This program, which is more of a 'launcher' than a design tool, shows you all the available score and orchestra files in your designated directory, and lets you pair one of each for compiling by Csound. In addition to setting the name of the output soundfile you want Csound to create, there are also a number of other helpful utilites included in the program.
If you're interested in algorithmic score generation, where your computer picks the notes based on the selection criteria you specify, you'll find Eduardo Miranda's Chaosynth very useful. This program is currently only available for the SGI, but the score examples available on the web site below work with the PC and Mac versions of Csound, and can be edited easily. Watch for some exciting PC developments later this summer.
For building Csound instruments, Russell Pinkston's Patchwork is a good choice. Like many of the sound design programs mentioned in the first part of this survey, Patchwork lets you link together icons that represent all the functions Csound provides, then turns them into a complete orchestra file, ready to run with the score of your choice (see screen above). Because this program displays Csound's unit generators graphically, building sounds is very intuitive.
There are thousands of demo Csound files available on the Internet, but one collection bears special mention. The Amsterdam Catalog of Csound Computer Instruments (ACCCI) is the most thorough group of files I've come across. The files are organised by the different synthesis methods Csound provides, which makes them very easy to grasp. Though the actual instrument designs are fairly basic, the volume is so comprehensive that you'll definitely want to check it out. The collection is available at the address below .
And, of course, no survey would be complete without mention of the mother of all Csound sites, maintained by John Fitch at the University of Bath. The first address below takes you directly to the PC version of Csound, where you'll also find numerous related programs. To explore the huge number of utilities that support Csound, plus all the different versions that are available, simply back out one directory at a time. You could also start your explorations at the second address given below, which includes links to Csound sites around the world.
Csound is public domain software, and is available at multiple sites worldwide, including the following ftp site.
A The Kyma System Symbolic Sound Corporation, PO Box 2530, Champaign, IL 61825-2530, USA.
T 001 217 355 6273.
F 001 217 355 6562.
T 0049 30 6914966.
F 0049 30 6914966.
A IRIS, Parco La Selva, 151 I-03018 Paliano (FR), Italy.
T 0039 775 533 441.
F 0039 775 533 343.