Articles on: Using Your Controller

Configuring Your Controller for YURS

The Yaeltex Universal Remote Script (YURS) is a powerful bridge that transforms your custom hardware into a native Ableton Live control surface. To unlock this deep integration, you must configure your controller in Kilowhat to send the precise MIDI messages that YURS is listening for. This process is governed by the official Yaeltex Ableton Live MIDI Chart.


This master guide will walk you through every aspect of the configuration, from editing the core Map.py file to understanding the detailed MIDI Chart and exploring advanced customizations.




Part 1: The Map.py File - Your Script's Command Center


At the heart of YURS is a file named Map.py. Think of this as the script's central settings panel. By editing this file, you tell the script which features you intend to use, which helps optimize the flow of data between your controller and Ableton Live, preventing unnecessary processing.


How to Edit Map.py:

  1. Navigate to Ableton Live's MIDI Remote Scripts folder. Inside, find your Yaeltex_Universal_... folder.
  2. Open the Map.py file within that folder using a simple text editor (like Notepad on Windows or TextEdit on macOS).
  3. CRITICAL: After making and saving any changes, you must close and restart Ableton Live for the new configuration to load.


Here are the key variables you can configure in Map.py:


  • SESSION_BOX_SIZE = (tracks, scenes)
    • What it does: Defines the size of the clip-launching grid (the "red box") you want to control.
    • Why you'd change it: If your controller has an 8x4 grid of buttons for clip launching, set this to (8, 4). This prevents the script from sending or receiving data for clips outside this defined area, optimizing performance. The maximum is (16, .


  • VU_METER_ENABLED = True / False
    • What it does: Enables or disables sending track VU meter data back to your controller's LEDs.
    • Why you'd change it: This is a data-intensive feature. If you haven't designed your controller with encoders dedicated to VU metering, set this to False to reduce data traffic and prevent potential overload. To use this, you must also set the encoder's function to "Vumeter CC" in Kilowhat.


  • NUM_SEND_CONTROLS = 0-8
    • What it does: Sets the number of Send tracks (A-H) you want to be able to control.
    • Why you'd change it: If you only use Sends A and B, set this to 2. If you use none, set it to 0. This tailors the script to your specific mixing workflow.


  • Device Control
    • SELECTED_STRIP_PARAMETER_CONTROLS_ENABLED = True / False: Set to True if you have a bank of knobs intended to control whatever device is currently selected in Ableton.
    • TRACK_STRIP_PARAMETER_CONTROLS_ENABLED = True / False: Set to True if you have knobs dedicated to controlling devices on fixed tracks (e.g., a set of knobs that always control the filter on Track 1).


  • Color Feedback Customization
    • In the YAELTEX Colors section of Map.py, you can edit the color values for feedback. For example, PlayOn = MonoColor(62) for light blue. To use this, your buttons/encoders in Kilowhat must have their "Feedback mode" set to "Value to Color."




Part 2: The MIDI Chart - Your Translation Dictionary


The Yaeltex Ableton Live MIDI Chart is the definitive reference for mapping your controller. It lists every function and the exact MIDI message required to control it. In Kilowhat, you will program each physical component to send the specific Message Type (Note or CC), Channel, and Identifier (Note/CC number) from this chart.


THE GOLDEN RULE: Every function you want to control must be assigned a unique MIDI message. Using the same message (e.g., Note 5, Channel 1) for two different functions in your Kilowhat setup will cause the script to fail or behave unpredictably.


Here is a detailed breakdown of key sections:


