VirSyn's Cube, a new additive-synthesis application with unique spectral-morphing capabilities, is distinctly outside of the box. Cube allows you to define the parameters of many dozens of partials and then manipulate those parameters using a variety of time-varying effects. The results can be fairly straightforward or like nothing you've heard before.
Cube's interface is both attractive and efficient (see Fig. 1). The large oval screen at the center of its main window is multifunctional and toggles between a display of partial parameters, effects, a setup screen, and morphing envelopes (I'll discuss each of those shortly). Much of the rest of the window is dedicated to controls for the four sets of partial parameters that make up Cube's basic architecture. There's ample visual feedback as you move knobs and sliders, and you can change the color scheme by picking from a variety of skins. A large keyboard at the bottom of the screen is used to trigger notes and also shows what keys you've pressed if you're using an external controller.
Cube is 8-part multitimbral and runs standalone or as a VSTi. It also supports Audio Units under Mac OS X. Each part can have up to 32 notes of polyphony with a cap of 64 notes total, and the program comes with over 300 Presets (including a new set of Presets that appeared on the Web just as I was completing this review). The dedicated Setup screen lets you assign sounds to individual MIDI channels, and you can easily assign all eight parts to a single channel if you want. Each part can be routed to its own stereo output, and there's a dedicated Record button for capturing the program's output when Cube is in standalone mode.
I tested Cube on a dual-processor Pentium III/1 GHz running Windows 2000. The audio interface was a MOTU 2408mk3, and I used ASIO drivers exclusively. I also tested Cube on a Pentium 4/2.8 GHz laptop running Windows XP, with an Echo Indigo IO for audio in and out.
FROM THE TOP
Additive synthesis is an ancient technology that was used in the earliest mechanical organs, but its modern implementation is based on the writings of French mathematician Jean-Baptiste Fourier. In the early 19th century, Fourier theorized that all periodic sounds are made up of sine-wave components with different frequencies and amplitudes that vary over time. Given enough sine waves and individual envelope generators to control the amplitudes of each, one could, in theory, synthesize any complex sound. More recent research has shown that it's valid to group higher partials into small sets and control their envelopes as a group.
Cube implements those theories in an efficient and musically useful way. Each of its voices consists of four sets of parameters that control up to 512 partials, and only the first 16 partials can be controlled individually. Beyond that, ever-higher partials are grouped into ever-larger collections.
A lot of control is available for each of the four parameter sets, which Cube calls Sound Sources and labels A, B, C, and D. For starters, the program provides separate displays to adjust each Sound Source's Partial, Attack, Decay, Pan, Filter, and Noise parameters (I'll cover those in a moment). Additional high-level controls allow you to adjust the rate and depth of each Source's pitch LFO, and you can detune each Source up or down by as many as 48 semitones in half-step increments. (You can't, however, solo or mute a Source.) All knobs and sliders can be mapped to incoming MIDI controller messages.
Two other high-level controls, Ensemble and Spread, provide even more options. Ensemble adds a chorusing effect to a Source by applying an LFO to each partial. Ensembles have only one parameter, which is represented as a value from 0 through 100 with two-decimal-point accuracy. Like many of the controls, the Ensemble parameter is adjusted with a knob or by using various key combinations, and it's not very easy to configure the setting to any arbitrary value you might want. It would be nice if you could type in values. On the other hand, like other controls, the Ensemble setting can be adjusted for all four Sound Sources simultaneously by Control-dragging (or, on the Mac, Command- or Option-dragging) the knob. That is one of many nice editing shortcuts.
The Spread control is particularly useful. Because all of the partials are harmonic by default, you don't have the option to create inharmonic sounds such as bells. But using the Spread control, you can offset the ratios of the partials to the fundamental, opening up a vast range of timbres. However, as with other aspects of the program, Cube has only a single Spread control per Sound Source (also 0 through 100), so you don't have as much flexibility as you might like.
TAKE A PART
Cube's core functions center around the six screens that are used to edit the parameter sets of each Sound Source. There are 31 collections of parameter settings that you can use as starting points. Among these are static waveforms (HiResoSaw and LoResoSaw), voiceprints (the vowels a, e, i, o, and u for both soprano and bass), and bowed and plucked strings.
To edit a Preset, press a Source's Edit button; this will give you access to a two-dimensional grid in which you can toggle from one to another of the six work areas (see Fig. 2). One of them, the Partials screen, is where you adjust the partials' amplitudes. It's easy to modify the amplitude value of a partial (or group of partials): just click and drag up or down, and you'll see the exact value (in decibels) for that harmonic. But here again, it would nice to be able to type in an exact value and also to zoom in or out to get a higher-resolution display.
As I mentioned earlier, you can edit the first 16 partials individually. Partials are grouped in pairs from numbers 17 through 32, in fours from 33 through 64, in eights from 65 through 128, and so on. Although you can fine-tune the settings if you're so inclined, for the purposes of experimentation, I found it very useful (here and elsewhere) just to draw random, sweeping gestures with the mouse.
Next up are the Attack and the Decay screens. As their names imply, those control the amplitude envelopes of the various partials, and there's only a single attack and a single decay segment per grouping. Though that may seem rather limited, you can create far more complex envelopes by morphing between the four Sources, which is the key to creating time-varying sounds in Cube.
The Pan screen allows you to place each partial or partial group in the stereo field, and the Noise editor is used to add a random amount of modulation to each partial's frequency. In the final screen, you can apply a morphing resonant filter to the partials. This unique filter implementation is one of the most powerful I've ever seen.
Unlike a traditional filter, which, depending on its type, offers some combination of cutoff frequency, bandwidth, and center frequency, the filter in Cube is completely adaptable. That means you can draw your own transfer functions for the filter and thus configure its response curve. Rather than just use a 1-, 2-, or 4-pole filter, which would determine a simple attenuation curve, you can create an unlimited variety of resonant shapes that either model traditional instruments or voices or are like nothing on the planet — very nice indeed. There are also several keyboard shortcuts that let you draw complex shapes very quickly.
In addition to creating custom filters for each individual Source, you can add morph points that determine how the filtering effects will change over time. These points determine where the characteristics of one Source's filter will morph into those of another. Which Source's filter data is used at any given moment is determined by Cube's morphing envelopes.
Cube provides morphing options that resemble the technique called vector synthesis used in some Korg synths, but the features go far beyond anything in a Korg implementation. Briefly put, Cube provides a two-dimensional grid on which you can determine how much the parameters of each Sound Source contribute to the sound as it evolves over time. The upper-left quadrant represents Source A, the upper-right is Source B, the lower-right is Source C, and the lower-left is Source D. In the configuration shown in Fig. 3, the sound would evolve gradually from Source A to B to C, sustain on C, and then continue to D upon the note's release. A diagonal line drawn from the upper-right to the lower-left quadrant would begin with the characteristics of B and morph to those of D, using additional data from the other two Sources along the way.
The duration of each segment is determined in the display at the bottom of the screen (see Fig. 3), and you can draw very complicated morphing paths that contain up to 64 segments. Moreover, Cube provides dozens of preset envelope shapes, many of which create highly rhythmic patterns that morph from one Source to the others and back again repeatedly. You can also save your own envelopes as presets and reuse them in other patches.
One simple use of the morphing technique would be to morph from the vowel sounds a to o, perhaps an octave higher. But it's just as easy to morph from a u to a bowed string or from a plucked string to a bell sound to white noise. Within the range of the available Sound Sources, the possibilities really are endless. And like nearly every other aspect of Cube, all changes you make — whether to the morph path or the Sound Sources themselves — update in real time, even as a sound is playing back.
Cube's unique zooming feature is worth a mention. Click and hold the mouse in the lower-envelope area and drag up, and you can zoom the display to show just two-tenths of a second. Drag back down, and you can zoom the display to show 40 minutes on a single screen! Dragging right or left moves the display to show a different range of time. This method works very well overall and allows you to easily set the display to any region or amount of time you want.
As with most new tools I try, my first stop was to play with the Presets. In the case of Cube, that took a very long time. Cube ships with seven banks of Presets, including pads; leads; keyboard, bass, and percussion sounds; and the CubeFactory bank, which loads by default. Banks contain as many as 64 sounds (the higher-numbered locations in some banks are empty), and you can have only one bank loaded at a time. It's easy to copy Presets and paste them into new or existing banks, and before long, I had two entirely new banks nearly filled with my own custom sounds (see Web Clips 1 through 7). Some were the result of using Cube's random-patch generator (shown as a slot-machine icon in the main interface's upper right), which creates useful patches more often than you might expect.
The sounds in the CubeFactory bank range from fairly straightforward offerings, such as RealCello, to highly rhythmic, looping sounds, such as JustWait, which could easily have come straight from a stint in a Korg Wavestation (a number of sounds have that quality). Mixed with those are keyboard sounds (Celeste, Ambiano2, ClaviThroarty, and Organ9 Bars), basses (Bassinet, ORGANic Bass, and AKHOUBass), leads (Morphogenic Lead, Trumpet Dance Lead, and Anna saw the Lead), and a whole lot more. The Presets range from elegant and evocative to just plain cheesy; which ones you'll find useful for your work depends entirely on what you're after. The bank clearly demonstrates Cube's enormous potential, including the power of its built-in effects, and probably offers something for everyone.
The other banks also have a great variety to offer. The Leads didn't contain much that interested me, and with a few exceptions, the Keys didn't knock me out either. The Sequence bank had some compelling sounds: Talking Crowd is nice and quirky, and JustWait Again is a repeating metallic sound that takes a few strange twists along its journey. Many of the other sounds got monotonous a bit too soon. But some combination of altering a few segments in the envelopes (often changing the duration of a segment in the middle of a long, repetitive section), adding a few more segments, and extending the envelope's total duration let me easily modify the Presets and create what I felt were more interesting patterns.
To my ear, the HGohs bank (created by and named for Harry Gohs, the program's developer) is one of the most interesting of the bunch. This bank is available as a free download from VirSyn's Web site and contains only 29 Presets, but many of them sound great. Among my favorites are exotic vocal sounds like Let's Talk, WetBreath, and 'nother Talk; the slow, evolving timbre of IronPiano (which I like even better with all the Sources tuned down 12 semitones); NoizVoizModwheel, which morphs between a low growl and rich noise with the turn of the mod wheel; and FifthSense, which I prefer with a much longer attack segment on the Volume envelope.
The Presets are so easy to change that you can make something radically new with no more than a few mouse clicks. But among all the included Presets, you'll definitely find plenty that you can use right out of the box.
As though there weren't enough sound-programming components on hand, Cube adds a respectable set of effects to the mix. Included are a Reverb, Delay, Flanger/Phaser/Chorus, and Distortion. Each effect has a variety of parameters, and the Reverb has no fewer than 24 presets. The delay time can be synced to MIDI tempo or the internal bpm value, and each part can have its own effects.
For even more sound-design options, a very useful arpeggiator offers settings for Range (1 to 8 octaves), Mode (Up, Down, Alt, or Rand), and Clock (a variety of rhythmic durations from whole note to 32nd-note triplet, plus five rhythmic variations). In standalone mode, the Clock values sync to the user-adjustable setting, which has a range of 40 to 300 bpm. When Cube is running as a plug-in, the host's tempo overrides Cube's internal tempo setting. Global High and Low EQ; a Bright control; and a Glide setting, which controls the transition time between two successive notes (with a maximum setting of 91.1 seconds!), round out the main controls.
THE GOOD, THE BAD
Cube's documentation is minimal, to say the least. Though it is adequate to get you up and running, it provides only two brief usage tips and tricks. Additional tutorials (for example, on how to model various resonances with the filter) would be very helpful.
More serious are two rather glaring omissions in the software itself. First, Cube has no Undo command — enough said. Second, when you quit the program, it doesn't prompt you to save any changes you may have made. I've come to expect (and even rely) on these two very common features. It would also be great if you could solo a Sound Source while you're working on it. That would be especially useful when you first load a Preset, because it's impossible to know which Source is contributing what to the sound you're hearing. I found it necessary to change various parameters of the Sources to see what effect they had (if any), which helped me narrow down where the really important stuff was coming from. A solo (or mute) function would speed the process of figuring out how a particular Preset worked.
But beyond that, Cube is one of the deepest and most powerful tools I've come across in a long time. It has the potential to generate a tremendous range of sounds, and with a little effort, you can build spectra that resemble all manner of instrument models. On the other hand, if you're short of time, you can just try your luck with the randomizer.
I hope a library of user-contributed Presets will evolve along with a “Cubist” community. I also look forward to the appearance of more Sound Source Presets and the ability to make your own. Cube is an outstanding sound-design tool and a great platform for experimentation. Check out the demo at VirSyn's Web site and see what it can do for you.
Dennis Milleris an associate editor ofEM.
Minimum System Requirements
MAC: G4/400 MHz (Altivec required); 128 MB RAM; Mac OS 9 or Mac OS X 10.2
PC: Pentium III/600 MHz or Athlon XP/MP; 128 MB RAM; Windows 98/2000/ME/XP
FEATURES4.5EASE OF USE4.0QUALITY OF SOUNDS4.5VALUE5.0RATING PRODUCTS FROM 1 TO 5
PROS: Powerful real-time sound-creation options. Efficient and intuitive interface. Unique spectral-morphing functions. Patch-randomizing feature.
CONS: No Undo command. Does not prompt to save when quitting program. Manual not extensive enough.