Chataigne module for Liberation

Since the new MIDI overhaul in v1.0.12+, I had to update my MIDI configuration to support the new mapping system. I wanted to share my story and a tool that may help others pursuing a maximalist busking setup.

TL;DR: I’m asking for beta testers for a Chataigne Module for Liberation v1.1+. The link is at the bottom.

For the past 18 months or so, I have been busking with 2 extra controllers in addition to the APC40 mk2. I added a Launch Control XL (and now XL 3) to control extra FX slots and parameters. I added a Launchpad to map 48 extra “go-to” clips and a few extras for future use once certain controls were exposed. This worked via the MIDI send/receive system.

I routed these through Chataigne, as I want to share buttons on the same controllers with multiple software and even direct ArtNET outputs for hazer control. I also wanted to be able to sync some controller states with my TouchOSC controller.

In order to structure the immense amount of addresses I needed to correlate, I created large multiplexes and variable lists with all the MIDI send/receive system notes and CCs and all of my MIDI controller note, CC, and LED mappings. My spreadsheets are out of control, but I got it all working after 2 weeks of iteration.

I knew I needed something better for the new MIDI config system. This thread by @deepplayanyc with contributions from @EricWatkins had previously inspired me to make a proper Chataigne module featuring human-readable Liberation targets/inputs, but I was waiting for the new MIDI system and beta version stability, then had to find time between gigs.

I had some time this week, and I have now completed the first reasonably-viable version of a module and mcfg which exposes almost all of Liberation’s controls in v1.1.0+.

I created a new GitHub profile for Dam Lasers and have shared this repo publicly. This version may not yet be stable, so I am looking for beta testers. I prefer testers who are already using Chataigne to some degree.

Liberation Chataigne Module

This is NOT tested with versions prior to 1.1.3, but it should be compatible back to 1.1.0, for now. I will update this post and the compatibility statement on GitHub if it changes.

I will make a tutorial video for this once the bugs have been worked out. I’m happy to answer questions here, but please report any issues via GitHub.

3 Likes

I love this. I’m a big fan of Chataigne. I’m currently not in need of multiple MIDI controllers but I’ll take i for a spin anyway.

1 Like

Wow this is awesome. I will take a look and test it out. I previously built my own liberation chataigne module so I’m curious how we can collab.

1 Like

My repo is open if you want to make a PR. I’m happy to collaborate! Feel free to DM me.

@seb Could you explain a bit more about General Parameters? I see in the APC40 mk2 config that this is how the currently-selected clip’s property values are reflected back to the encoder knobs. I would like to reflect these values on buttons to create hard shortcuts for delay patterns and time values for the currently-selected clip. Should I rely on the General Parameter LED feedback to do this?

Also, could you add LED feedback for clip_zone_delay_chase_* values for the currently-selected clip?

Yes, that’s now added and it’ll be in the next test build.

General Parameter LED feedback still works as continuous value feedback for encoder rings/faders, but I’ve added a separate “value match” LED path for buttons. So you can now have a button set a selected clip/general parameter to a fixed value, and have that button light only when the current value matches.

Example:

clip_or_group_parameter ch=1 note=0x32 actionValue=3 float=0.666667 led

Or explicitly:

general_param_match_led 3 float=0.666667 ch=1 note=0x32

I’ve also added LED feedback for the selected clip’s zone delay/chase actions:

clip_zone_delay_chase_toggle ch=1 note=0x59 led
clip_zone_delay_chase_mode_cycle ch=1 note=0x5A led delay=0 chase=127 both=64
clip_zone_delay_chase_retrigger_toggle ch=1 note=0x5B led

While doing this I also added the missing continuous LED feedback options for other rotary-style controls: global_brightness, group_brightness, clip_property, clip_property_abs, and tempo_multiplier.

Cheers!

Seb

1 Like

I just released v0.6 of my Liberation Chataigne Module. This includes most of the updates from @seb’s post above and now requires Liberation v1.2.0 or later. The changelog is below and has been added to the repo.

Please report any bugs via GitHub.

v0.6

Updated 2026-08-16 for Liberation version 1.2.0 beta or later.

  • Added real feedback from Liberation for the following clip properties via general parameter mapping and the “led” option:

    • Shift x/y
    • Zone delay
    • Chase pattern
    • Scale x/y
    • Custom parameter
  • The following actions now use direct feedback through the “led” option:

    • clip_zone_delay_chase_toggle
    • clip_zone_delay_chase_retrigger_toggle
    • clip_zone_delay_chase_mode_cycle - split into individual delay and chase values in the module which also respond to “both”
  • Added a new section for “Global Transformations” which map to General Parameters 4-7:

    • Scale X/Y
    • Spin
    • Spin 3D
  • Updated the following controls to use 14-bit MIDI and updated the module to show value ranges corresponding to those shown in the Liberation GUI:

    • general_param_6/7, global scale_x/y (0-100)
    • general_param_4, global spin (-20.0 to 20.0)
    • general_param_5, global spin 3d (-20.0 to 20.0)
    • general_param_0/1, clip shift x/y (-200 to 200)
    • general_param_2, clip zone delay (0-128)
    • tempo_multiplier (0-200)
  • Added dedicated write commands for the following:

    • Global Scale X/Y
    • Global Spin
    • Global Spin 3D
  • Changed the following clip properties to be set by their corresponding general params instead of using clip_property with grid position.

    • Shift X/Y
    • Zone delay
    • Chase pattern
  • Updated clip chase_pattern and general_param_3 to display and limit values to 1-4, reflecting the 4 delay/chase patterns in Liberation.

  • Added tempo_multiplier_led, 14-bit, 0-200 in the module

  • Documentation cleanup

