Automation in Tracktion's Waveform
I think I've finally succeeded at fullfilling all the automation requirements in Whole-Play. I wanted to be able to automate various type of controls:
- Mixer controls: specifically, each track's volume and pan, as well as the master volume.
- VSTi controls: I use various VST instruments (Kontakt, AGF, SuperiorDrummer). I wanted to be able to automate specific parameters from each one, i.e. the gain control.
- Plugin controls: I also use effect plugins as inserts in the tracks, mostly Guitar Rig. I wanted to control also parameters from these plugins.
- Bonus points: I thought automating playback and recording of the DAW would also be pretty handy.
Automation has to be via MIDI CC messages, which Whole-Plays sends during certain events.
All of this I had managed to set up in Cubase, although it was a bit complicated, because I use multiple virtual MIDI ports, and I had to create a control surface for each one, which seems a bit messy in Cubase (starting with the fact that all surfaces have the same name, something like 'Generic control surface', at least I found no way to rename them). Anyway, Cubase had recording issues for me, so I had to move away from it. Now the challenge was to make it all work in Tracktion's Waveform, which didn't present the recording issues. After a bit of fiddling and with some help from their friendly tech support, I've managed to get it all working. Here are my notes on the process, for future reference, and maybe it also helps others dealing with this.
(using Waveform 8 on OSX 64bit)
The Edit automation
Most of the setting up happens in the Edit's automation panel. Open this from the menu: Automation > Create MIDI controller mappings. It's easy to create mappings in this window:
- In the right column there's a drop-down of all the automatable parameters in your Edit. There might be a lot! I can for instance control every single control from each one of the inserted Guitar Rig plugins. All of it! :) There's also options to select the track's volume and pan, the master track, and more.
- In the left column you set the CC number and channel for the parameter selected on the right. The way to do this is via MIDI learn. Just click on the cell, it will ask you to move the controller you'll use for the parameter, and Bob's your uncle.
For me the MIDI learn feature is a bit inconvenient because I have to write a little bit of code that sends the desired CC messages, and run it for each automation I want to set up. It would be nice to be able to enter the numbers manually, which I thought maybe I could do by editing directly the Edit file, which is it's just an XML file, so I gave that a go. The relevant code is:
<controllermappings> <map channel="1" filterid="0/2db42ff" id="65556" param="#1: EGt >> Guitar Rig 5 >> Spl.Crossfade"> ... </map> </controllermappings>
But in the end it seemed a bit delicate (what are the id and the filterid attributes?) and I ended up setting it all up from within the program. It was a bit slow, but it's a one-off setup, so no dramas.
Side note: if like me you're a bit pedantic about order, you might want to reorder the assignments you've created. While it can't be done from this window, you can accomplish that by simply editing the XML and reordering the MAP elements.
A little limitation
Ideally I would have liked to send my CC messages from different virtual MIDI ports, all sending on channel 1. But the Edit's automation panel doesn't distinguish different ports, only different channels (no idea if there is a technical reason for this, or it's just that most people don't need it). While this is indeed a limitation, in practice I'm not likely to use more than 16 MIDI ports, at least not in the near future, so I'm ok with sending from a different channel on each port. The problems of tomorrow will find solutions of tomorrow. :)
The Control Surface automation
A second automation option in Waveform is by creating a Custom Control Surface, and setting the automation assignements there. This is easy to do:
- Go to the Settings tab.
- In the left panel, select Control Surfaces.
- Click the Create New Custom Control Surface button, and give it a name.
- In the bottom panel you'll see the options for the newly created surface. Click Edit Control Mappings. This opens the assignments window, which is pretty similar to the one in the Edit's automation version.
The automatable parameters here are different. You don't have access to the specific tracks and their contents, things are more generic. You can automate things like the first track, or switch to the next 8 tracks. This is naturally designed to work with hardware control surfaces, where this makes perfect sense. But I'm doing something a bit strange, which is to create a kind of virtual control surface: a component of Whole-Play sends the MIDI CC messages to this custom control surface in Waveform, much like a RL control surface would.
In any case I only wanted this to be able to arm tracks, rewind the playhead, and start/stop recording, which is all pretty straight forward to set up. It's very nice, now Whole-Play can initialize, prepare whatever it needs and when it's ready to start, it rewinds Waveform, arms the automation record mode, and hits record. And at the end of the performance, it hits stop. Cool! The even-cooler-feature would be to be able to save to disk automatically. Maybe export it to mp3 and upload it to SoundCloud? Nah, I'm not really getting that lazy. ;) But the auto-record/stop is really useful, this way I only need to start Whole-Play, and don't even need to use the mouse to interact with Waveform.
I want to close this post by thanking Dave (from Tracktion tech support) for his awesome help during the process of understanding all my options.