Audio Routes: A new system for multi-channel routing in Ableton Live


    Multichannel routing in Live with Max - the Audio Routes Max For Live system

    With the release of Live 10, an important (and previously unavailable) feature was added to the Live API: the opportunity for a programmer to access audio anywhere within a Live session through a Max for Live device. This opens the door for many new M4L options, including audio spatialization, side-chaining and massive multi-channel audio routings.
    In order to make this new functionality more easily accessible, we’ve created a free set of Max for Live-based tools called Audio Routes, provided as a set of devices, example Live Sets and detailed documentation.
    This package is targeted to both Live users and Max for Live programmers, and can be seen as either ready-to-use devices or as examples for creating your own multichannel devices. It comes with more than ten pre-built devices and a series of Live sets that show these devices in action:

    Example: 01 Audio Routing Example.als

    This Live set embeds a device named Audio Routing Example that serves as a base for the main principles that need to be well-understood in order to use (and program) multichannel devices in Live:
    The device resides in a central channel location in the Live set, and shows a number of possibilities using the Live API for audio routing from within any M4L device. With this device, you can:
    • grab audio from Live tracks into the device,
    • alter or re-route grabbed audio,
    • send the re-routed audio to other tracks in Live.
    You’ll notice that the inputs and outputs have to either be Live tracks or hardware I/O connections: that’s a required constraint in the Live API. In this device, you can see that the routings are processed through dedicated popups - which resemble the routings popups in regular Live tracks.
    There is a second constraint of routing in Live - and, by extension: routings have to be set as stereo pairs. That’s why you will find that the routing options are all labeled in pairs.

    Example: 02 Audio Send Receive.als

    To illustrate the possibilities offered by the routing features within a M4L device, two devices are provided named Audio Sender and Audio Receiver:
    These are very simple devices that each have the same popup as we saw in the Audio Routing Example device, used as audio output routing in Audio Sender and input routing in Audio Receiver. You may ask: “Why use stereo routing in a device rather than using the regular Live track routing.”
    The answer resides in the question itself: Live’s track routing does not allow you to choose the routing location from within a Live track.
    If you look closely in the picture above, you’ll see that, in this case, the audio is grabbed (with the Audio Sender) and sent before the Echo device - thus before processing the delay effect.
    The un-processed audio is then sent to the “2 Audio” track, to be used for any other purpose, free from the delay effect:
    Similarly, in the “3 Audio” track, audio is grabbed at the output of the “1 Audio” track (our delayed effect) using the Audio Receiver device, and inserted into the local signal chain.
    Notice that the remote signal is inserted after the Resonators effect, so it is not affected by that process. And since the device has a “Thru” option, both signals are mixed together at the output of the track.
    These handy devices can be very useful in some situations where you need to grab or insert a part of an existing audio chain without having to deal with the sole routing of a Live track, and without having to break an existing work.

    Example: 03 Side Chaining.als

    Now that we know how useful it might be to freely route audio, let’s use our devices for a classic production effect: side-chaining. Often used for compression or gating purposes (like in the native Compressor or Gate devices) side-chaining may be used in the context of a M4L device - thanks to the routing features that we’ve seen.
    We’ve created two devices that are spectral effects, and use side-chaining principles to process a local audio signal using a remote audio signal:
    The Source Filter device filters the local sound - in this case named “Harmony” - using a remote sound - named “Rhythm”. The spectral process decomposes both signals into frequency bands, detects the amplitude of each band, then multiplies the amplitudes of the “Harmony” signal with those of the “Rhythm” signal. This results in having the Harmony signal “rhythm-isized” by the Rhythm signal.
    Since Harmony and Rhythm are meaningful names (for our example), it is up to the user to provide a harmonic signal for the Harmony path, and a rhythmic - or noise - signal for the Rhythmic path.
    When we insert the remote Rhythm signal into our device, we use the same input routing popup as before. In the example shown here, the audio being grabbed as rhythm resides in the Rhythm track of the Source Filter group.
    The Cross Synthesis device works in a similar way, except that instead of filtering a sound with another sound, both sounds may have their spectral content (frequencies and amplitudes) exchanged and tuned:
    This device has a two-dimensional slider that performs a spectral mix between both sounds (A & B). The X dimension represents the mix of spectral amplitudes between sound A and sound B, and the Y dimension represents the mix of spectral frequencies between A and B. Adjustments to the Convolution control allows you to tune the mix between sound A and B in both amplitudes and frequency dimensions simultaneously, resulting in spectrally-morphed sounds.

    Example: 04 Audio Sends.als

    Have you ever wanted more Sends and Returns in your Live set? Return tracks are special tracks in which you typically place audio effects. You then send some amount of each regular track’s signal (using the send controls) into one or more of the different Return tracks - and the effects they contain. Effects in Return tracks are often “common” effects, such as delay or reverb, and are shared among the sending channels
    Live only offers twelve of these Return tracks, which is normally sufficient for standard audio production. But you may find this to be a problem if you use the Sends/Returns as audio outputs for multi-speakers setups - such as theater productions - in which you need to adjust several speaker volumes for a given track.
    The Audio Sends device lets you create additional audio busses. In the example set, each of the tracks (named FX1, FX2 … FX8) has a particular effect in its audio chain. By inserting the Audio Sends in any other track, each of these FX tracks become available as a target. You’re free to define up to eight targets, using the routing popups, and adjust the amount of a tracks’s signal using a gain slider.
    This device can be very useful if all available Send/Return chains are being already used and you would like to add a couple of additional “sends” to your Live set.

    Example: 05 Audio Matrix.als

    The Audio Matrix device is an extended version of the very first Audio Routing Example device described earlier in this article.
    The Audio Matrix device lets you capture 16 stereo signals from Live tracks, and freely route each of these stereo signals to any other Live tracks, using a matrix to connect the inputs to various outputs. In order to make it easier to control, the editing window is separate from the core device, and can be set as floating or non-floating:
    The routing popup let you select the source and destination for each stereo channel, and each of the inputs and outputs has its own gain scaler.
    In the example set, 8 stereo tracks (“1 Audio”, “2 Audio”, …, “8 Audio”) play some audio, but the track output is set to “Sends Only”. This means that no signal is output to the master Live mixer. The Audio Matrix device captures the audio of these tracks, and the 8 first outputs of the device are set to target 8 “output” tracks (“10 Audio”, “11 Audio”, …, “17 Audio”). With the current settings, there are no input-to-output connection, so no audio is heard.
    Clicking inside the matrix display will connect inputs to specific outputs, and provides a completely flexible audio routing system for the selected audio tracks.It is possible to create presets for the routing of the matrix by clicking in the slots at the bottom of the matrix. By default, presets slots are empty. Click on a preset number and continue editing parameters. All values are then saved into that slot. Click on another slot to start a variation of the current state of the device.
    This allows you to change complex routings for different situations with a single click. By adjusting the Ramp slider, it is also possible to create smooth transitions between one preset and another, providing for more musical changes even in the most challenging routing situations.

    Example: 06 Panner.als

    When you start thinking about multichannel audio, notions such as sound spatialization or “surround sound” come to mind. Using the routing tools we’ve used in the previous devices, we’ve created a device that provides solutions to those who would like to mix audio in Live using more than two speakers.
    The Panner device allows for multichannel panning of a stereo source from a Live track to a planar (2D) sound system with up to 32 speakers.
    The position of the sound source is represented by a cursor in a plane, and speakers are represented by “nodes”.
    The panning technique used here is a distance-based algorithm that calculates the amplitude of the source for one given speaker (node) relatively to the distance between the cursor and the center of the node, and to the size of the speaker. If two or more speaker’s nodes overlap, or if the cursor is placed at an intermediate position, the amplitude of each speaker will be weighted accordingly, producing a balance between speakers. This is how we create a sensation of sound localization within the sound field.
    The 06 Panner.als Live set embeds three audio tracks that each contains a panner device. Each panner device will send its (panned) multichannel audio - in pairs, remember - to the different Return tracks. Each Return track has its output sent to a pair of 16 possible speakers (in our example), and one additional Return track is used for a LFE (subwoofer) channel.
    The Panner device has a floating window where you manipulate the virtual position of the sound source using your mouse:
    In the example, spatialization is performed for a 5.1 speakers system. Note that, for this kind of setup (with a central speaker), we’ve adjusted the order of channels in respect of Live’s stereo design (L-R-Ls-Rs-C-LFE) rather than trying to match the typical industrial formats (typically L-C-R-Ls-Rs-LFE). So channels 1-2 output the L-R signals, channels 3-4 output the Ls-Rs signals, and channel 5 outputs C signal (with channel 6 going unused). The LFE channel has its own (17) channel number.
    Note: VU-meters in the panner may differ form the VU-meters in the Return tracks, as we’re playing 3 panned sources together. The Panner’s meters reflect the panning in the track it is processing, and Return meters reflect the global mix of each panned track.
    You get to choose or modify the routing that you want. To facilitate the construction of a sound field in a given format (5.0, 7.0…), you can load some typical speakers configurations using the Presets menu:
    Controlling the position of the sound source
    The orange source cursor initially responds to polar localization controls such as Azimuth (Az - which is measured clockwise in degrees toward the vertical axis, with 0° in front of the listener) and relative Distance (Dist - which is measured from the center of the sound field that represents the position of the listener).
    Polar coordinates are more convenient when controlling the position of the source using automation. Cartesian (XY) coordinates may be more appropriate for MIDI-mapping of a 2D controller, or using a pair of simple MIDI faders. By switching the Mode from AD (Az/Dist) to XY, it is possible to control the position of the source using cartesian coordinates.
    The Width parameter controls the width, in degrees, of the stereo image of the input sound, around the position of the cursor. Since Live tracks are stereo, the panning needs to be applied to both left and right channels of a track. The left and right channels of the input sound are represented by two additional cursors, which you may decide to display or hide. Setting a width of 0° will “mix” the two input channels - i.e. the same panning will be applied on both channels. A width of 180° will apply a mirrored image, spacing the left and right channels +/-90° from the position of the cursor.
    Panner LFO
    Instead of having to control the position of a sound source using either automation or MIDI controllers, you may want to use an automator such as a LFO, which would play for you some basic shapes of movements. The Panner LFO device lets you control the Azimuth and Distance remotely using the Live API mapping features.
    Movements are based on a full rotation of the source around the listener, and cyclic or random variations such as 8-figures (crossing), acceleration, deviation, etc. You may link the rate of the rotation to Live’s tempo for synced applications.

    Example: 07 Rand and Step Panner.als

    Following the idea of automated spatialization tools, we’ve provided a couple of related devices. The Rand Panner and Step Panner devices let you apply rhythmic amplitude envelopes on the incoming sound. Each of the enveloped signal can then be sent to a different output channel, resulting in “rhythmicized” sound spatialization.
    Rand Panner
    When the Run parameter is engaged, an internal metronome (running either in sync with Live's transport or in a free fashion) triggers a random choice of one or more output channels. When an output channel is selected, the system produces an amplitude envelope, which is used to control the volume of the incoming audio into that output channel.
    The shape of the envelope can be tweaked using simple parameters such as Time and Slope, and may also be slightly - and randomly - modified on each metronome tick.
    The rate of the metronome may also vary, as well as the gain of the amplitude envelope. Several in/out connections may be selected together using the Voices parameter, and each output can have its gain adjusted separately.
    All together, the system creates a randomized rhythmic panner, one that lets the incoming audio either 'float' or directly jump from speaker to speaker.
    Audio output routing is set in an additional pane that you may display using the Routing tool icon:
    Step Panner
    The Step Panner device is similar to the Rand Panner device, except that provides a more precise sequence of specific routing steps.
    The device behaves like a step sequencer whose steps each represent a routing of the incoming sound to a specific channel, with a specific gain, duration and shape of amplitude envelope:
    As with the Rand Panner, output routing is set in an additional pane:
    For both Rand and Step Panners, we've added a way to switch from one configuration to another: patterns. Patterns each contain a snapshot of a given configuration and may be automated or MIDI-controlled. Patterns can also be freely copied from one device to another device.

    Example: 08 Creative Routings.als

    Now that we’ve seen all these spatialization tools, you may say: “What if I have only two speakers in my home studio? Is there any way I could use these devices?”.
    Actually, everything we’ve discussed is related to audio routing. Could we use the Panner and the Panner LFO, Rand and Step Panners for something like managing sound treatment in a more organic fashion - without having to worry about speakers, surround or multichannel audio rendering?
    In this example Live set, we’re using the Return tracks in a classical sense, i.e. the Return tracks contain audio effects and are routed to the Master track.
    By controlling the routing of a sound source using the Panner, Rand Panner and Step Panner spatialization devices, we can feed each effect in a very versatile way:
    • XY panning with or without overlap, controlled with MIDI gesture, or looped automation
    • Random or sequenced patterns, with rhythmic or smooth transitions
    There are many ways to use this routing to your advantage - no matter how many speakers/outputs you use. Try them out (download now from maxforlive.com!), and make sure you share your results with us!

    • Nov 14 2019 | 6:07 am
      BOOOOM!! Awesome!
    • Nov 14 2019 | 7:44 pm
      Too bad that the Panner device's "Open" button isn't a toggle that closes the window too (and that could be key/midi mappable). Not a complicated change, except for those who don't know Max/M4L programming.
    • Nov 14 2019 | 7:49 pm
      The "Audio Sends" device has a parameters setting issue. If you go to the "Sends2" bank on Push, you'll see that the "Gain-7" and "Gain-8" are incorrectly available twice. So they're missing their "Enable-xx" parameter.
    • Nov 15 2019 | 1:50 pm
      Fantastic! Exactly the one major thing Live has been missing to date.
    • Nov 20 2019 | 1:37 pm
      Really great tools thank you. Yes, that was missing in Ableton product. Any idea why Audio Matrix plugin takes so much CPU ( quite 10% each plugin on my computer ) ? Controlling Audio Matrix presets (with map8 for example) can make until 80% peaks on CPU.
    • Nov 27 2019 | 2:06 pm
      Hi, there's a new version of the devices available at maxforlive.com that should, at least partly, fix the following issues: @Valiumdupeuple: the Push names are now fixed in Audio Sends, thanks for noticing @Kamal.h: the CPU issue with the Audio Matrix should be less prominent, since the automation for the Presets parameter is now deferred to low priority
      Additionally, each slider in all devices now respond to clip modulation.
      Thanks all for your feedback, and I hope you're having fun with the devices.
      Manuel
    • Jan 10 2020 | 10:18 am
      Hi Audio Routers,
      A new 1.0.4 version of Audio Routes is available @ https://maxforlive.com/library/device/5830/audio-routes. In this version devices sending remote audio (Panner, Rand Panner, Step Panner…) now have a solo feature, and respond to solos from other tracks before sending their multichannel audio.
      Happy multichanneling,
      _M
    • Jan 10 2020 | 2:38 pm
      This is great news Manuel, thanks!
    • Jan 11 2020 | 3:08 pm
      Great! Already using these tools.
      I tried quick to add a mira.frame to the panner but i didn't work. It would be absolut fantastic (!) to have e mira version of the panner with each frame named after the track the panner sits on.
      Thanks a lot //and am I the only one having this bug with the 1.0.4 version?
    • Jan 11 2020 | 11:15 pm
      Hi Lee, the nodes object used in Panner is not supported by the mira.frame object, afaics. However you could perhaps try a combination of mira.multitouch and mira.mt.fingers, and control the X and Y dials from there? As for the "bug", you'll need to update to Max 8.1.1, as all routing devices now use live.comments objects (synced to Live's colors) instead of Max comment objects in previous versions. I hope this helps, Manuel
    • Feb 17 2020 | 7:16 pm
      Hi and thanks for this great tools !!!
      I just wanted to report a recall bug for panner device. Here is my explanation : 1) I load a panner device and I set up my speaker configuration and save it with its own preseter 2) I save my live set and quit Ableton 3) I load my live set again 4) My speaker configuration is not recalled well.
      Thanks for your help !!!
      Best Olivier
    • Feb 20 2020 | 11:51 pm
      Thanks, Darwin, for a clear presentation of Manuel's fantastic new work!
      I should probably caution people against using the Subwoofer section of the Panner to render out LFE stems for surround mixes.
      The LFE channel (the .1) often causes confusion. This channel is for Low Frequency Effects, like earthquakes and explosions. The subwoofer speaker usually serves two purposes. The subwoofer does receive the LFE signal, but it also serves as a common subwoofer for the low frequencies of all the other speakers. This is because–although the other five channels (in a 5.1 mix) are full-range–for practical reasons most sound systems have only one subwoofer, and a system called bass management mixes the low-frequency content of the five speakers together with the LFE signal. Although Manuel's panner makes it possible to do bass management in Live, it is best to do that in the sound hardware (audio pre-amp or subwoofer electronics), to avoid the risk of doing it twice and since it is, after all, hardware-dependent.
      Check out how a typical subwoofer has connections so that it can be inserted between the multichannel outputs of your interface and your speakers. That way, it can do bass management that is matched to the crossover frequencies of the specific sound system.
      NEW:
      After posting this I realized that many people don't understand why it's not a good idea to do bass management in the DAW, so I'm adding a couple of references: https://www.dolby.com/uploadedFiles/Assets/US/Doc/Professional/38_LFE.pdf "Bass management is part of a playback system; it is not part of the mixing process." https://www.kenrockwell.com/audio/bass-management.htm
    • Mar 09 2020 | 8:59 am
      Hello. Same thing as Olivier Valcarcel, 2 posts above. When i reload a track with the Panner device the good configuration of the speakers is not recalled well, it's just a mess of nodes. To avoid that i close my track (without saving) and open it again. Now the panner device load the configuration i had already done. It's not a long term way to work with so, help please. I have Windows 10 and Live 10. Pierre.
    • Apr 01 2020 | 12:58 pm
      Hi Multicanal du Midi & Olivier Valcarcel, I can't reproduce the issue here on my Mac with Mojave OS - and don't own any Windows machine: if I follow Multicanal du Midi's steps, everything is reloaded correctly. I'm using Live 10.1.9 and Max 8.1.3 (latest versions). Could you try first to upgrade Live and Max to their latest versions? Then could you create some simple example using the Audio Routing Example.amxd (included in the Audio Routes pack) instead of the Panner, reproduce Multicanal du Midi's steps, and see if the issue also occurs? If not, proceed with Rand Panner.amxd and/or Step Panner.amxd? Thanks for your patience.
    • Apr 01 2020 | 2:33 pm
      Haha, "Multicanal du Midi", I love it! ;-)
    • Apr 01 2020 | 5:06 pm
      Hey Manuel74, thanks for your answer. I just upgrade the latest release of both Ableton and Max and it's seems to work like a charm. I'm really glad to know that. I'm involved in many live surround projects and it will be my go to devices for sure!!! Thanks a lot for this amazing job.
      All the best Olivier
    • Apr 02 2020 | 12:00 pm
      Thanks Olivier, that's a good step forward! @Multicanal du Midi (best spatial franco-French pseudo ever), could you give it a go?
    • Apr 10 2020 | 8:00 pm
      These tools are great! I'm loving the opportunities for more complex spatial mixing & routing inside Ableton. When I am working away thfrom my studio though is there a binaural encoder that i can use to get the virtual multichannel experience in my headphones? How does that routing into the binaural encoder work?
    • Jul 12 2020 | 6:12 pm
      Another bug here. Audio Senders do not work inside of chains without first initializing them outside a chain. To reproduce: Initialize or save an Audio Sender in a Chain. When you load that rack fresh and select outputs, nothing will happen. Move the device out of a Chain, outside of any Rack. Output will start sending. If you move it back in to a Chain at that point it will work, however it will not work again if you reload the Set. Live 10.1.15 using bundled Max 8.
    • Jul 13 2020 | 12:54 pm
      Thanks for the report. Well, not really a bug, rather a missing feature - the devices were not initially designed to work within racks. The "bug" has to do with the way the devices interact with the Live mixer device, which differs wether the device is loaded inside a track or inside a rack. This feature should be added in a future version, though.
    • Jul 13 2020 | 7:46 pm
      @Manuel74 Really appreciate your response! Is this something that could work now? Or is it a limitation of the API / Live? For example if I knew what I am doing in M4L and just edited the device, could I conceivably fix this?
    • Jul 14 2020 | 10:29 am
      For a quick fix, here are some steps to follow for all devices that use Live's mixer device: Load the device in Max and find a subpatcher called Gain&Pan:
      In that subpatch, replace the join object with a pak object:
      Then save the device. That should fix the issue.
      The issue is that the amplitude of the incoming signal is set by a combination of parameters from the Live mixer device (volume, activator, etc). In the case of a Live track, the device is notified of those settings. In the case of a Live rack, it is not (or partially). As the above join object has no initial value set, the amplitude is always 0 in the case of a Live rack. Using a pak object with init. values set to 1 (partially) solves the problem.
      For a longer-term fix, if we want to be consistent, we'll need to make the devices sensitive to mixers in both contexts and to determine wether a device lives in a track or in a rack - or even worse, in a rack inside a rack (inside a rack...). Therefore we'll need to update the way the devices interact with the Live API - which might take a little while before finding the right mechanism.
    • Jul 14 2020 | 7:18 pm
      @Manuel74 You are the absolute best! Thank you so much, that worked!!! I can see why that would be difficult, since you need to observe the muted/volume/panning states of all the chains above the one that the device exists in. I'm fairly confident I could do it in JS if you guys would want help with that. Feel free to message me directly. The other problem I'm having is that when I loop-back and record audio to the same track, there are weird artifacts when I start recording. When monitoring there are no artifacts, only when the recording starts. I think can work around it using a different track for the input, but just FYI. In this image, "Bass" is the track to which I am looping back audio from LOOPER RACK, which is also on the "Bass" track. The goal with this is to be able to overdub audio from the previously-playing clip into Live clips via a custom M4L looper I have made.
      Thanks again @Manuel74 you are a godsend!
    • Jul 17 2020 | 9:52 am
      Hi there. I am having trouble using the BrowseRouting bpatcher. I made a device with it which worked fine but when I loaded live the next time all the menus were gone. I saved the bpatcher from the example file and linked to that file in the bpatcher in my device. Am I doing something really stupid? Probably!
      thanks
    • Jul 30 2020 | 11:01 am
      Ive implemented the browse routing patcher into a couple devices and its worked fine but im trying to see if I can run the browserouting sub patch as a bpatcher within another bpatcher... what are the exact requirements for the patcher? its says it makes the inputs available to the plugin object in the parent patcher, is that the absolute parent or relative parent patcher? can I have plugin 1 2 and plugin 3 4 as seperate objects? If i was to define the patcher myself (without using bpatcher arguments audio_inputs 2 for example) how would I go about that? Also, very keen to see an update for the patcher to work within racks. PS is it possible to have something similar to this for midi within m4l devices?