Now that DirectX and VST plug-ins offer so many ways to process digital audio, you might assume that most of the tools you need already exist. But what

Now that DirectX and VST plug-ins offer so many ways to process digital audio, you might assume that most of the tools you need already exist. But what if you want a program that lets you build your own effects using dozens of different processes and functions in any type of configuration? Sounds Logical's WaveWarp is a stand-alone DSP toolkit with exactly that capability.

WaveWarp is an object-oriented audio-processing software environment for Windows. It provides an impressive collection of 250 signal-processing objects called components that connect via virtual patch cords to accomplish signal-processing tasks. Using this toolkit, you can create your own choruses, digital delays, equalizers, filters, flangers, reverbs, noise-reduction units, and more. All of these modules have real-time parameter control, but you won't find any live MIDI input in the software's current version.

You can arrange components in arbitrarily complex networks consisting of parallel, series, feed-forward, and feedback connections. Components execute sample-by-sample in real time, using 32-bit floating-point arithmetic on any Pentium PC equipped with a Windows-compatible sound card. WaveWarp 1.2 has full multichannel capability and supports multiple sound cards. The program can handle 8-, 16-, 20-, 24-, and 32-bit WAV files of any sample rate. It's even smart enough to optimize real-time performance by calibrating to your RAM and CPU configuration.

