10 ‐ Change Log - FunkybotsEvilTwin/CSIUserGuide GitHub Wiki

CSI v7 Change Log

This page documents the changes, updates, and improvements made to Control Surface Integrator (CSI) over time. Future releases will be added to this list as new versions are published


Update: August 1, 2025

SetXTouchDisplayColors Now Clear on Shutdown

Simple fix: the SetXTouchDisplayColors action now clears on shutdown. If you were in a Sends zone, for example, and Shutdown Reaper, you may have had Cyan linger on the displays after shutdown. That's now been resolved.

Contributor: Funkybot

MeterMode=MCU Always Uses Reduced MIDI Traffic

This change restores the "only send meter values on change" behavior for MeterMode=MCU, drastically cutting back on MIDI traffic.

Contributor: Funkybot

New: ClipDetection=Precise Property

If you’re using the MCUVUMeter or QConMasterVUMeter widgets, there’s a new ClipDetection=Precise property. By default, fast transient peaks that cause a clip may not always be reported on the control surface. Enabling ClipDetection=Precise gives you much more accurate clip detection.

Important Note: If you have Reaper’s Meter Preference for "Sticky Clip Indicators" enabled, this property will override it! Clip indicators will automatically clear.

Zone Track

    VUMeter|                 TrackOutputMeterMaxPeakLR ClipDetection=Precise

Contributors: jrauber.av (concept), Roy, funkybot.


New Actions: TracksSolo, TracksMute, TracksRecordArm with 'Quick Group' Behavior

The standard CSI actions TrackSolo, TrackMute, and TrackRecordArm affect only the channel where the action is triggered, regardless of track selection (can be thought of as "unique" behavior). These original actions are unchanged.

New plural actions, TracksSolo, TracksMute, and TracksRecordArm, are available to replicate Reaper’s Quick Group behavior. Here’s how they work:

  • If multiple tracks are selected and you trigger one of these actions on a selected track, all selected tracks will be soloed, muted, or armed together.
  • If multiple tracks are selected but you trigger the action on a non-selected track, only that specific track is affected.
  • This matches the way Quick Group works in Reaper for Faders and Pans.

You can assign these new actions as your main Solo/Mute/Arm controls, or use them on a modifier (e.g., with Shift) for more flexibility.

Example (Tracks variants as default):

Zone Track

    RecordArm|               TracksRecordArm
    Shift+RecordArm|         TrackRecordArm                      // Unique RecordArm

    Solo|                    TracksSolo                           
    Shift+Solo|              TrackSolo                           // Unique Solo


    Mute|                    TracksMute
    Shift+Mute|              TrackMute                           // Unique Mute

Or, you can maintain the existing behavior and assign the Tracks variants to a modifier:

Zone Track

    RecordArm|               TrackRecordArm                      // Unique RecordArm
    Shift+RecordArm|         TracksRecordArm

    Solo|                    TrackSolo                           // Unique Solo
    Shift+Solo|              TracksSolo


    Mute|                    TrackMute                           // Unique Mute
    Shift+Mute|              TracksMute

Contributor: Funkybot


New: iCON Display Feedback Processors with Color Support

CSI now includes full support for the iCON V1M control surface, which features color displays and two sets of display rows (Upper and Lower). The new FB_iCON_V1MDisplayUpper and FB_iCON_V1MDisplayLower feedback processors handle color updates for the Icon V1M. FB_iCON_V1XDisplayUpper and FB_iCON_V1XDisplayLower feedback processors exist for use on the iCON V1M Extender.

Also added support files for the iCon V1M and Extender.

Contributor: jrauber.av


Improved: Auto Track Coloring for XTouch, iCON, Asparion Surfaces

Previously, CSI only updated track colors for the XTouch, Asparion, and iCON surfaces when a zone was rebuilt, meaning color changes weren’t reflected in real-time. With this update, track colors are updated instantly as they change—no need to reload or change zones.

Contributor: Geoff.


Update: June 25, 2025

Improvement: MCU/X-Touch Meters

The MCU/X-Touch channel meter code has been improved. Expect better calibration with the MCU spec, and improved behavior with steady-state signals for a much better overall metering experience.
Contributor: Roy

Important Note:
This is designed so that it will be easy to adjust the mapping to the LEDs. Please test it out and post your experiences. For example: does the transition from green to orange happen too early, or does it feel right?

If sharing feedback or requesting tweaks: please let us know which surface you're using. There’s a chance we may calibrate differently for different surfaces via a property.

New Feature: DoublePress Modifier and SetDoublePressTime Action

DoublePress allows any button to respond to a double-press. The default double-press window is 400ms, but you can change this using the SetDoublePressTime action.
When using DoublePress, the first action always fires immediately on press, and the second action fires if the button is pressed again within the double-press window.
Contributor: gaabora

