Can a max patch control transport of ableton?

Tim Canfer's icon

I am considering purchasing Ableton and Max4live and this is one of the clinchers... Specifically I would be looking to send to markers and looping various sections.

Hope you can help, Thanks
Tim

Noob4Life's icon

couldn't find anything directly about that in the docs:
https://cycling74.com/docs/max5/vignettes/intro/doclive.html
good question...
if it were possible it would be here:
https://cycling74.com/docs/max5/refpages/m4l-ref/m4l_live_object_model.html

i might try the "Song" properties('current_song_time' etc. and it looks like looping is in there, too, so you might not do markers, but rather reset the loop and current positionings creatively...)
maybe you could get a demo and try it all out?
or hopefully someone with more experience with that particular technique will answer, as i'm a bit too lazy/busy right now to try it myself...
(it's hard staying 'Noob4Life' but i do my best ;-) )

Tim Canfer's icon

Thanks Mr Noob4life - interestingly it may be better to use Reaper and somehow figure out how to send messages to the API.

Although where i start is another series of posts altogether, albeit on the cockos forum (great title!)

T-T-T-Tricky.

Noob4Life's icon

"T-T-T-Tricky. "

'It's tricky to rock a rhyme!'

and please feel free to just call me 'noob'(that goes 4 everyone!) :)
(or 'Mr.&Mrs. Noob' as I choose to remain 'unaffiliated' in a web environment ;)

Tim Canfer's icon

to rock a rhyme that's right on time.

Hence the current project!

Consider it done Noob.

xanadu's icon
ShelLuser's icon

To answer the original question: No, it seems you can't.

There is a transport object in Max which can be used to control the global transport. Yet when I try to control a rewire slave it you seemingly need to utilize the rewire~ object and send an int into its left inlet to start the (then) so called 'rewire transport'.

Fun thing is that the reference guide for transport (https://cycling74.com/docs/max5/refpages/max-ref/transport.html) does imply this to be possible.

(afaik starting a master transport on a rewire master also starts the transports on the slaves, not so here).

Anyway; when using the examples there in M4L it does not start Live's transport. Making me assume right now that this isn't possible.

EDIT:

And as usual when I'm relaxing with a beer I'm talking before testing..

Ok: the real answer to the original question is: "yes you can", sorry for the confusion.

With the "is_playing" property of the Song class you can check the state of Live's transport ('observable') and trigger it ('set').

As for me: I need some sleep that that I start talking some common sense again :P

Venetian's icon

Hi Tim,

You can get it to start playing and you can trigger any specific loops you want. So given a quantisation, if say you have a beat tracker in max doing a pulse, a message could trigger your loop on the next pulse point at the required tempo.

What I've not seen is any control over Live's warp markers so althought this may be possible(?) I doubt it is at present, but neither would it be so useful to you.

Re beat tracking - I've done classes of the comb filter beat tracker and will post up to you later this week after porting into a max object.

In order to control Live, you use a live object, observe a property and then send a message. The one to fire clips is weird, you need to send "set fire" message not just "fire"

try looking in Live->Library->Lessons->clipOperations.amxd if you get hold of a copy.

Andrew

Tim Canfer's icon

Wow - thanks for all the help. This is way over my head the the moment as I have yet to get my hands dirty with MAX4Live, but I'll hand the the dissertation in and then I am free to crack on. Will report in as soon as possible with a little more than confused thanks...

Thanks again

Johannes's icon

Hi Tim,

there is an example in extras->M4L Live Api Abstraction Overview. Here it is M4L.api.ToggleTransport in the Global area.

Johannes

Tim Canfer's icon

thanks johannes - looking forward to trying it out
Tim

duncane's icon

And the answer is ... a maxpatch included in the system, namely:

M4L.api.ToggleTransport.maxpat.

Nothing to it gentlemen,,,

Stephane Morisse's icon

and to answer to the second part of the question, you can also observe and get to cues with m4l api objects.

Basvlk's icon

I believe there are some things you can midimap to that you can't get through the live API, for example the pitch of a clip. It's on my to do list to work on: create a virtual midi out from Max, midi map a CC to it and so use this workaround to control certain parameters from Max that you can't get to through the API. Not pretty but it works.

Tim Canfer's icon

Thanks for your help all - I have finally had some time to put together the patch in this post: https://cycling74.com/forums/tempo-control-patch-for-your-perusal/

It actually works!

Tim Canfer's icon

I should mention that looping functions are not yet included, but one step at a time.