Add arm and record button to the mixer

Hi !

Is it possible to add arm button to the tracks we add in the mixer, and a record button at the bottom with the present buttons previous play loop and next ?

Edit : it will be nice to get the IN / Auto / OFF buttons too on each track added to the mixer
Edit 2 : And a lock UI button like in lyrics or performance

Thank you Leo for your work and the V3 release ! It’s amazing <3

Nico

Hey Nico,

You can absolutely build this in a Canvas, by basically recreating the mixer controls you want.

  • Add a Click Track Volume Slider element for your track groups.
    Just duplicate your existing Click slider and change the OSC path so it points to your other track groups, for example:
    /mixer/tracks/volume, /mixer/keys/volume, etc.

  • Then add Button elements for each group to recreate mute and solo states using:

    • /mixer/[group]/mute
    • /mixer/[group]/solo

After that, you can add additional Button elements at the bottom of your Canvas for the extra controls you mentioned (Record, Arm, etc.) and position them next to your Prev / Play / Loop / Next buttons.

Regarding track arming, AbleSet does not currently expose arm or monitoring controls natively.

However, you can achieve this by also adding AbletonOSC as a Control Surface in Live.

Once AbletonOSC is running, you can use:

Arm track

/live/track/set/arm [trackID] [1|0] //for ON/OFF

Set monitoring state

/live/track/set/current_monitoring_state [trackID] [1|0]

Keep in mind you’ll need to pass the trackID (number) as the first argument.

This gives you full control over arm + monitoring via OSC from Canvas buttons.

AbletonOSC listens on port 11000 and sends on port 11001 .

To lock the UI in any view, you can simply use SHIFT + L, or you can map it to a MIDI controller or Canvas button using:

/devices/lock [devices]

or

/devices/toggleLock [devices]

Hope this helps!

Hello Agustin,

I’ll look into it, thank you for the answer and all the details !

1 Like

Hey Agustin,

Very new at this so please forgive my questions. Trying to do the same thing but am having trouble getting my OSC commands to AbletonOSC. Is there a more detailed set up guide for interfacing AbletonOSC to AbleSet?

The /live/track/set/arm goes into an OSC command from AbleSet to AbletonOSC right? How do I know what the IP address is for AbletonOSC? When you say trackID, is that the name of the track or the number the track is in the session?

Thank you for your help,

Hank

Okay, spent a few more hours on it and have come up with some results. Currently, I’ve gotten AbleSet to have one button to record arm and one button to disarm multiple tracks with these commands

Arm

127.0.0.1:11000/live/track/set/arm 27 1
127.0.0.1:11000/live/track/set/arm 28 1
127.0.0.1:11000/live/track/set/arm 29 1
127.0.0.1:11000/live/track/set/arm 30 1

Disarm

127.0.0.1:11000/live/track/set/arm 27 0
127.0.0.1:11000/live/track/set/arm 28 0
127.0.0.1:11000/live/track/set/arm 29 0
127.0.0.1:11000/live/track/set/arm 30 0

Is it possible to have a single button toggle this status to go from arm to disarm? Also, I was reading about wildcards using keywords with a * in AbletonOSC to create multitrack arms without using a line for each track. If that’s not possible, I’d like to see if I can use the track name instead of the track ID number since if I reorder my tracks at any point in time, I will be no longer arming and disarming my intended tracks.

Would love any thoughts on this and can elaborate on my specific use case if that helps as well. Thank you all!

I’ve been playing around with this myself.

My current solution is using OSC to reading AbletonOSC values and a single button to send MIDI note to IAC Driver to Ableton.

All you need to do is send a midi note and midi map it to the arm button in Ableton.

It should then act as a toggle!

I do this with a macro wheel for volume of the accent of my click.

Also like in Ableset, what happens if you replace “0” or “1” with “toggle” ?

All good thoughts! I was trying out MIDI mapping for arming the tracks I need but it follows Ableton’s exclusive arm preferences. I like having arm exclusive on for a couple workflow reasons but when I MIDI map record arm to the groups I want (drums, bass, keys), they unarm each other if I try to record bass and drums at the same time for example.

What I liked about using OSC commands vs midi mapping is that it doesn’t follow that preference and I can toggle everything together, all at once or separately and everything stays armed. So in that respect, it allows me to have latching record groups but exclusive arming in my normal operation. Might seem like a tiny difference but in my work, it’ll be a huge improvement if I can get this figured out.

Replacing 0 / 1 with toggle didn’t get it done unfortunately

Hmm good point. You could try writing a script that’s a basic if function?

If arm track = 0 then send 1 and vice versa?

Hey @hank,

Please excuse my late reply.
We took a closer look at this together with @leolabs.

The issue was that when sending 1 / 0 from a Script button, JavaScript always serializes numbers as floats, and AbletonOSC differentiates between floats and integers.
In short, the fix is simply to use true / false instead of 1 / 0. AbletonOSC will interpret those correctly.

Here’s a single-button toggle you can try:

Arm & Disarm Toggle.json (1.0 KB)

I’ll share the setup below in case anyone else finds it useful:

Canvas Button → Type: Script

Label

${shared("recArm_27_30", false) ? "ARMED" : "DISARMED"}

Script On Press

const target = "127.0.0.1:11000/live/track/set/arm";
const tracks = [27, 28, 29, 30];

// Read stored state (default = false)
const armed = !!shared("recArm_27_30", false);
const next = !armed;

// Store new state
setShared("recArm_27_30", next);

// Send true/false instead of 1/0
for (const t of tracks) {
  sendOsc(target, t, next);
}

Background Color set to Dynamic

${shared("recArm_27_30", false) ? "red-600" : "red-950"}

Adjust colors to taste.

This will toggle all four tracks between armed and disarmed with a single button.

Regarding targeting tracks by name: in AbletonOSC, /live/track/set/arm takes a track_id (index), not a name. The API can read a track’s name (e.g. /live/track/get/name <track_id>), but there isn’t a built-in “set arm by name” address.

Because of that, it isn’t currently possible to reliably resolve name → index inside a Canvas script.

For a solid workflow, the best option is to keep those “record” tracks in a fixed position in your template (so their indices don’t change), and avoid reordering them once your Canvas is mapped. If you do need alternate layouts, you can also keep a second button preset for a different index range (e.g. tracks 31–34) for sessions that require a different track order.

Hope that helps!

This is exactly what I needed, thank you so much!

1 Like