Please note that once the Liberation beta becomes public, I plan to match the version number of this module to the Liberation version.

2 Likes

Important note for Windows users

I strongly recommend setting up a dedicated loopMIDI port with a unique name like “Chataigne” or “Liberation”. When using the default “loopMIDI Port”, I and other users have encountered MIDI feedback errors.

I use dedicated ports for input and output named “Chataigne In” and “Chataigne Out”.

The matching Chataigne_Module.mcfg header is as follows.

name "Chataigne Liberation"
device "Chataigne"
input_port_contains "In"
output_port_contains "Out"

I will update the documentation in the next version. If you encounter any other errors or unexpected behavior, please report it here or as a GitHub issue.

1 Like

Here’s a sneak peak of how I’m using this Chataigne module to extend my Liberation controls with a Launchpad and Launch Control XL 3.

Not mentioned in the video:

  1. Clip pads are color coded to match their content. This is done manually using a multiplex of pad color values.
  2. The APC40 was set to page 1, mirroring the Launchpad. The Launchpad clips are completely independent of the page selected on the APC40 or in the GUI.
  3. The effect controls are by absolute position, so they are also independent of the effect page selected on the APC40 or in the GUI.
  4. Why did I do this with a Chataigne project instead of just using the Liberation mcfgs? The Chataigne project also translates OSC for a TouchOSC controller with disarm all lasers, global brightness, and direct ArtNET control for hazers. The same project also controls Chamsys MagicQ with yet another MIDI controller to ArtNET.

Sometime in Q4 I will make a full video explaining the design and detailing the implementation. For now, I have to focus on projects until the end of October.

4 Likes

v1.4.3 of this module is now available.

Note: The module version number is now aligned with the current Liberation version number.

  • Added absolute clip control for the first 80 clip slots (2 pages)
  • Added absolute effect control for the first 40 effects slots (5 pages)
  • Added Zone Delay feedback indicators for delay values of 2, 4, 6, 8, 10, 16, and 24
    • Expandable by adding to the following:
      • general_param_match_led mappings in Chataigne_Module.mcfg (use float conversions of value/128),
      • ZONE_DELAY_MATCH_VALUES in liberation.js (integers)
      • Zone Delay Matching container items in module.json
  • Reorganized the entire MIDI addressing scheme for maintainability and future enhancements.
  • Documented loopMIDI setup on Windows and reorganized setup documentation in general

BREAKING CHANGES

Chataigne projects will need to be updated to point at new target names! This was necessary to ensure the module can be expanded in the future. I also had to update my very large Noisette, so I feel the pain. Sorry.

  • For display consistency between Liberation and Chataigne, most numbering in the module has changed to start from 1 instead of 0. Clip slots still use 0-based indexing to match the Liberation UI. Affected targets are as follows
    • Groups
    • Zones
    • General Params
    • Effects
    • This includes command parameter ranges
  • Effect parameters have been nested into trees. E.g. Effects -> Effect 1 -> Param 1

See the changelog for additional details.

The next Liberation release will expose the remaining effect parameter slots, per this topic. The module is already staged for that change and will be released very soon after the Liberation update is available.

Please report any bugs via GitHub Issues. Your feedback helps make this module better.

2 Likes

v1.4.4 of this module is now available

Requires Liberation beta version 1.4.4 or newer. Tested with v1.4.4 and v1.4.5.

  • Added effect parameter slots 2-3 for both relative and absolute effects
    • Expandable by adding to the following:
      • effect_parameter # param=# and effect_parameter_abs # param=# mappings in Chataigne_Module.mcfg
      • Effect # containers under Effects and Effects - Absolute in module.json

As always, please report any bugs via GitHub Issues. Your feedback helps make this module better.

Future Updates

The module now supports everything I need for my controllers and what I think is a good basis for others without being too bloated. If it lacks something you need, please let me know. I will continue to improve features as I get back into playing my rig with my new Noisette.

The roadmap currently includes:

  • More 14-bit fine control for increased precision
  • Group brightness
  • Expansion of clip property feedback once more feedback paths become available

I will share a more in-depth video about the module and my controllers when I have some time again, but I have to focus on gigs for the next 2 months.

1 Like