CTRLR: The Missing Link?
CTRLR integrates hardware synths into your DAW with the convenience of software synths. See you on Ebay.
Column: Jason Hearn
Around the year 2000, I was lured by the spoils of software synths: reliable recall, sounds stored within project files, easy automation and the ability to run multiple instances. It was revolutionary. But ever since, some downright gorgeous-sounding hardware synths have been slowly collecting dust around me, exactly because of this lack of convenience.
Just one example is a Roland MKS80 Super Jupiter polyphonic analogue synth module from the mid ’80s I’d been loaned. Since I didn’t have the optional MPG80 programming unit for it — with all the knobs and faders — it sat under-utilised in my rack. When another good friend finally loaned me his MPG80 controller, what should have been the connecting link still didn’t solve two aspects of soft-synth workflow I’d become accustomed to: full recall of sound parameters from within my DAW projects (I’m using a DAW which doesn’t record SysEx dumps), and full automation of all parameters.
It got me thinking. What would I need to build a VST/AU-based editor for my synth collection? When I started listing the skills required, even an optimistic timeframe was starting to look medical degree-long: Learn how to code C++; build GUIs from scratch; create VST/AU plug-ins; ensure it was cross platform; and test it. It sounded less and less like a fun weeknight hobby and more like a career choice.
Thankfully, almost out of the blue, I discovered CTRLR, which has completely revolutionised the way I integrate my hardware synths within the context of a modern-day 64-bit DAW. Hopefully it can do the same for you.
WHAT IS CTRLR?
CTRLR (ctrlr.org) is a freeware, open-source, cross-platform tool allowing owners of MIDI-equipped hardware synths to integrate them with the same convenience of software-based plug-in synths. It can run either as a standalone editor or a VST/AU plug-in within 32-bit and 64-bit DAW applications running on OS X, Windows, and surprisingly, Linux.
Launching CTRLR as a VST/AU plug-in allows you to load a controller Panel created for your synth, configure the MIDI port and channel settings, and then, via standard plug-in automation, automate all parameter objects on the Panel just like a software synth.
While the concept itself may not be unique (manufacturers of modern synths often provide a plug-in-based editor), what is special about CTRLR is users are free to create their own custom Panels with relative ease — providing it has a sufficient MIDI spec.
Additionally, CTRLR allows you to generate specific VST/AU plug-ins with your desired Panel preloaded. I’ve spent the past months getting a kick out of addressing the Roland MKS80 nestled deep within my rack by simply calling up my self-created plug-in called Roland MKS80.vst.
A FEATURE-RICH EDITOR
CTRLR’s editor is deep to say the least. Here are some examples:
• You can arrange layers of controls in Tabs for control-laden synths.
• Users with design chops can import bitmaps as the basis for their GUI and replace CTRLR’s built-in faders and knobs with bitmap animations saved in PNG format. The freeware KnobMan application (www.g200kg.com/en/software/knobman) is designed specifically with this type of design in mind.
• CTRLR’s slider/knob objects even support multi-part MIDI messages — great news for synths supporting high-resolution 14-bit Continuous Controller data such as Moog’s Voyager. And when creating Panel Modulators that send SysEx messages, complexities such as Roland’s SysEx Checksum standards have been implemented (this was essential when I created the Roland MKS80 panel).
• There’s also a very useful MIDI Monitor tool allowing you to watch the data flowing in and out of CTRLR. And the MIDI Calculator window will help those not accustomed to converting values back and forth from decimal to hexadecimal, and vice versa.
CTRLR Panels currently available for download:
Access Virus TI, Akai MiniAK, Alesis Micron (same panel as Akai MiniAK), Cheetah MS6 with MAD Rom panel, DSI Mopho, DSI Prophet’08 (Power’08), Emagic AMT8, EMU Procussion, GEM Real Expander, Jomox Xbase09, Korg DW6000, Korg DW8000 (two different panels), Korg Prophecy, MFB SynthLite 2, MIDIbox SID, Moog Little Fatty (Mogue Big Skinny), Moog Minitaur, Moog Voyager (Mogue Voyeur), Novation Supernova, Roland Juno 106, Roland JV/XP family panel (Jay-V) ,Roland JX-3P fitted Kiwitechnics 3P Upgrade (Kiwi-3P), Roland JX3P with Organix MIDI Kit (JOX’3P), Roland JX8P (two different panels), Roland MKS80, Roland VM-3100 Mixer Map, Sequential Circuits Six-Trak (Six-Trak Editor), Studio Electronics Omega 8, Vintage Revolution PedalPro MIDI, Waldorf Microwave II/XT/XTk, Waldorf Rack Attack (RealAttack), Yamaha TX7, Yamaha TX81Z.
While building your own panels is powerful, the key feature most of us are looking for is the ability to recall our hardware synth settings as easily as our softsynths. So, how does it work?
Well, behind the scenes CTRLR’s primary developer, Atom, is hard at work building a Librarian within CTRLR that promises to help manage the patch memories within your hardware synths. It’s a big job, so in the meantime CTRLR uses the Snapshot function to achieve total recall of patches within DAW projects — perfectly adequate if you tend to create unique sounds for each project you create.
Creating a Snapshot stores a ‘local’ preset in that project’s plug-in instance. When you reopen the project, simply hit Send Snapshot, and CTRLR transmits all settings on the Panel to the synth. Hey presto, your hardware synth sound is recalled.
Used in tandem with your DAW’s Freeze function, you can use multiple instances of a single hardware synth just like you can with a software synth. Just unfreeze and resend your snapshot if you want to tweak the sound. The best part of this workflow is the sounds are stored within the DAW project itself (just like a software synth), freeing you from having to separately maintain patch memories within the synth itself. It also effectively gives you unlimited patch memories for your synth — one of the key motivators for me avoiding hardware synths in the first place.
Editing is uni-directional (you can’t actually suck the patch data out of the synth to edit) unless otherwise stated. This is fine for most purposes if you create yourself a good initial Snapshot.
POWER TIP: SET YOUR PRESETS
If your DAW has track-insertable objects to bring external audio streams into a track (for example, Ableton Live’s External Effect object) and the ability to save track presets, you’re in luck! With these facilities, you can simultaneously launch an instance of CTRLR with MIDI settings preconfigured and a Panel preloaded, simplifying how you route audio streams back into the DAW. Much more convenient than manually creating audio tracks to route your synth’s audio each time.
This is a huge timesaver and great for keeping in the creative zone. Ideally, you will be using an audio interface with enough I/O to dedicate specific inputs to specific synths and keep them connected consistently. In fact, the existence of a good CTRLR Panel for a forgotten classic on eBay is good enough reason to consider buying it.
PACKETS OF STREAMING GOLD
Some synths only adjust parameters with MIDI SysEx messages, which is a problem for Ableton Live users as the DAW removes MIDI SysEx messages from MIDI data streams. CTRLR neatly overcomes this limitation by communicating directly with hardware MIDI ports (in Live’s MIDI preferences, uncheck the Input and Output ports you are using with CTRLR for the Track/Sync/Remote columns). Although it has been possible for Ableton Live users to create Max4Live editors for hardware synths, for synths requiring SysEx messages you need to launch a satellite Max run-time application when recalling projects, introducing the risk of incomplete recall.
When creating a CTRLR Panel for a synth without the aid of the manufacturer’s MIDI SysEx Implementation guide, consider watching the data streams from an existing editor like Emagic’s Windows-only SoundDive, and identifying which values are changing in response to tweaking the controls.
A similar approach was instrumental when I developed the MKS80 Panel. Armed with an iPad2 running Liine’s Lemur app loaded with the MKS80 editor, I watched the data streams — making it easier to understand the grubby scanned version of the MKS80’s MIDI SysEx guide I found online.
POWER TIP: GEEKING OUT ON LUA
For ultra-geeky musicians familiar with programming and LUA scripting, CTRLR’s Panel editor has a full LUA scripting engine and console built-in. It allows you to build and attach LUA ‘Methods’ to modulators that execute depending on specific GUI actions. For most Panel creators, understanding LUA scripting is unnecessary. If, however, you wish to extend a Panel to interpret SysEx patch dumps from your synth or build additional functionality into your Panels such as Patch randomisers, LUA will be worthwhile learning.
SUPERCHARGE SYNTHS WITH CTRLR
Prior to making the MKS80 Panel, external modulation via MIDI was limited to Aftertouch (with only two destinations), Velocity (rates for Envelopes 1 and 2 only) and Pitch Wheel. Now, armed with the Panel, any parameters within the MKS80 can be modulated. In tandem with Ableton Live’s Clip-based parameter automation, I can perform exotic modulations such as ‘wavesequencing’ oscillator waveforms. It’s not just controlling, it’s super-charging your synths!
Creating your own Panels might seem daunting, but it’s doable and there’s a whole community to help you along. And during the process you’ll get a dual education — how to build Panels, and a deep understanding of what makes your synth tick — all without the medical degree timeframe.
POWER TIP: THINK BEFORE YOU CLICK
In Ableton, parameters of a softsynth are not made available for automation until you click the Configure tool (found in the header of the plug-in device container) and then click on each parameter on the synth’s GUI until all are shown. It’s worth putting some thought into the order you add the parameters since this is the order they’ll be presented and grouped on your control surface.