midi control from a M4L device
Hi
first day of using M4L, using Max for years an' years though. I have successfully got MIDI note numbers into a Live synth, using either [noteout] or [midiout] within my device. However, I would now like to use my M4L device to control parameters in Live and I assumed [ctlout] would be the object to use, and although I see activity in the MIDI monitor VDU of the MIDI track, when I hit the blue "MIDI assign" button and move my fader nothing shows up. Any glaring mistakes in the simple patch attached?
Brendan
I think this is actually a limitation of Live. You can send notes from one track to another, but not CC values.
There's a few solutions. If you're on a mac, you can route out to the IAC bus, then back in. That should allow you to MIDI map.
Alternatively you can use live.remote, and live.object to access parameters via the API directly from the patch, no midi needed.
Hope this helps!
Thanks Evan
could I then also use something like LoopBe or MIDIyoke, or other virtual MIDI port (on Windows here)?
This seems like a major obstruction/limitation.
Brendan
ps
any pointers to [live.remote] toots/resources?
thx
. . .
answers own question: the reference pages
La-Z-Boy
Yeah loopBe/Midi ox should get you there as well. Check out the LFO device, or the envelope follower. Both have good quick implementations of assigning parameters to live.remotes
Back again
I've actually had some quick success adding M4L control to Live, using [live.path] and [live.remote~]; but the LOM reference pages are incredibly detailed and a little daunting (for me). Given that any Live set could contain ANY combination of devices etc, there cannot of course be a comprehensive list of device paths/ID's. If you have any idea of how to address a single parameter on a single device on a single track, I'd be very grateful.
thx again
Brendan
oops
is the LFO device a M4L example that I could hack?
Yes the LFO is easily hackable. And a good example of easy ways to map to parameters.
Here's a patch that shows some paths, and prints info about the paths to the max window so you can start to find your way around the API. Think of it as a hierarchy with the live_set at the top. The live_set contains tracks (children of the live set), the tracks contain devices (children of tracks), and the devices contain parameters (children of devices).
Evan
thank you so much man; perfect!
you've saved me many headaches
Brendan
It's not often I'm quick (or knowledgable) enough to solve a post around here :), so it was my pleasure, glad I could help.
Hi, here's some introductory material you might want to skim through - you can skip past the 5 links at the top (which are interviews) and then head down to the links below
cheers
Thanks Lee, that all looks fairly accessible. Nice find.
A colleague of mine at Stevens Institute of Technology NJ is also helping me out, and when I have a working example I'll post it here, with comments etc.
Brendan
Not a bad day's work everyone; solved this now, with the [live.object], [live.path] and [live.remote~] objects. Oh, and there's a helpful suggestion for alternative methods from Jan, here:
Brendan