Multilooper, Part 2: Design

This is part two in a three part series describing Multillooper, my multi-track live looping system. If you haven’t checked out part one, you might want to read that first.

Avoid Computers At All Costs

Ghost Ghost has always been a gear-heavy band, and in particular I have always been interested in bringing sampling and live audio manipulation into the mix. We had tried various hardware samplers and loopers in practices for a couple years, but never found one that was very playable. We had resisted the temptation to bring computers onstage, because they are not purpose-built (therefore complex) and consumer-oriented (therefore fragile). I’ll give you an example of what I mean about fragility. In 2010 we recorded our second EP (Of Innocence and Experience) in our practice space using Pro Tools running on a MacBook Pro. During the recording of the song “Kate,” the MacBook crashed toward the end of each take. After about 15 takes, we became desperate to find the cause of the crash, which we eventually confirmed was the hard drive locking up due to the sheer amount of vibration generated by the drums and bass. You can imagine this situation being much worse on a stage with a sound system and subwoofers augmenting our own volume.

So what changed that made us comfortable with using computers onstage? In short, our desire to push the envelope overcame our trepidation, but there were also technical reasons that made that decision easier to stomach. In late 2010, I gave in to my curiosity and I bought a copy of Ableton Live. Quinn Raymond (Cue the DJ) and Asif Maroof (DJ Amni) had been urging me to try Ableton for a few years. After a month or so, I had learned the ropes with Ableton and began working on a live looper (described in part one of this series). I found that the Ableton Looper instrument stored its samples in memory, not on disk. This is huge, because as I mentioned, I have no confidence in conventional hard drive reliability onstage. So once Ableton Live is running, there is very little need for hard drive access. We have actually never had Mac OS X crash onstage, though Ableton has crashed a few times during practices (from a memory leak bug that Ableton appears to have fixed). Also, solid state drives have just come within price reach, so I could see a path to even better reliability coming soon with a switch to a MacBook Air, for instance.

Laptop Folk

As soon as I had my head around Ableton Live, I came to see it as a modern folk instrument. Tim Bartlett and I had a long conversation (during my birthday party, actually) about what folk music actually is, ending with agreement that the laptop has become the folk instrument of choice and that folk music includes The Grey Album and video mashups just as much as it includes Bob Dylan and Bonnie ‘Prince’ Billy.

Design Goals

In early 2010, Ghost Ghost also released No Clothes on Ragged Island, which was the band’s first serious exploration of analog synthesizers and other electronics. Kevin and I became adamant that electronic music would become further infused into our sound, and we thought for a long time about what that would sound and look like. A major deficiency of most electronic music shows is that they are no fun to watch, just guys pushing buttons on devices you can’t even see. One of our goals with the Multilooper was to create sound loops in real-time, in a way that the crowd could see and understand.

I perceived from the beginning that using off-the-shelf hardware and software would be the fastest way to bring Multilooper to life. However, I have been working with computers long enough to know that custom hardware and software is the best way to streamline the user interface and eliminate complexity. It was decided that version 1 of the Multilooper would be prototyped and built off-the-shelf in the interest of time. Using off-the-shelf components like Ableton, Max For Live, and generic MIDI hardware allowed me to focus more on the functionality than the intricacies of the hardware (e.g. an Arduino board).

Kevin had built his wall of keyboards (Nord Electro, Moog Little Phatty, and Alesis Micron) augmented with his own loop hardware (Electro-Harmonix 2880) and drum machine (Adrenalinn). Because these devices all understand MIDI, we wanted to sync tempo, meter, and start/stop between the Multilooper and Kevin’s rig.

Also, Mark Christensen is, um, fond of delay, so we wanted to get his delay boxes and loopers in sync as well.

Tim Bartlett, our video maestro, was already using a laptop with VDMX to control the live video projection, so another goal was to provide his video rig with data about the sound component of our show. At a minimum, tempo and meter were requirements, which were easy to transfer via MIDI. I’ve always wanted to get more performance data to Tim, possibly even including motion data about Charlie Kemmerer’s onstage painting as well, but so far that has not happened. We are busy people in a busy band.