Example usage:

Zone Home  
    OnInitialization            SetDoublePressTime 500      // if you want to change from 400ms default  

    Stop                        Stop  
    DoublePress+Stop            Reaper 40042 Feedback=No    // Go to start of project

New Feature: RunCount Property

Instead of duplicating a line multiple times in zone files to run an action repeatedly, you can now use the new RunCount property to specify how many times an action should run.
Contributor: gaabora

Example:

Zone Home  

    Shift+Up                    Reaper 41327 RunCount=5     // Increase selected track height a little (run 5 times)  
    Shift+Down                  Reaper 41328 RunCount=5     // Decrease selected track height a little (run 5 times)  

Previously, this would have required five separate lines for each press:

Zone Home  

    Shift+Up                    Reaper 41327  
    Shift+Up                    Reaper 41327  
    Shift+Up                    Reaper 41327  
    Shift+Up                    Reaper 41327  
    Shift+Up                    Reaper 41327  

    Shift+Down                  Reaper 41328  
    Shift+Down                  Reaper 41328  
    Shift+Down                  Reaper 41328  
    Shift+Down                  Reaper 41328  
    Shift+Down                  Reaper 41328  

New Feature: MoveEditCursor Beat Option

The MoveEditCursor action now supports a new Beat option, in addition to the existing Bar and Marker options.
Contributor: funkybot

Example:

Zone Home

    JogWheel                         MoveEditCursor Bar   
    Option+JogWheel                  MoveEditCursor Beat    // New  
    Marker+JogWheel                  MoveEditCursor Marker  

Fix: Hold Actions on Mac

Hold actions, which stopped working in the last Exp build, have been fixed.
Contributor: gaabora

Debugging Code

Gaabora's added zone debugging code. If there are any typos in your zone files, legacy actions or properties, or incorrectly configured actions, you'll see a ReaConsole window pop up at launch advising you of the errors.

Do not ignore these, but rather, locate the error and correct it. Contributor: gaabora image

HoldDelay and HoldRepeatInterval Properties Now Work Together

You can now combine the HoldDelay Property with HoldRepeatInterval interval property. Using both together will ensure that the HoldRepeatInterval waits for the HolDelay length before repeating the action. Contributor: gaabora


Fixes for legacy Hold Modifier and SetHoldTime

The Hold modifier was reintroduced, along with fixes for SetHoldTime. This is in addition to the HoldDelay property. Contributor: gaabora

Fix for SetLatchTime

SetLatchTime also received fixes. Contributor: gaabora

Zone Deactivation Fix

This fixes an issue where deactivation was running on all zones, not just the active ones. Contributor: gaabora

Fix for Reaper Crashes With Some Actions

The following actions should no longer crash Reaper. Instead, CSI should essentially silently reload itself after running these actions. Contributor: gaabora

Reaper 41743    // Refresh all surfaces
Reaper 40023    // Open new project
Reaper 40025	// Open project
Reaper 40860    // Close current project tab
Reaper 46000    // Insert track from template

New Actions: TrackSendStereoMonoDisplay and TrackReceiveStereoMonoDisplay

Welcome ZeeByeZon as a first-time contributor! These new actions will show stereo/mono state for sends/receives. Contributor: ZeeByeZon

Zone SelectedTrackSend

    Shift+DisplayLower|     TrackSendStereoMonoDisplay   
Zone SelectedTrackReceive

    Shift+DisplayLower|     TrackReceiveStereoMonoDisplay   

New Action: TrackRecordArmDisplay

And another display action from a first-time contributor, profittlich! This one will show the text "ARM" for any Record Armed tracks, or blank if not armed. Why do we need this when TrackRecordArm already displays the arm state? Some surfaces like the Faderport8/16 don't have dedicated Arm buttons with feedback, so this allows the information to at least be displayed as text. Contributor: profittlich

Zone Track
  ScribbleStripMode Mode=0 // default mode -> 3 lines + valuebar
  
  ScribbleLine1_|          TrackNameDisplay
  ScribbleLine2_|          TrackVolumeDisplay
  ScribbleLine3_|          NoAction
  ScribbleLine4_|          TrackPanDisplay
  Shift+ScribbleLine4_|    TrackRecordArmDisplay 

CLAP, AU, JSFXParam Format Mapping Improvements!

Migrated the TrackFX_Param API calls to the ParamNormalized calls. This should improve, or entirely resolve, issues when mapping stepped CLAP, AU, and JSFXparams. This should also resolve the issue with JSFXParams with negative values failing. Contributor: Funkybot

New Feature: Free Form Text in FX Learn

The Advanced Param Edit window has received a new Free Form Text box. This is useful for adding comments, color instructions, and/or properties (e.g. Feedback=No) to your FX Zones while learning. Contributor: Funkybot

