MonoEncoder mapping per selected track

Hi community,

I have the california controller:

The application is Ableton and this is how I want to use the controller with following features:

  1. Faders are used for volume (works)
  2. First row of buttons mute (works)
  3. Second row of buttons track select (works)
  4. When track selected the rotary encoders 1,2,3 are use for pan, send 1, send 2 of selected track (not working yet)
  5. Rotary encoder 4 is master volume and shows UV of master out (not working yet)

I am using the YealtexUniversal script and starting to customizing it. I am new to Ableton scripting. So consider me rookie but I am happy to learn.

I think I will get feature 5 fairly quickly as this is a static mapping and I also saw this in the code. So let’s focus on feature 4. Any ideas how to approach this?

I try to wrap my head around this as the encoders have a fixed midi mapping. My first idea would be to assign new midi message based on track selection to the encoders.

For example:

Selecting Track 1 change the MIDI mapping from encoder 1 to CC 1-16

Selecting Track 2 change the MIDI mapping from encoder 1 to CC 1-17

end so on. This will change MIDI mapping during operation. Is this robust? Can someone give me a pointer to the code how to listen to track selection and identify track id?Any help is very appreciated!

Best
M

Hey @manuel it’s great that you already have the faders, mutes, and track select buttons working!

To answer your core question first: dynamically changing the hardware’s MIDI mapping on the fly is not possible.

The hardware controller should always send static, fixed MIDI messages, and your Python script acts as the “translator” that dynamically routes those messages to the correct functions in Ableton.

Here is how you should approach your remaining features using the YURS:

Feature 4: Encoders for Pan, Send 1, Send 2 of the Selected Track

By default, the YURS maps Mixer controls (such as Pan and Sends) as an array across a defined “Session Box” (e.g., mapping Send A for Tracks 1 through 8 to a row of 8 encoders).

While YURS natively supports dynamically controlling the Devices/Macros of a selected track, it does not have a native toggle in the Map.py file specifically for “Selected Track Mixer Controls.”

To build this yourself in the script, you should:

  1. In Kilowhat: Configure Encoders 1, 2, and 3 to send static CC messages (e.g., CC 10, CC 11, CC 12) on a dedicated MIDI channel.

  2. In your Python Script: Instead of dynamically changing the hardware’s CC numbers, you need to write a listener for Ableton’s selected_track property. You will tell your script to listen to those three static CCs constantly, and whenever they are turned, apply the value to the pan, and send properties of whatever track is currently active.

Feature 5: Master Volume with VU Meter

You mentioned you think you can get this working, but here are the exact steps to enable the VU meter feedback using YURS, which natively supports this feature:

  1. In Kilowhat (Hardware Configuration):

    • Select Encoder 4 and change its message type to VUMETER CC. This mode sends a regular CC message but allows the encoder ring to receive VU meter feedback on the same CC, on a designated channel (selectable in Kilowhat’s preferences).

    • Assign it the MIDI message for Master Volume (the default in YURS is CC 127 on Channel 1).

  2. In YURS (Script Configuration):

    • Open the Map.py file in a text editor.

    • Find the VU meter flag and change it to True: VU_METER_ENABLED = True.

    • Save the file and restart Ableton Live

Please note that modifying the Map.py text file is strictly for configuring native, pre-built features that already exist within the YURS (such as enabling VU meters, setting the session box size, or turning on device controls)

Creating a completely new feature (like your specific request to dynamically route static CCs to the selected track’s mixer Pan/Sends, which is not a default YURS behavior) requires writing custom Python code inside the script to interface with the Ableton API.