If you have seen Ghost Ghost perform in 2011, you have probably noticed that I have some mysterious computer gear now that allows me to live loop many different sounds onstage. During the average song, I do multitrack looping and layering of my own voice, my electric/acoustic guitar setup, and a multi-mic’ed stand-up drum kit. Right after every show, someone generally asks me how I do all this. I love talking about my work, so here is a quick description of Multilooper, the multitrack live looping system I have developed over the last few months using Ableton Live and Max For Live.
The impatient can visit GitHub to download the the Ableton project file, the Max For Live patch, and relevant documentation. But don’t expect to just fire up the project and start looping, you will need to configure quite a lot to get everything working. The source code and documentation are licensed under a Creative Commons BY-NC-SA 3.0 Unported License.
In short, Multilooper is an integration of the following:
- Ableton Live 8, the multitrack digital audio workstation for live performance
- Looper, the live-looping MIDI instrument provided with Ableton Live 8
- Max For Live, the programming environment for Ableton Live
- Apple Mac OS X 10.6 on a 2009 MacBook, and also the Mac OS IAC Driver
- Rolls MP128 MidiBuddy foot controller
- MIDI Solutions Event Processor
- Akai APC20 Ableton controller
- M-Audio Fast Track Ultra 8R audio and MIDI interface, and also its software mixer
- Radial ProD2 two channel DI box
- Radial ProRMP reamp box
- Pro Co StageMaster 8 channel XLR drop snake for inputs
- Pro Co StageMaster 8 channel TRS drop snake for outputs
- Sennheiser HD280 headphones
Connection DiagramThis diagram shows how most of the hardware is connected:
Two Channel GuitarThis diagram shows how the guitar is wired into and out of the Multilooper: Before I discuss the Multilooper’s input and output lists, I should explain a few points about my guitar rig. I rewired my guitar with the excellent Graph Tech Ghost pickup system in order to get both electric guitar and acoustic guitar sounds from a single guitar. My guitar outputs two channels, channel 1 for the magnetic pickups and channel 2 for the saddle transducers. My pedalboard also has two channels, one for each of the guitar outputs. Pedalboard channel 1 is a typical electric guitar path (distortion, wah, etc.) while pedalboard channel 2 is processed like an acoustic guitar path. The last stop on the pedalboard is a two channel DI (direct injection) box. The DI splits the output of each channel, sending a low impedance signal to a Multilooper input and a high impedance signal to the guitar amp. The amp is also a two channel amp (Fender Twin) with two inputs on each channel. The vibrato channel on the amp is used for channel 1 of the guitar, while the normal channel on the amp is used for channel 2 of the guitar. The inputs of the amp are connected as follows:
- Amp vibrato channel, input 1: from pedalboard channel 1 (live guitar channel 1)
- Amp vibrato channel, input 2: from Multilooper output 3 (looped guitar channel 1)
- Amp normal channel, input 1: from pedalboard channel 2 (live guitar channel 2)
- Amp normal channel, input 2: from Multilooper output 4 (looped guitar channel 2)
The Multilooper outputs 3 and 4 are low impedance signals when they come out of the Fast Track, so the impedance for each signal is corrected by a reamp box before the signal goes into the amp. Also, because the reamp box has transformer isolation and ground lift, it allows correction of noisy power or ground issues. Very important.
Why all this complexity? I know, right? Well, there are three reasons. First, I have two channels on my guitar because I play electric and acoustic guitar parts, so I need to be able to switch between the two sounds or blend them. The amp EQ settings for an acoustic guitar are much different than the EQ for the electric guitar, and I don’t compromise much on tone, so I need two amp channels to make it sound great. Second, I want the live and looped guitar to sound identical in volume and timbre, so both need to be routed to the amp, with correct impedance. Third, NYC rock clubs are not known to have great sound systems or on-stage monitoring, so I can’t expect the club to have adequate sound system equipment/expertise to handle what I’m doing–it’s best to route all of the guitar sound to the guitar amp.
Input ListAll of the following are connected to the input snake, which is in turn connected to the 8 audio inputs of the M-Audio Fast Track Ultra 8R:
- Guitar channel 1 - Magnetic pickups from guitar via output from DI box channel 1 on the pedalboard
- Guitar channel 2 - Saddle transducer pickups from guitar via output from DI box channel 2 on the pedalboard
- Floor tom mic - a clip-on Sennheiser e604 microphone
- Snare mic - a second clip-on Sennheiser e604 microphone
- Vocal mic - a Shure SM58 microphone, which I sing into
Output ListAll of the following come out of the output snake, which is connected to the 8 audio outputs of the M-Audio Fast Track Ultra 8R:
- Mono cue mix - Ableton has cue mix capability, so I connect every Ableton track to the cue mix and output it here. Output 1 shows up in the left speaker of my headphones. A side benefit is that I can use this mono mix to output to the sound system if something goes wrong or they don’t have enough inputs to accommodate the many channels I am outputting.
- Click - Ableton has a click capability, so I route that click sound to output 2. Output 2 shows up in the right speaker of my headphones. If I needed someone else to hear the click, I could connect output 2 to another rig.
- Guitar channel 1 - Guitar loop for guitar channel 1, connected to reamp box 1. Live guitar does not come out of this output, because live guitar is routed directly to the guitar amp by the DI box.
- Guitar channel 2 - Guitar loop for guitar channel 2, connected to reamp box 2. Live guitar does not come out of this output, because live guitar is routed directly to the guitar amp by the DI box.
- Floor tom - Live and looped floor tom, to house sound system
- Snare - Live and looped snare drum, to house sound system
- Vocal - Live and looped vocals, to house sound system
- Synth kick - synthesized bass drum track, to house sound system. Because there is no kick drum on stage, we decided to augment the live loops with a synthesized bass drum track that is pre-programmed for each song. Rock music requires bass drum, that’s a fact.
Ableton ControllerI use the Akai APC20 Ableton Controller onstage as the transport and mixer for Ableton Live. Each song in our set list has a corresponding scene in Ableton which sets the tempo and meter. I start each song by pushing the button for that scene on the APC20, and stop it using the APC20 transport stop button. The mixer is generally set to unity gain for each channel, and I use it to fade loops in and out as necessary. I don’t really use any other features of the APC20 onstage, and I would love to replace it with a dedicated foot controller and more custom programming.
MP128 Looper Foot ControllerMy hands are usually busy onstage, so I control the looped audio with my feet using the Rolls MP128 MidiBuddy foot controller and some custom Max For Live code. I can control two separate guitar loops, two separate drum loops, and one vocal loop. The top row of buttons on the MP128 select which loop I want to control (guitar loop 1, guitar loop 2, drum loop 1, drums loop 2, or vocal loop). The bottom row of buttons control the transport (record, play, overdub, stop, undo) for the selected loop.
The full version of Ableton Live provides a software instrument for live looping called “Looper.” This instrument is fine for simple mono looping, but I have a two channel guitar, and my drum kit requires two microphones. The Ableton-provided Looper has no way to accommodate multichannel looping, so I use the Ableton Looper as a building block to create what I call a “virtual looper.” I call them virtual loopers because behind the scenes, a looped guitar part is actually two individual Ableton Looper instruments (one for each channel of my guitar) that are time-synchronized and controlled in tandem with custom Max for Live code.
You might be thinking that I could mix the signals down to mono before they get looped, and that would get around the mono limitation of the Ableton Looper. However, that would defeat my two channel guitar setup, which depends on the different settings on each channel of the amp. It would also prevent me from being able to route the output of each drum to the sound system individually, which is very important for live shows. A sound engineer processes a snare very differently from a floor tom, so mixing them to mono before they get to the sound system ties the sound engineer’s hands.
Let’s review how these virtual loopers might be used in a typical song. I start with a drum loop on the “drum loop 1” virtual looper. Then during verse 1 of the song, I add a guitar loop on the “guitar loop 1” virtual looper. Then when the chorus comes around, I stop “guitar loop 1” and create a second guitar part on the “guitar loop 2” virtual looper. When the chorus ends, I stop “guitar loop 2” and start “guitar loop 1” again. Having two virtual loopers for guitar and two for drums is a relatively simple way to have “part A” and “part B” for guitar and drums. It also allows me to play lead guitar live over a rhythm guitar loop, or sing harmony over my own looped vocal. Nice stuff.
Event ProcessorThe MP128 foot controller outputs MIDI “program change” messages, but Ableton Live filters out this type of MIDI message because it uses it internally. So in order to get foot controller MIDI data into Ableton Live, I have to convert each MIDI program change message (e.g. “Program Change 0”) into the corresponding MIDI “note-on” message (e.g. “Note On 0”), and I do this using the excellent MIDI Solutions Event Processor. Once the message is converted, Ableton and Max For Live can see and use the MIDI data coming out of the foot controller.
Max For Live Custom InstrumentI created a Max For Live (abbreviated M4L) MIDI instrument that listens for note-on messages from the foot controller, and then interprets those into commands for the selected virtual looper. My initial implementation controlled the virtual loopers with M4L API calls using the Live Object Model. Unfortunately, the Live Object Model does not expose all of the functionality of the Ableton Looper; in particular, there is no way to send the absolutely essential “undo” and “clear” messages to a Looper using the Live Object Model. I had to find a workaround, which I found in a stock Ableton Live feature called MIDI mapping. MIDI mapping allows any MIDI note-on message to be connected to controls within the Ableton mixer, or controls within Ableton devices (such as Looper).
After a virtual looper is selected on the foot controller (e.g. by pressing the “0” button to select virtual looper 0) and a command for that virtual looper is issued (e.g. by pressing the “5” button, which means “record”), the custom instrument sends out a set of its own note-on messages (e.g. note-on 11 and note-on 12) which are picked up by Ableton Live. Ableton Live has been configured via MIDI mapping to assign those note-on messages to the correct controls on the correct Ableton Loopers (e.g. note-on 11 is mapped to the record button on one Looper, while note-on 21 is mapped to the record button on another Looper). Setting up these Ableton Live MIDI mappings is extremely tedious. This would not be necessary if the M4L Live Object Model exposed all of the functionality of the Looper instrument. I should caution you that I have seen some odd behavior in MIDI mapping that can cause the system to misbehave, usually in one of three ways:
- the virtual loopers get a “record” command when you push the “stop” button on the global transport
- a virtual looper might get a record message when you issue a command for a different virtual looper
- one channel of a virtual looper (e.g. the snare, but not the floor tom) might receive the command while the other channel does not