Ecasound MIDI Controller Parameter Resolution

Ecasound supports both standard 7-bit and high-resolution 14-bit MIDI Continuous Controllers (CC) for real-time parameter control and automation. When interfacing with external MIDI hardware or software controllers, Ecasound translates discrete 7-bit values (128 steps) and combined 14-bit values (16,384 steps) into continuous floating-point ranges to adjust internal audio processing parameters smoothly.

7-Bit MIDI Controller Resolution

Standard MIDI continuous controller messages operate at a 7-bit depth. Ecasound processes these messages using the native standard resolution:

  • Discrete Steps: 128 distinct values, ranging from integer 0 to 127.
  • Step Size: Approximately 0.787% of the total target parameter range per step.
  • Application: Standard volume controls, pan positions, standard effect wet/dry mixes, and basic plugin parameters that do not require ultra-fine tuning.

When a 7-bit controller is bound to an Ecasound chain operator parameter, the incoming integer value \([0, 127]\) is linearly mapped to the target parameter's defined minimum and maximum range (\([P_{min}, P_{max}]\)).

14-Bit MIDI Controller Resolution

For parameters requiring higher precision, Ecasound supports 14-bit dual-byte MIDI CC pairs. This implementation combines a Most Significant Byte (MSB) controller with a Least Significant Byte (LSB) controller:

  • Discrete Steps: 16,384 distinct values, ranging from integer 0 to 16383.
  • Step Size: Approximately 0.0061% of the target range per step.
  • Controller Pairing: Utilizes standard MIDI CC pairings, where CC 0 through 31 serve as the MSB (coarse adjustment) and CC 32 through 63 provide the matching LSB (fine adjustment).
  • Application: High-precision filter cutoff frequencies, wide-band pitch adjustments, and high-dynamic-range gain stages where 7-bit mapping can introduce audible stepping or "zipper noise."

Internal Processing Resolution

Regardless of whether 7-bit or 14-bit controllers are used, Ecasound converts the incoming MIDI integer data into its internal continuous parameter format:

  • Internal Representation: Parameters are represented internally as single- or double-precision floating-point values (float or double).
  • Value Normalization: Incoming controller data is normalized to a normalized range \([0.0, 1.0]\) before being scaled to the actual parameter limits defined in the chain setup.
  • Control Rate: Updates occur at the audio processing buffer boundary (determined by the buffer size and sample rate set via the -b command-line option), ensuring synchronization with real-time audio playback.