Mixer Controls
  • Track Volume: Uses CC on Channel 1. CC 0 controls Track 1, CC 1 controls Track 2, ..., CC 15 controls Track 16.
  • Track Pan: Uses CC on Channel 1. CC 16 controls Track 1, CC 17 controls Track 2, ..., CC 31 controls Track 16.
  • Track Mute/Solo/Arm/Select: Use Note on Channel 1. The note number determines the function and track.
    • Mute: Notes 0-15 for Tracks 1-16.
    • Solo: Notes 16-31 for Tracks 1-16.
    • Arm: Notes 32-47 for Tracks 1-16.
    • Select: Notes 48-63 for Tracks 1-16.
  • Track Sends (A-H): Use CC on Channel 2. The CC number range determines both the Send and the Track.
    • Send A: CCs 0-15 for Tracks 1-16.
    • Send B: CCs 16-31 for Tracks 1-16.
    • ...and so on, up to Send H: CCs 112-127 for Tracks 1-16.
  • Master & Cue Volume: MASTER VOLUME is CC 1, Ch 127. CUE VOLUME is CC 1, Ch 126.
  • Crossfader: CROSSFADER is CC 1, Ch 125.


Session & Transport Controls
  • Clip Launcher: Uses Note on Channel 2. Notes 0-127 cover a full 16x8 grid.
  • Scene Launch: Uses Note on Channel 3. Notes 16-23 launch Scenes 1-8.
  • Stop All Clips: Note 3, Ch 127.
  • Stop Track Clips: Uses Note on Channel 3. Notes 0-15 stop clips on Tracks 1-16.
  • Session Nav (Red Box): Uses Note on Channel 3. UP is Note 24, DOWN is 25, LEFT is 26, RIGHT is 27.
  • Transport: Uses Note on Channel 1-7. PLAY is Note 5, Ch 1, STOP is Note 5, Ch 2, REC is Note 5, Ch 3, etc.


Device Controls
  • Selected Track Device On/Off: Uses Note on Channel 4. Notes 64-71 toggle Devices 1-8 on the selected track.
  • Selected Track Device Parameters: Uses CC on Channel 11. CCs 0-7 control the first 8 parameters/macros of the selected device.
  • Fixed Track Device Parameters: This is for dedicating knobs to a specific track. Each track gets its own CC Channel.
    • Track 1 Devices: Use CC on Channel 3. (CCs 0-7 for Device 1, 8-15 for Device 2, etc.)
    • Track 2 Devices: Use CC on Channel 4.
    • ...and so on, up to Track 8 Devices using CC on Channel 10.




Part 3: Advanced Customization & Power User Tips


For those who want to bend the script to their will, you can directly edit the MIDI assignments in Map.py.


  • Changing MIDI Channels: You can change the channel for a whole group of controls. To move all MUTE functions to MIDI Channel 5, find the line MUTE_CHANNEL = 0 and change it to MUTE_CHANNEL = 4.
    • Important: The script is 0-indexed. Channel 0 in the script = Channel 1 on your controller; Channel 4 = Channel 5, etc.
  • Assigning Non-Consecutive Messages: If your layout requires non-standard mapping, you can define an explicit list. For example, to map four mutes to notes 0, 5, 10, and 15, you would set: MUTE_NOTES = [0, 5, 10, 15].
  • Using Multiple Controllers: YURS supports linking multiple controllers. You can copy the entire script folder, rename it (e.g., Yaeltex_Universal_alt2), and have a different Map.py for each. This allows two controllers to work together seamlessly.




Part 4: Known Issues & Optimizations


  • Potential MIDI Overload: In some cases, rapid actions like fast session scrolling can send a burst of MIDI messages that overwhelm the controller's input buffer.
  • The Fix (Advanced): A fix involves implementing a global "throttling" mechanism in the script's mono_button.py file. This adds a tiny, non-blocking delay (e.g., 10ms) between any two messages sent from the script, preventing the buffer from overflowing. This requires some Python knowledge but can resolve issues with unresponsiveness during intense use.


By carefully configuring your Map.py file, meticulously programming your controller in Kilowhat according to the MIDI Chart, and keeping the Golden Rule of "No Duplicate MIDI Messages" in mind, you can achieve an unparalleled level of custom control over Ableton Live.

Updated on: 26/06/2025

Was this article helpful?

Share your feedback

Cancel

Thank you!