Transform Incoming MIDI to control Looper - MIDI Data on Audio Plugin?
Hey folks, I have an old latching-type footswitch (Boss FC-50) and I have had some success reading the incoming latching PC data and using it to change the Ableton Looper's State parameter.
Right now it works if I have my M4L MIDI device on a MIDI channel, and then I hard-code the track and device IDs of the Looper on a separate Audio channel. This is fine when I have time to get things set up, but I'd like to take it one step further - create an Instrument Rack that contains the Looper and the M4L device to transform the incoming MIDI PC data.
So I'm wondering what the best way to do this might be? Can I create an M4L Audio device that can still read the incoming MIDI PC data from my external footswitch and bundle it into a rack?
Is it possible to read external data on anM4L Audio Device?
The other option I can think of is to use my M4L MIDI patch and build a UI that spawns a new audio track, maybe immediately to the right of the MIDI track, and then hard-code the track ID and go from there.
Is my first idea possible? Any gotchas with my second idea? Can you think of any other approaches, where the main goal is zero or low configuration required in the moment to get a looper running and responding to my old hardware?
Thanks in advance!
DJV
Well, maybe I can answer at least 2 out of 3 of my own questions here:
Ableton Live 11 added some new MIDI routing capabilities such that M4L Audio Devices do get to read MIDI in, but unfortunately I'm still in Ableton Live 10 world.
M4L cannot create / instantiate new devices.
So.... other than upgrading to Live 12, (I'm still on 10), any other ideas come to mind?
If you're not on an Apple Silicon machine, you could use [imp.midiin] to get MIDI in your audio device independently from Live-handled MIDI.
But I'm wondering if you could simply use the MIDI mapping feature of Live to map your footswitch to the looper. Am I missing something?
is your problem to address IDs of that looper, or what exactly ?
In live 10 there are also other options to send control parameters
like OSC send-receive etc.
or direct midi input with imp.midi externals.
Which could be inserted in 1st device in a track,
then auto address parameters of next device.
Interesting responses - thank you for taking the time!
I AM on Apple Silicon, so perhaps imp.* is not an option for me?
I've been exploring options with this legacy hardware - there are MIDI transforming tools, like Bome's that I can use to translate the incoming latching PC data into momentary CC on/off data that Ableton requires in order to map to device parameters. So I have options.
I wanted to find a way to do it all internally within Live, and to be able to set it up so that I can have a nearly zero-config drag-and-droppable option to create a looper track and leverage the external MIDI data.
It's frustrating that I'm so close.
My initial M4L MIDI device translated the PC to CC, but as I learned, you cannot use that new MIDI stream to map to parameter control.
So the next option was to use live.object and set those parameters directly, but that's where I'm running into this MIDI track vs Audio track thing (that's not a thing in 11 arg).
I AM on Apple Silicon, so perhaps imp.* is not an option for me?
Sadly not for now :(
Sorry to insist, but did you try to just MIDI map your footswitch to the record button of the looper using the builtin MIDI mapping feature of Live?
Live 10 is INTEL only , so imp.midi will run as well in rosetta
together with Live.
Sorry to insist, but did you try to just MIDI map your footswitch to the record button of the looper using the builtin MIDI mapping feature of Live?
Oh yes, of course - that was the first thing I tried, but I've known for a very long time that the footswitch will not work directly with Ableton's MIDI mapping feature.
The reason is simple: the FC-50 send Program Change data - it's designed to switch patches on MIDI synth and FX processing hardware. But Live is looking for either keypress MIDI data or Continuous Control CC MIDI data. And it's expecting momentary not toggle data. In other words, the FC-50 sends discrete PC messages, and Ableton wants momentary (on/off) data.
And again, transforming the PC toggle data into momentary CC data was pretty trivial using a simple MIDI Device with [midiparse], a tiny bit of arithmetic and send control. But, like I said, without doing some stupid external MIDI loopback routing, Ableton won't listen to the INTERNAL MIDI data coming from the device when you enter MIDI mapping mode.
Like I said... so close, and yet.....
[imp.midi] appears like it might work on Ableton Live 10 on Mac OS. A missing piece of information was how to install a Max External and have it work in Ableton: Unzip and drag the folder into <User>/Documents/Max 8/Library and launch Live. Quickly type "imp." and if it autocompletes, it's installed.
Note: on Sequoia at least you also have to negotiate the security sandbox a couple of times (once when you first use the node, again when you access the help file), but I just clicked the OK button each time and it worked (I wasn't actually expecting it to).
I think I'll be able to muddle my way through from here.
My remaining challenge is now:
whether grouped in a Rack with the Looper audio effect, or sitting to the left of it in the track's devices (without a rack), how to create a valid path that targets the Looper.
It boggles my mind (especially since they call it the LOM) that there are no traversal messages like getNext or nextSibling etc to target the next sibling. It also freaks me out that you get this path string that you have to parse / slice / regex in order to isolate an actual integer representing the track number and device number.
If anyone knows a trick, I'm very open to hearing it!
Thanks for the help, folks.
Now I fully understand your issue!
I don't think there is a working solution for Live 10 on an ARM Mac that would fit in one audio track. As you said, you're either good to use standalone MIDI transform tools (could be a Max patch!), or go with your MIDI track for footswitch + audio track for looper, or upgrade Live, or find another pedal, or hack the one you have with an arduino to make it output the MIDI you expect, or wait for imp.midi externals to be compiled for ARM Mac (you're not the only one).
Maybe it's worth asking David Butler the author, or if he's not willing to do it himself, maybe he would agree to publish the source and we could find someone else to recompile the externals on a ARM Mac. The package itself in under license CC-BY-SA, so there is a change he might accept to share the source.
source code
I don't have arm mac so can't compile it
You can freeze externals into your device.
make a folder and place your max patch or amxd and externals there,
then freeze and store.