A side goal was to implement live video looping that is time synchronized to the audio loops. This could be done by sending performance data to VDMX, or within Max For Live itself using Jitter, the built-in video/graphics system for Max. Again, this hasn’t happened yet.

The design goals as a list:

  1. Create sound loops in real time, in a way the crowd can understand
  2. Use off-the-shelf hardware and software wherever possible
  3. Send sound performance data to other audio rigs
  4. Send sound performance data to video rig

Version 1; Pure Data; SXSW Interactive

Ableton Live did not make it into the practice room until January 2011. It was around this time that we were invited to perform at South By Southwest Interactive, the computer/game/DIY part of the very large SXSW festival franchise. After a few months of experimentation, I rolled my work up into the Multilooper, putting the whole thing together over a weekend using Ableton Live, Max For Live, and a host of other pieces that are described in part one of this series. I was surprised at how quickly the first version came together, especially since I had not programmed in Max for several years at that time. Ghost Ghost practiced for a week or two using Multilooper and we found it surprisingly stable. As an aside, this was also the first time we practiced using Skype to connect with Mark Christensen in Vermont, and we actually had Mark perform onstage with us at SXSW via Skype as well.

Despite the fact that time was short before our performance at SXSW, I coded the Multilooper in both Pure Data and Max For Live to compare the two platforms. I decided to do this primarily because Pure Data accepts the MIDI Program Change messages that come out of my foot controller, while Ableton Live filters these messages. In other words, I had a programming need that Max For Live could not address, so I thought I might as well code the whole thing in Pure Data. Unfortunately, I had some reliability problems with Pure Data, and I generally prefer getting as much functionality as I can into hardware rather than software, so I decided to use a MIDI Solutions Event Processor to convert the MIDI data into Note On messages before the MIDI data ever got to the laptop. I still had to rely on Max For Live for the rest of the functionality I needed.

Complexity and Setup Time

As you can see from part one of this series, the system I developed relies on many software elements (e.g. Ableton Live, the software mixer provided by the M-Audio Fast Track Ultra 8R, Mac OS X itself). If one setting in one of these software elements goes awry, the whole system can stop working and take a significant amount of time to diagnose and correct. This time risk is a very real concern, especially because the average changeover time between bands in NYC clubs is 15 minutes, which is not even enough time to physically move one band’s gear off the stage while moving another band’s gear on.

In addition, there are many cables to connect and devices to turn on. A single cable not connected (e.g. the MIDI cable that connects the foot controller to the Event Processor) can likewise derail the entire system. Again, time risk. At best, the fastest I have been able to set all this up consistently is 20 minutes.  That’s too slow by half. These are the problems that keep me up at night. But in return for all this complexity, I was able to bring multitrack live looping into our stage show using off-the-shelf hardware and very little custom software.

The Future

Obviously, the system is too complicated and needs to be refactored to a self-contained, purpose-built system. In my ideal world, a Multilooper would fit into a stompbox, and that stompbox would be networked with a master control device. Part three of this series is a spec of this ideal system.

Multilooper, Part 1: Overview

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 three-part series describing Multilooper, the multitrack live looping system I have developed over the last few months using Ableton Live and Max For Live.

The impatient can download a ZIP file containing the Ableton project file, the Max For Live patch, and relevant documentation here. 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. Information wants to be free!

In short, Multilooper is an integration of the following:

If this sounds like a lot of gear, that’s because it is–we carry a 4U rack of gear with us onstage now. Obviously, you can take my setup and modify it for something much simpler if you don’t need the fancier features like 8 channels of input and output.

Connection Diagram

This diagram shows how most of the hardware is connected: 

Two Channel Guitar

This 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 List

All 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:

  1. Guitar channel 1 – Magnetic pickups from guitar via output from DI box channel 1 on the pedalboard
  2. Guitar channel 2 – Saddle transducer pickups from guitar via output from DI box channel 2 on the pedalboard
  3. Floor tom mic – a clip-on Sennheiser e604 microphone
  4. Snare mic – a second clip-on Sennheiser e604 microphone
  5. Vocal mic – a Shure SM58 microphone, which I sing into

Output List

