Logic + Live » MIDI Routing
This is the 2nd of a series of articles about using instruments from Logic inside Ableton Live. These articles assume you own a Mac with Logic and Ableton Live.
This is a follow up to the first article "Live + Logic #1: Overview". Please note: when working with Live and Logic, it is very important to always start Live first, and once Live has finished loading, then start Logic. Otherwise Live will automatically run as a ReWire slave to Logic, which prevents the use of plugins in Live.
Note: This article was written back in 2009 so the screenshots are from older versions of the software. Things look a little different today but all the concepts remain the same, and you should find all these settings in roughly the same places.
About Virtual MIDI ports
OS X makes it easy for us to create virtual MIDI ports that can be used by any MIDI-aware application. These ports, called IAC (Inter-Application Communication) ports, allow us to route MIDI between applications.
One issue with these IAC ports is they can be used as both input and output in any application, and it's easy to accidentally create feedback loops. Although feedback is incredibly useful for processing audio signals, it's something to be completely avoided when working with MIDI. When you press a note on your keyboard, you don't want an infinite number of note-on events triggered!
With that in mind, I highly recommend adopting a naming convention for IAC ports which clearly indicate the purpose of the port as either an input or output for a particular application. Since we are trying to send MIDI from Live to Logic, I'm going to name the port "TO LOGIC". Feel free to name it something else, but keep in mind I'm going to refer to the port as the TO LOGIC port in these articles.
Creating the IAC port
Live's MIDI Setup
First we need to make sure we don't create any MIDI feedback loops with that TO LOGIC port we just created. We don't want any MIDI entering Live on this port, it is solely for sending MIDI out of Live to Logic.
- Open Live's Preferences
- Go to the MIDI Sync section
- Under MIDI Ports, ensure that the TO LOGIC port's Input is Off for Track, Sync, and Remote.
- The TO LOGIC port's Output should be On for Track, Sync, and Remote .
I'm going to setup 4 tracks for controlling 4 separate Logic instruments (one track in Live will control exactly one track in Logic). You can of course setup more or less tracks depending on your needs.
- In a Live Set, create 4 MIDI tracks
- Load an External Instrument Live Instrument into each of those tracks
- Set the first track's output to the MIDI port TO LOGIC on channel 1, the second track to the same port on channel 2, 3rd track ⇒ channel 3, 4th track ⇒ channel 4
- Audio From will need to be setup when we start routing audio from Logic back into Live, but the exact settings depend on the audio routing tool we use. I'll cover those options in the upcoming articles. In the meantime, keep this set to "No Input".
Logic's MIDI Setup
Let's create a multi-track MIDI session, where the channel of incoming MIDI messages determines the track that the message is routed to. In this way we will link the first external instrument track in Live (outputting to channel 1) to the first track in Logic, link the second external instrument track in Live to the second track in Logic, and so on.
- In a Logic project, create 4 Software Instrument (aka MIDI) tracks
- Set the track 1 to MIDI channel 1, track 2 to MIDI channel 2, and so on:
- Open the Inspector for each track
- Expand the second section (the section labelled with the track name, like "Inst 1")
- Change the MIDI channel setting from "All" to the appropriate number
- Enable MIDI multitrack recording
- Arm all tracks for recording
- Go to Settings ⇒ Recording
- Under the MIDI section, ensure that the box is checked for "Auto demix by channel if multitrack recording"
Now, if you add an instrument to one of the Logic tracks, arm the corresponding track for recording in Live, and play some notes on a MIDI keyboard, you should notice you are getting two notes for every key press! That's because both Live and Logic are listening to the MIDI input. Logic immediately plays the note it receives. At the same time, Live passes the MIDI messages through its External Instrument, Logic receives a duplicate note message, and proceeds to play the same note a second time. Obviously this is not desirable. Luckily we can reconfigure Logic to only listen to MIDI on the TO LOGIC port coming from Live:
- Go to Window ⇒ Environment
- Select Click & Ports in the upper left
- Delete the cable that goes from the Physical Input's SUM port to the keyboard, and replace it by connecting a cable from the TO LOGIC port to the keyboard
Ok! Finally, we have all the MIDI communications between these two programs setup. Try adding some instruments to the different Logic tracks, and you should be able to play each instrument by arming the appropriate track in Live. You can record some MIDI clips in Live and play them back and it should all work as expected. If it isn't working, double check all your settings since there were a lot of steps and it's easy to make a mistake.
Once things are working, I recommend you save your Live Session and Logic Project as templates that you can load up any time you want to use these two programs together. The last thing we want to be doing during a creative spurt is setting this up all over again.
In the next few articles, I'll be discussing various options for routing Logic's audio back into Live, which really completes this solution by allowing you to mix the track levels inside Live, route Logic's output into Live's effects, and bounce to audio clips in Live.
We'll setup the audio connection from Logic back into Live, in Audio Routing with Soundflower or the alternate approach Audio Routing with Wormhole
Notes Details of the purpose of Live's three different MIDI output types:
- Track is the only MIDI output type that's actually required to control Logic instruments.
- Sync is needed for tempo-synced LFOs and effects in Logic, which is definitely nice to have. Unfortunately, we can't use Live's sync directly because it uses MIDI Clock messages, but Logic does not support syncing to an external MIDI Clock. [Dear Apple: this is seriously lame!] All is not lost, I believe it's possible to send the MIDI Clock to a separate application that will convert the messages to something that Logic will understand. However, this is a complex topic that will need to be covered in a future article.
- Remote is for MIDI mapping parameters in Live to a hardware controller. It may not actually be needed for any of the communication between Live & Logic (I'm honestly not sure yet), but it doesn't hurt to enable it in case we find a use for it later.
Adam Murray, 2009
contact the author...