Forums > MaxMSP

Enabling/Disabling Ableton Live tracks

August 9, 2012 | 3:23 pm

Greetings,

I’m working in a patch which is sending midi notes to Ableton Live synthetizers. Currently I’m just using a midiout set to channel "From Max 1" and manually switching in Ableton the ‘armed’ track whenever I want my patch to sound through one synth or the other. Thing is, I would like to be able to change the selected Synth from my Max interface without having to go to Live’s window, how is this done? Do I have to create extra channels?

Thanks in advance


August 10, 2012 | 5:16 am

Why not get Max for Live instead so you’ll get full(er) control over the stuff you can do in Live?


August 10, 2012 | 1:20 pm

I have max for live but I don’t think it is made for working with big patches (perhaps I’m wrong), I’m sending this midi values from quite the patch, not just a simple sequencer.


August 13, 2012 | 2:36 am

any idea anyone? :(


August 13, 2012 | 9:26 am

Put the synthesizers on different Live tracks and set midi input to different midi channels.
Then you can select the synth by sending on the corresponding midi channel.


August 13, 2012 | 12:58 pm

Thank you broc,

I figured that’d be the way, but I’m not sure how to create new channels. However, I think I just found how ";#SM create outport;", although I still have one question though: With that message, the input arguments are

and respectively, what do I have to put in drivername? Coreaudio (I’m in mac OSX)? Whats the midi channel limit or recomended amount?

thanks again


August 13, 2012 | 4:59 pm

Remember that a single midi port like "from MaxMSP 1" can send on 16 different channels. So you don’t need other ports unless you want to use more than 16 synths.


August 22, 2012 | 8:18 am

If your patch is too big / cumbersome to drop into M4L, you could try a combo solution – your patch send some data to a simple M4L device that handles the record-enable stuff. Have a look at the Live Object Model reference and [live.path] and [live.object]. You can use a "set arm 0/1" message to remotely arm/disarm tracks. A slick way to interface this from your main Max patch is to send osc messages via {udpsend} that get parsed out in the M4L device with a [udpreceive]. This way you can send messages like "track 1 arm 1". Otherwise you could do it with MIDI i suppose, but that’s much more tedious.


{
"boxes" : [ {
"box" : {
"maxclass" : "comment",
"text" : "< - use these messages to toggle arm",
"frgb" : [ 0.027451, 0.027451, 0.027451, 1.0 ],
"patching_rect" : [ 377.0, 366.0, 190.0, 18.0 ],
"id" : "obj-219",
"fontname" : "Arial Bold",
"numinlets" : 1,
"numoutlets" : 0,
"fontsize" : 10.0
}

}
, {
"box" : {
"maxclass" : "comment",
"text" : "< - select a live track by number",
"frgb" : [ 0.027451, 0.027451, 0.027451, 1.0 ],
"patching_rect" : [ 270.0, 279.0, 167.0, 18.0 ],
"id" : "obj-218",
"fontname" : "Arial Bold",
"numinlets" : 1,
"numoutlets" : 0,
"fontsize" : 10.0
}

}
, {
"box" : {
"maxclass" : "message",
"text" : "set arm 0",
"outlettype" : [ "" ],
"patching_rect" : [ 316.0, 357.0, 54.0, 16.0 ],
"id" : "obj-87",
"fontname" : "Arial Bold",
"numinlets" : 2,
"numoutlets" : 1,
"fontsize" : 10.0
}

}
, {
"box" : {
"maxclass" : "newobj",
"text" : "live.object",
"outlettype" : [ "" ],
"patching_rect" : [ 191.0, 432.0, 60.0, 18.0 ],
"id" : "obj-211",
"fontname" : "Arial Bold",
"color" : [ 0.984314, 0.819608, 0.05098, 1.0 ],
"numinlets" : 2,
"numoutlets" : 1,
"fontsize" : 10.0,
"saved_object_attributes" : {
"_persistence" : 0
}

}

}
, {
"box" : {
"maxclass" : "message",
"text" : "set arm 1",
"outlettype" : [ "" ],
"patching_rect" : [ 317.0, 379.0, 54.0, 16.0 ],
"id" : "obj-212",
"fontname" : "Arial Bold",
"numinlets" : 2,
"numoutlets" : 1,
"fontsize" : 10.0
}

}
, {
"box" : {
"maxclass" : "newobj",
"text" : "live.path",
"outlettype" : [ "", "", "" ],
"patching_rect" : [ 216.0, 397.0, 51.0, 18.0 ],
"id" : "obj-215",
"fontname" : "Arial Bold",
"color" : [ 0.984314, 0.819608, 0.05098, 1.0 ],
"numinlets" : 1,
"numoutlets" : 3,
"fontsize" : 10.0
}

}
, {
"box" : {
"maxclass" : "number",
"outlettype" : [ "int", "bang" ],
"patching_rect" : [ 214.0, 278.0, 50.0, 18.0 ],
"id" : "obj-216",
"fontname" : "Arial Bold",
"numinlets" : 1,
"numoutlets" : 2,
"fontsize" : 10.0
}

}
, {
"box" : {
"maxclass" : "message",
"text" : "goto live_set tracks $1",
"outlettype" : [ "" ],
"patching_rect" : [ 215.0, 311.0, 118.0, 16.0 ],
"id" : "obj-217",
"fontname" : "Arial Bold",
"numinlets" : 2,
"numoutlets" : 1,
"fontsize" : 10.0
}

}
],
"lines" : [ {
"patchline" : {
"source" : [ "obj-216", 0 ],
"destination" : [ "obj-217", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}

}
, {
"patchline" : {
"source" : [ "obj-212", 0 ],
"destination" : [ "obj-211", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}

}
, {
"patchline" : {
"source" : [ "obj-87", 0 ],
"destination" : [ "obj-211", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}

}
, {
"patchline" : {
"source" : [ "obj-217", 0 ],
"destination" : [ "obj-215", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}

}
, {
"patchline" : {
"source" : [ "obj-215", 1 ],
"destination" : [ "obj-211", 1 ],
"hidden" : 0,
"midpoints" : [ ]
}

}
]
}


August 22, 2012 | 8:23 am

Doh!!! Excuse the sloppy code pasting up there… Let's try this again with an image this time. Just create a new Max MIDI Device in your Live session and reconstruct this simple patch to see how to drive arm / disarm using Live API.

[attachment=201925,4323]

Attachments:
  1. armtracks.png

Viewing 9 posts - 1 through 9 (of 9 total)