image


Step Size = 1 now defaults to 0.5 (instead of 0.1)

If a Step Size of 1 is selected in the Learn window, the default value that gets written to the zone has changed from 0.1 to 0.5. In most cases, a Step Size of 1 indicates a user is trying to "Reset" a parameter assigned to a press widget, and in those instances, 0.5 is the most common value by far. Contributor: Funkybot


Minor Cosmetic Fixes

Minor cosmetic changes throughout.


Update: April 19, 2025

Linux Build

Thanks to Higgins, CSI now offers official support for Linux! A Linux-compatible build is now available for users running REAPER on Linux.

New HoldDelay Property Replaces SetHoldTime and Hold+ Modifier

Roy contributed a new HoldDelay property that replaces the older Hold+ modifier and SetHoldTime action.
This property allows you to define hold durations per assignment, enabling more flexible behavior.

Old (legacy) format:

Select|                     TrackUniqueSelect  
Hold+Select|                TrackToggleFolderSpill Feedback=No  

New format using SetHoldDelay:

Select|                     TrackUniqueSelect  
Select|                     TrackToggleFolderSpill HoldDelay=1000 Feedback=No  

New HoldRepeatInterval Property for Repeating Actions When Held

Roy also added HoldRepeatInterval, which triggers an action repeatedly while a button is held. The interval is defined in milliseconds.

Example:

F1  Reaper  _XENAKIOS_NUDGSELTKVOLUP   HoldRepeatInterval=100   // Nudge track volume up  
F2  Reaper  _XENAKIOS_NUDGSELTKVOLDOWN HoldRepeatInterval=100   // Nudge track volume down  

Note: Minimum (i.e. fastest) repeat interval is 30 ms.

Improved X-Touch Color Code

Higgins and Roy improved the internal logic for X-Touch LED color handling. This provides more accurate color mapping to match REAPER’s native track color scheme.
No zone changes are required.

Return of Intel Mac Support

Intel Mac support has been restored. Higgins resolved a compiler issue that had previously prevented Intel-compatible builds. CSI now works on both Apple Silicon and Intel Macs.

MIDI Fighter Twister LEDs No Longer Turn Off on Launch

The MIDI Fighter Twister no longer turns off its LED rings when CSI is initialized. This gives users more flexibility in retaining LED states on startup.
You can still manually turn off LEDs using SendMIDIMessage if desired.

Minor Cosmetic Changes to OSC Setup Window

Fixed minor UI glitches including some cut-off text in the OSC configuration window.


Original Release: CSI v7

Surface.txt Files Replace .mst/.ost Files

  • Older .mst and .ost files are now replaced with surface.txt files.
  • All surface.txt files now reside inside a dedicated folder for each device.
  • More details: surface.txt.

New Folder Structure

  • The folder organization has been overhauled. Instead of separate Surfaces and Zones folders, everything is now inside:
Surfaces[DeviceName]\
  • Inside each device folder:
  • FXZones/ → FX parameter mappings
  • HomeZones/ → Home zone configuration
  • GoZones/ → Navigation zone mappings
  • .zon files should be placed in their corresponding subfolders.
  • More details: Installation and Folder Structure.

GoZone Action Replaces GoAssociatedZone

  • The GoAssociatedZone action is deprecated.
  • It has been replaced with GoZone.
  • Zone files must be updated accordingly.
  • More details: Activating Zones.

GoZones.zon Introduced

  • The old AssociatedZones/AssociatedZonesEnd syntax from the Home.zon has been removed.
  • Instead, associated zones are now listed in a new GoZones.zon file.
  • These should be placed inside the GoZones folder.
  • More details:
  • Home Zones
  • GoZones.

Enhanced FX Learning

  • FX Learn has been significantly improved.
  • This replaces many manual mapping tasks and provides a better user experience.
  • Advanced options were added for parameter steps, deltas, acceleration, as well color options and more for supported surfaces
  • More details: Learn Mode.

Automap Deprecated

  • The Automap feature has been removed.
  • The improved FX Learn system is the recommended replacement.

LastTouchedFXParam Replaces FocusedFXParam

  • The FocusedFXParam action has been renamed LastTouchedFXParam.
  • Zone files must be updated accordingly.
  • More details:
  • LastTouchedFXParam.

Buttons Now Included in Home Zones

  • Recommended change: Buttons should now be added directly to the Home Zone instead of being an IncludedZone.
  • Optional: The old method using IncludedZones still works.

New CSI.ini Format

  • The csi.ini file format has been completely revised.
  • Broadcast and Listen options have been modified.
  • Users should reconfigure CSI devices from scratch.

Performance Enhancements & Code Rewrite

  • Various under-the-hood improvements for better stability and efficiency.
  • This is a complete rewrite of CSI.