At the heart of any good audio education is the study of signal flow and wiring: get your inputs and outputs straight, and you can adapt to just about any situation. Moreover, knowing how to trace the routes traveled by MIDI data and audio signals is critical to effective troubleshooting.
So what happens when most of your “gear” is actually software? What good is that stack of freshly soldered MIDI cables when you're trying to send timing signals from your digital audio workstation (DAW) to your virtual drum machine? What if you want to route the audio output of your software synthesizer to your sequencer so that you can apply a virtual gate to it? In that case, neither a balanced nor an unbalanced cable will do you much good.
What you need are virtual cables: those clever inventions that function just like real hardware cables, except that they're actually software that connects one program to another. Here's a closer look at how they work.
To get MIDI Timing Clock (or any MIDI message) from your sequencer to your software drum machine, you must use a utility commonly known as a virtual MIDI cable. The cable may appear as a function integrated into both programs, or it may be a separate application that shows up in the list of MIDI ports available to the two programs. Either way, it's a software connection — an internal pathway — that passes the beat-clock signal between the two programs in a manner similar to the way a physical MIDI cable passes a signal between two hardware devices.
Getting your software synthesizer's audio output back into your DAW works in like fashion, except you use a virtual audio cable to make the connection. The concept resembles that of an audio bus, except that a bus is ordinarily restricted to making connections within a DAW's mixer. Like a physical patch cable, a virtual audio cable connects one software application's audio output with another's audio input.
Increasingly, virtual audio and MIDI connections are being integrated into host programs. When a soft synth is implemented as a plug-in or a virtual instrument, it appears as a prewired audio insert within your sequencer, and it then shows up as an available MIDI output device on a MIDI track. That's an ideal arrangement; however, not all software synths are available as plug-ins, and the synth you want may not be available in the plug-in format you need. In either case, you'll need a virtual cable.
Generally speaking, virtual cables come in two types: interconnection standards and ancillary applications. When two programs support the same interconnection standard, they see each other as I/O options. That's the next best thing to operating as a plug-in, because it's extremely convenient. If the “gear” you want to hook up doesn't work as a plug-in and doesn't support a common interconnection standard, you must use a separate application to emulate a physical cable. Although that is a bit less convenient, it is nevertheless a potentially powerful and useful tool for your virtual toolkit.
Let's take a closer look at the example I mentioned earlier and see how to lock a software drum machine to a DAW using MIDI Timing Clock. For this example, I'll use a Macintosh running Digidesign's Pro Tools LE and Koblo's Gamma9000. Because I'll be using Opcode's Open Music System (OMS) to organize the MIDI setup, I will make the MIDI connections through a virtual pathway that is called the IAC bus.
The IAC (Interapplication Communication) bus is a set of virtual MIDI cables built into OMS and therefore available to any application that supports OMS. (Mark of the Unicorn's [MOTU's] FreeMIDI offers similar functionality through its Interapplication MIDI.) It allows as many as four internal MIDI ports, each with the customary 16 MIDI channels.
If you double-click on the IAC bus icon in OMS Setup, you can rename the IAC ports (see Fig. 1). Take advantage of this feature to name your IAC ports something useful and meaningful. For this example, I'll use the mundane but informative name “GammaSync.” Now the virtual cable has a label.
In order to get Gamma9000 listening to the IAC bus for MIDI Clock, you must first set its MIDI driver (found in the File menu under Select Drivers) to OMS, and then set its Doc Bus (found in the Options menu under MIDI Setup) to GammaSync as shown in Fig. 2. Simply click on the Sync button, and Gamma9000 waits for MIDI Timing Clock.
Sending clock pulses down the IAC bus from Pro Tools LE is as simple as checking “Enable MIDI Beat Clock” and then choosing GammaSync as the desired port. When you start playback in Pro Tools LE, Gamma9000 will be right in step. I will address virtual audio routing next.
DirectConnect acts as a virtual audio cable between Pro Tools and other audio applications, such as software synths and drum machines. Other programs that support Digidesign hardware, such as MOTU Digital Performer and Emagic Logic Audio Platinum, can also use DirectConnect. As many as 32 independent audio channels are available, though in a host-based system such as Pro Tools LE, the computer's performance may be a limiting factor. In the window where you selected OMS as Gamma9000's MIDI driver, you must also select DirectConnect as Gamma9000's audio driver so its audio outputs will show up in DirectConnect.
To set up a direct audio connection between Gamma9000 and Pro Tools LE, create an aux track in Pro Tools and assign the DirectConnect plug-in to an insert on the aux track. Don't look for DirectConnect to be listed alphabetically (under D) among the other plug-ins, though; it takes the name of the compatible program, so in this case, it will appear as Tokyo. (Gamma9000 is one of five synthesizers you can select from within Koblo's Tokyo, the parent application.) In the DirectConnect plug-in window (see Fig. 3), choose “Tokyo Stereo Out 1-2” as the plug-in's output. If that seems backward, think of it as choosing the output (Gamma9000's) you're patching in.
At that point, when you start playback in Pro Tools LE, it sends MIDI Clock to Gamma9000 through the IAC bus; Gamma9000 follows Pro Tools LE's tempo to the letter and sends its audio output back to Pro Tools LE through DirectConnect. Pro Tools LE receives Gamma9000's audio like any other audio input assigned to an aux track and sends it to whichever output you have assigned.
You can now process Gamma9000's output with any audio plug-ins you have available. You can automate its volume, pan, and send levels as you would any other audio. You can even bounce the audio to disk with or without other audio tracks. In short, it now functions like any properly patched piece of outboard gear.
If you have trouble setting up DirectConnect, check to be certain that the DirectConnect plug-in and the external synth's or drum-machine's “plug-in description” file are in the Plug-Ins folder inside the DAE folder. Another file called Digidesign StreamManager must be in the Extensions folder. Those files should appear automatically during a normal installation, but they're worth knowing about if you need to do any troubleshooting. You may also run into DirectConnect-compatible soft synths that operate only in mono or only in stereo. If you have difficulty firing up a certain soft synth, you may simply be trying to use it on the wrong type of track. It's also a good idea to enable Active in Background from Pro Tools LE's Operations menu to keep the program from stopping whenever you bring Gamma9000 to the foreground.
Numerous soft synths, samplers, drum machines, and other applications support DirectConnect, including Native Instruments B4 and Reaktor, BitHeadz Unity DS-1 and Phrazer, and TC Works Spark XL. DirectConnect doesn't do Windows.
So how about running a virtual synth's output into your sequencer to apply effects to it and to record it? One great solution is ReWire from Propellerhead. ReWire is a virtual audio pathway of the interconnection-standard variety. It provides up to 64 virtual pathways for real-time streaming of audio between supported applications. It also provides sample-accurate synchronization and transport integration between the programs.
With that many virtual audio cables at your fingertips, you can run the outputs of a program such as Propellerhead's ReBirth into separate audio inputs of Steinberg's Cubase VST and apply different effects along with mix automation. The setup process is essentially identical on Mac and PC. ReWire-enabled applications detect each other automatically, so all you have to do is route the audio exactly where you want it to go.
Fig. 4 shows Cubase VST's ReWire control panel with ReBirth's Mix outputs and individual instrument outputs available. Activate one and it pops up in Cubase VST's Mixer window. Any output can be enabled independently of the rest, though little is gained in system resources by leaving them disabled.
ReWire is supported by other host programs such as Steinberg Nuendo, Emagic Logic Audio, MOTU Digital Performer, and Propellerhead's own Reason. Other ReWire-compatible synth applications include BitHeadz Unity DS-1 and Retro AS-1, Cycling '74 Max/MSP, as well as Koblo Vibra9000, Gamma9000, and Stella9000. In addition, because ReWire supports multiple outputs, it could, for example, handle Reason and ReBirth simultaneously. Check at www.propellerheads.se/products/rewire/products.html for the latest information regarding ReWire support.
HELP ME, HUBI
Trying to get MIDI communication enabled between Windows applications often requires an extra step: the installation of a third-party virtual MIDI cable. The Windows platform lacks a unified MIDI management tool, such as OMS or FreeMIDI, so interapplication functions must either be built into a program or facilitated by applications such as Hubert Winkler's Hubi's Loopback Device or Jamie O'Connell's MIDI Yoke, both of which are available as freeware. (Check www.synthzone.com for links.)
Interestingly, both programs are installed using the Windows Add New Hardware function. It makes sense when you consider that the operating system regards them as hardware devices. What may not make sense as quickly is that whatever data enters the “cable's” Output port gets sent to its Input port. If that seems backward to you, you're in good company. But if you compare virtual MIDI cables to a real hardware setup, in which data flows out of a controller to the input of a synth, it becomes clearer.
In other words, choose Hubi's as the destination on one or more tracks in your sequencer (the “controller”), and Hubi's takes over the role of controller. Hubi's Output port, which is receiving the data from your sequencer, will then send that data to whatever is connected to its Input port, which will be your soft synth or drum machine. Simple, right? (Fig. 5 shows the virtual cables as they appear in a program's MIDI setup menu.) Hubi's supports 4 loopback ports; MIDI Yoke offers 16. Both support multiple inputs and outputs to each port.
However, as in the Gamma9000 example, you're only halfway there at this point. To hear the output of your soft device, you may need a second sound card, a multichannel sound card, or a virtual audio cable, such as the appropriately named Virtual Audio Cable from Ntonyx. Offering as many as 64 multiclient cables with resolution as high as 32 bits, Virtual Audio Cable installs and operates much like Hubi's Loopback Device, but it has a couple of quirks worth noting.
First, the demo version uses a fixed interrupt period that, on my system, resulted in a significant amount of clicking in the audio stream. The full version lets you adjust the interrupt period, which should result in smoother performance. Second, Virtual Audio Cable requires a helper application so you can monitor the audio output. When I connected the audio output of VAZ Modular into Cakewalk Pro Audio using Virtual Audio Cable, I was able to record but not monitor the sound. A tiny applet called Audio Repeater is included with the Virtual Audio Cable distribution file. It allows you to monitor the signal while recording.
To put it all together, here's what's happening: the output of a Pro Audio MIDI track is assigned to Hubi's Loopback Device, which carries the data into VAZ Modular and triggers the selected synthesizer. The audio output of VAZ Modular is sent through Virtual Audio Cable simultaneously to Pro Audio for recording and to Audio Repeater for monitoring through the audio interface. As before, think of each element as a hardware device; you'd wire it exactly the same way and expect the same results.
Virtual cables have a number of other uses. MIDI Yoke can route its output to a related program called MIDI-OX that allows you to filter or remap MIDI data. You can also combine the two to provide multiclient functionality to your hardware MIDI inputs and outputs. Dozens of shareware MIDI utilities available for PCs let you do things such as analyze the output of a MIDI control surface routed through a virtual cable, so you can adapt it for use with unsupported programs. If your favorite editor/librarian isn't tightly integrated with your sequencer, a virtual cable lets you connect the two to record your edits as SysEx data.
Although plug-in technology continues to simplify the interconnection of MIDI and audio software, virtual cables still have a place in a desktop studio. Whether you use an interconnection standard, an interapplication bus, or a shareware cable program, the principles are the same. Follow the same logic as with physical connections, and it should all come together.
Brian Smithersis associate course director of MIDI at Full Sail Real World Education in Winter Park, Florida.