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
0to127. - 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
0to16383. - 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
(
floatordouble). - 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
-bcommand-line option), ensuring synchronization with real-time audio playback.