All 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Floor tom – Live and looped floor tom, to house sound system
  6. Snare – Live and looped snare drum, to house sound system
  7. Vocal – Live and looped vocals, to house sound system
  8. 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 Controller

I 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 Controller

My 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 Processor

The 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 Instrument

I 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:

  1. the virtual loopers get a “record” command when you push the “stop” button on the global transport
  2. a virtual looper might get a record message when you issue a command for a different virtual looper
  3. 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

C’est la vie until the Live Object Model gets full Looper functionality.

Read Further?

There you have it, a relatively quick overview of how I do all that live looping. If you’re still curious, please keep reading. Part two reviews the design goals and problems experienced while creating Multilooper, and part three explores my goals for the next generation of the system.

This Land is Your Land

Songs stuck in my head on April 12, 2011:

This Land is Your Land” – Woody Guthrie
Complete with the bit about the Private Property sign (“The back side it didn’t say nothing / That side was made for you and me”).

Thunderstruck” – AC/DC

Let’s Not and Say We Did” – Silver Jews

All Men Are Liars” – Nick Lowe
I got rick rolled a couple days ago by Kevin Peckham.

Some Memories Just Won’t Die” – Marty Robbins
Depending on who you ask, my Dad’s favorite singer was either Marty Robbins or Roy Orbison.

Carmen” – Marty Robbins
This is my Mom’s favorite Marty Robbins song.

Stuck Between Stations” – The Hold Steady

“Policeman” – Pearl Jam

This has been Stuck Between Stations.  Tune in again tomorrow, probably.

South by Southwest… Interactive

Dorkbot and Ignite Austin have invited Ghost Ghost to perform at 2021: A Vision of the Future!  By all accounts, it’s time to get weird. My stage setup will include a ton of live loops created using Ableton with Max for Live–there will be much trickery.  I’ll be looping drums, guitar, and my own voice.  Guitar will be processed by the Space Shuttle.  Look out Austin, I’m bringing multiple time-synchronized copies of myself.

Hello, Sweethearts, the F-Bomb

[Editors note: This was a private letter sent to musician David Lowery in response to this post on his Facebook page.]

Mr. Lowery:

I’d like to start off by saying thanks for writing the F-bomb piece on Facebook. Not only did I laugh out loud, but I’m right with you, and I’m proud to be a fan of your work.

Second, I feel I have to apologize for not getting into Camper Van Beethoven when I first heard of you guys in 1990, when I was in the sixth grade. My friend Paul has always had impeccable music taste and it’s a inexcusable that I got into everything else he recommended, but didn’t get around to hearing CVB until 2010. CVB and Cracker have been my soundtrack for the last few months as I’ve worked from Telephone Free Landslide Victory through Kerosene Hat. I am stoked to death to see you guys here in NYC on Friday. I’ll be the guy in the werewolf costume. Not that I have a werewolf costume, but it’s the thought that counts.

Third and last, I’ve been reading your blog for a little while now, and I’m hoping you eventually get to write up the song “Sweethearts.” I’m sure people say things like this to you all the time about totally different songs, but damn that song is a masterwork. In particular, I think now is a good time to write about that song, given your recent comments about the hate-mongers and the half ass response of “well let’s not criticize anyone, it only makes the situation worse” that seems to dominate the media, and has even sucked-in some otherwise intelligent people. In my opinion, what makes “Sweethearts” a masterwork is that it effectively divorces Ronald Reagan–the person struggling with a crippling disease of the mind–from the fact that he was mentally unfit to be the executive in chief of a nuclear-armed country. I’m sure you caught flak from people who thought what you wrote was a potshot at a sick man. While I’m sure you realize that you can’t criticize the President for being ill, you can and should and did face the fact that our government cannot allow a situation like this persist. And you must say it, even if you are demonized for it by people who are not able or willing to make that distinction. It took balls and grace to write “Sweethearts.” Even in times of grave suffering, we all must be able and willing to stand up and admit that something is wrong. I hope that many others will join you in standing up to the violent rhetoric and the fringe lunacy that has taken over our news entertainment and our political progress. I applaud your courage, both now and twenty years ago.

Have a great show, and thanks again.