Encoder & Paramater Customization - FunkybotsEvilTwin/CSIUserGuide GitHub Wiki

In CSI, encoders can be customized at the surface level within the surface.txt file; see Default Encoder Customization for more details. Additionally, individual encoders can be customized at the parameter/action level for specific responses. These customizations are defined within .zon files.

Custom Encoder Customization

Customizations can override default encoder settings or define behavior where no default exists.

Default Range, Step Size, and Acceleration

By default, CSI uses the full 0.0 to 1.0 parameter range, standard delta values, and no acceleration. However, a typical surface.txt file can be setup to include default acceleration and custom tick sizes; see Default Encoder Customization. To use these defaults, simply map your FX parameter or CSI action to your encoder widget as you normally would.

Encoder1 FXParam 1 "Attack" 

Custom Parameter Ranges

You can limit an encoder's range to a specific portion of a parameter's range. For example, if only the first 66% of a compressor's attack/release range is useful, you can define this limitation in the .zon file.

Encoder1 FXParam 1 "Attack" [ 0.0>0.66 ]

Custom Encoder Tick Size (Custom Delta)

You can adjust the encoder tick size to control how much each tick changes the parameter value. For instance, you might set the step size to 0.005 (0.5%) for finer control.

    Encoder1    FXParam 1 "Attack" [ (0.005) ]

When dealing with TrackPan actions, the following syntax is required.

    Rotary|    TrackPanAutoLeft RingStyle=Dot [ (0.005,0.005) ]

Custom Acceleration Curves

Acceleration curves define how the parameter change rate varies with encoder speed. For example:

  • Slowest turn: 0.001 (0.1% change).
  • Fastest turn: 0.1 (10% change).

This allows precise adjustment of acceleration values per parameter.

Encoder1 FXParam 1 "Attack" [ (0.001,0.005,0.025,0.05,0.1) ]   

Custom Parameter Range With Custom Step Size

You can combine a limited parameter range with a custom step size. For example, you could restrict the parameter to the first two-thirds of its range and set a step size of 0.003 (0.3%).

Encoder1 FXParam 1 "Attack" [ 0.0>0.66 (0.003) ]

Custom Parameter Range With Acceleration

Parameter range limitations can also be combined with custom acceleration curves for enhanced control.

Encoder1 FXParam 1 "Attack" [ 0.0>0.66 (0.001,0.0025,0.033,0.05) ]

Mapping Stepped Parameters to Encoders

Stepped parameters, such as mode selectors or toggles, can be mapped to encoders. For example:

  • Modes: 0.0, 0.5, 1.0.
  • Ensemble options: 0.0 to 1.0 in 0.1 steps.
  • Bypass: 0.0 or 1.0.

Define these mappings in the .zon file for compatibility with encoder widgets.

Zone "VST: Sonsig Rev-A (Relab Development)"
Encoder1 FXParam "3" "Character" [ 0.0 0.5 1.0 ]
Encoder2 FXParam "4" "Ensemble" [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 ]
Encoder3 FXParam "0" "Bypass" [ 0.0 1.0 ]
ZoneEnd

Overriding Tick Count for Stepped Parameters

You can adjust the number of encoder ticks needed to move a stepped parameter. For instance, (12) means CSI requires 12 ticks to move from 0.0 to 0.1. This controls sensitivity.

Encoder2 FXParam 4 "Ensemble" [ (12) 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 ]

Using Acceleration With Stepped Parameters

Custom acceleration can also be applied to stepped parameters. For example:

  • A list in parentheses specifies ticks per step based on encoder speed.
  • Slowest speed: 20 ticks per step.
  • Fastest speed: 3 ticks per step.

Ensure the number of values in the list matches the number of acceleration levels supported by your hardware.

Encoder1 FXParam  "4" "Ensemble" [ (20,15,12,6,3) 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 ]

Note: The acceleration values must correspond to the hardware's transmitted values. Copying and pasting can simplify this process.