I tested WaveWarp on a Pentium II/400 MHz computer with 128 MB of RAM, and the program really smoked. To satisfy my curiosity, I also tried it on a 133 MHz machine with 64 MB of RAM (Sounds Logical's recommended minimum is a 166 MHz processor with 64 MB of RAM). Predictably, I got slower results, but they nevertheless fell well within an acceptable range of comfort. I began the review using version 1.1 (which had a number of minor yet bothersome bugs) and then moved on to the current release, version 1.2-a clean and robust piece of software.

REVVING THE ENGINEMany electronic musicians are acquainted with the object-oriented sound-construction environment typical of some software synthesizers and most sound design programs. Like other programs, WaveWarp 1.2 provides a work space (in its case, the Drawing Board) that wires together various components. The Drawing Board, on which I've designed a simple patch, as well as the program's other main work areas are displayed in Fig. 1.

Moving from top to bottom, you see the toolbar, the Component Library with its 250 objects and components grouped under 30 tab-style categories, the Component Library menu list for the selected category (Reverb), and the Drawing Board. Those who learn by hacking and cannibalizing will find that the library of 195 bundled Drawing Board examples is a terrific aid.

The patch in Fig. 1 consists of two sound files, each processed through a ring modulator and reverb, then routed to a stereo digital-to-analog converter for playback. (Ring modulation occurs when the Sine Wave Generator multiplies the sample files, and the reverb is a function of the Moorer comb filter bank.) Building the patch was a snap: I simply selected each component from the appropriate area of the Component Category section and dragged it to the Drawing Board. After connecting the various outputs to the required inputs using WaveWarp's virtual rubber-band patch cords, I had my design.

Double-clicking on a component opens its Properties window, where you'll find sliders, text-entry boxes, and other controls that adjust the component's values. The slider for Reverb time, which you can adjust during playback, appears on the right side of Fig. 1.

THE RIGHT CONNECTIONWaveWarp provides three types of virtual patch cables: thick black for stereo audio signals, thin black for mono audio signals, and thin red for control signals. To access the individual channels in a stereo audio signal, you use the Unzipper component to split the interleaved signal into two mono signals. In the patch shown in Fig. 1, I've "zipped" together the outputs from the two Mono-Output Multipliers before connecting them to the DAC (Audio-Driver) object; a mixer could perform that task as well.

Signal flow has certain restrictions. You can connect mono audio-signal outputs only to mono audio-signal inputs; likewise for stereo audio and control signals. However, various objects-for example, the Audio-to-Control component-can handle conversions. The components themselves are color-coded, and an A (for amplitude) or F (for frequency) marks control-signal components to indicate the expected range of the corresponding control I/O ports. Amplitude control signals typically fall in the numerical range of 0 to 1, and frequency control signals usually fall in the audio range of 50 to 20,000 Hz.

ABOUT THOSE COMPONENTSWaveWarp offers an exhaustive array of signal-processing components, allowing you to build just about any effect imaginable. As previously mentioned, it includes 250 components grouped into 30 categories such as Signal Generators, Digital Filters, Mixers, Reverbs, Panners, Input Audio Files, Delays, Choruses, Distortion, Equalizers, and numerous others. (You'll find a complete list at the Sounds Logical Web site.) Some examples of the rich possibilities: the Spectral Transformers category features 22 components for manipulating a sound's spectrum directly (see Fig. 2); the Digital Filter category-a new benchmark for design quality-lists 20 types of filters; and the Signal Generator category offers 30 entries.

Purists might object to the number of (often overlapping) categories, but this system makes searching for components simple. My biggest concern with WaveWarp components is that you must double-click on them to access their control panels. These panels take up considerable desktop space, even when you set your graphics card to a low resolution. You'll encounter other minor inconsistencies as well-for example, the Input Audio Files category is actually two categories: one for sound files with playback-speed control, the other for sound files without control.

You may find the I/O scheme for components to be frustrating-some have interleaved stereo I/O and others have mono I/O. I eventually adapted to the system, but tiresome error messages such as the following marred the first few sessions: "You are attempting to connect a stereo audio signal to a mono audio input port. This is not allowed." In addition, you can't control an object by using an auxiliary device such as a graphics tablet or by tracking mouse coordinates, although Sounds Logical has announced plans for MIDI control in the next version of WaveWarp.

On the positive side, you can import wavetables, WAV files, and data for filter design from MATLAB-an integrated technical computing environment used by many DSP development engineers and researchers-into certain WaveWarp components. (Developers used MATLAB tools to create many of the DSP algorithms in today's commercial equipment.) This feature makes considerable DSP design power available to WaveWarp users and sets the program apart from the competition. The Spectral Shaping object can be seen in action in Fig. 3; the Drawing Board with its components is on the left side of the screen, and the Spectral Shaping object's control window is on the right. The Spectral Shaping function imported from MATLAB appears on a graph in the Spectral Shaper component's control window. The graph is for display only-you can't use it to change the imported MATLAB function.

HEAR ALL ABOUT ITAlthough WaveWarp currently lacks MIDI capabilities for real-time control of parameters, you can use it effectively to perform real-time manipulations of live audio inputs (subject to the usual latencies associated with audio I/O routed through Windows). Moreover, you'll have no trouble recording your sounds to disk for use in a sampler or digital audio program, or for burning onto a CD.

To create a WAV file of your design, you drag an Output WAV File component from the Output Audio Files category of the Component Library and drop it at the end of the signal chain. For slower PCs with low-end sound cards, Sounds Logical advises against running the Audio-Driver object that you'd normally use to hear a sound with the Output WAV component in parallel. The reason is that this may cause interruptions in playback (but not in the recorded sound file). So for performing effects in sync with, say, a sound file that you're processing, you'll need a fast PC.

To audition your freshly recorded material in WaveWarp, you simply open a new Drawing Board, click on the Input Audio Files tab, and scroll down through the list until you come to an object with the sound file's name (assuming you recorded it to the default directory). Drag that object onto the Drawing Board, connect it to an Audio-Driver object, click on Play in the toolbox transport (a Loop Play button is also available), and you're monitoring.

WaveWarp doesn't support playlists, but it does let you sequence multiple audio files with different start times. The procedure is cumbersome, requiring you to adjust the playback initiation times individually with the controllable playback function of each file. However, Sounds Logical has announced that the next version of WaveWarp will operate as a DirectX or VST plug-in that you can insert on a track-by-track basis into your sequencer application. It will let you use the sequencing and playlist features of your sequencer in conjunction with the powerful effects-design flexibility of WaveWarp.

You can input live audio to the program through a multichannel audio device for real-time processing. The sound quality of the modules is excellent, and the 32-bit floating-point processing avoids the clipping that some programs warn you about. With my Audiomedia III card as an intermediary between WaveWarp's algorithms and my ear, I found the sonic results very pleasing.

GETTING HELPWaveWarp's browser-based Help facility is complete, convenient, and, most important, accessible from inside the program during a session. For example, to get help with a given component, you click on it and press F1; your browser will display a thorough description of what the module does, its transfer function (in some cases), and a long list of related topics.

You'll find a second source of help in the toolbar at the top of the main window. Clicking on the yellow question mark opens the WaveWarp user guide; the blue one brings you to the Component Library Index; and the red one opens the Example Drawing Boards Index.

WaveWarp comes with a number of visualization components that help monitor and debug patches, including the well-implemented Oscilloscope and Spectral Display objects and the useful Audio Phase Scope and RMS Audio Display. The Oscilloscope appears in Fig. 4-two of them, in fact, are shown running with different time bases and displaying the same drum-track input.

In addition, the pushpin question-mark box on the Drawing Board (see Fig. 1) provides a notepad for user comments, and in the case of example Drawing Boards it contains details about the workings of a particular patch.

USER-FRIENDLYIn general, WaveWarp relies on a straightforward, simple design philosophy. Therefore, you may not have full access to all parameters of component objects. In some cases, this is understandable: you really can't control certain complex filters in real time. Some users might welcome the simplification, whereas others may find it constraining; it depends on how you're using WaveWarp.

According to Sounds Logical, WaveWarp is most suitable for three main groups of users. First are sound designers, musicians, audio-software designers, and hobbyists who want a high degree of control over the design of audio effects, with more flexibility than traditional plug-ins typically offer. The second group includes professional engineers and researchers working in signal processing, acoustics, and spatial sound who wish to audition their designs in real time on a PC without any peripheral hardware or software. The last group consists of educators in the fields of electrical engineering, signal processing, acoustics, and audio technology who wish to illustrate key principles using live, real-time demonstrations featuring real-world audio signals.

WaveWarp is easy to use; even inexperienced users should have no problem navigating it. Intermediate and advanced users, however, may take issue with, say, its lack of versatility in sending messages that control the behavior of objects. Moreover, the absence of a developer's kit and the inability to create effects that can function as plug-ins in other software make WaveWarp less than ideal as a primary production tool. Yet its advanced DSP features, coupled with a development partner like MATLAB, allow WaveWarp to offer tools that you won't find in similar programs on the market. The straightforward interface makes it very intuitive for electronic musicians to use, and although you can't yet plug WaveWarp designs into other host software or control the program through MIDI, where else can you get so much signal-processing power for the PC at such a reasonable price?

SUMMING IT UPHow well we work with a piece of software has a lot to do with its user interface. WaveWarp's has a positive but somewhat constrained feeling, stemming from its inaccessible control parameters, lack of MIDI-input control, and inability to nest patches.

The program is fast: I built some large, redundant oscillator patches to probe its limits, and they worked at about 35 oscillators on my slower-than-recommended 133 MHz PC. On the 400 MHz machine, I tired of trying after reaching 100 oscillators, in part because of the onscreen clutter resulting from the lack of a nested-patch facility.

All things considered, with its speed and terrific variety of signal-generation and signal-processing options, WaveWarp is a great value for Windows-based musicians seeking a fast, complete effects-processing package.

Thomas Wells has been involved with audio and computer music for more than 25 years. He teaches at Ohio State University.