Enabling/Disabling Ableton Live tracks

wannabeafrog's icon

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

ShelLuser's icon

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

wannabeafrog's icon

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.

wannabeafrog's icon

any idea anyone? :(

broc's icon

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.

wannabeafrog's icon

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

broc's icon

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.

misho's icon

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" : "
                "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" : "
                "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" : [ ]
            }

        }
]
}

misho's icon

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.

4323.armtracks.png
png