Parameter Range Scaling
Binary
Binary values are either 0 or 1, where 0 means false, off, or disabled, and 1 means true, on, or enabled.
Delay
Delay times are specified in samples at 96kHz. The delay processing object uses this data type, as do the delays within a crossover object.
Conversion to Device
ValueToSend = (milliseconds * 96000) / 1000
Conversion from Device
milliseconds = (ReceivedValue * 1000) / 96000
Discrete
Discrete values are integer values sent to the device without any scaling.
Examples:
Input card gain
Crossover filter type
Parametric filter slope
Parametric filter type
Gain object phase
Expander ratio
- High pass filter type
Gain
This scale is used for gains. It is designed to give a natural feel to graphical faders linearly mapped to the scale's range. A linear range between -10dB and +10dB gives added detail around 0dB, while a logarithmic range from -80dB to -10dB gives a pleasing falloff toward silence. The following graph illustrates this nicely. The X axis is the value sent to the device. The Y axis is the corresponding level in dB.
Conversion to Device
Conversion from dB to device:
If the value is greater than or equal to -10dB:
ValueToSend = dBValue * 10000
If the value is less than -10dB, then the formula is:
ValueToSend = -Log10(-dBValue / 10)) * 200000 â 100000
Conversion from device
Conversion from device to dB:
If the value is greater than or equal to -100000:
dBValue = ReceivedValue / 10000
If the value is less than -100000:
dBValue = -10 * (10 ^ ((ReceivedValue + 100000) / -200000))
where ^ is the exponentiation operator.
Log
Frequency and time controls on filters and dynamics processors use a logarithmic scale.
Frequency values are specified in Hz.
Examples:
High and low pass filter frequencies
Parametric EQ filter frequencies
- Crossover frequency
Speed is specified in milliseconds.
Examples:
Compressor attack
- Compressor release
Conversion to Device
ValueToSend = Log10( Value ) * 1000000
Conversion from Device
Value = 10 ^ (ReceivedValue / 1000000)
where ^ is the exponentiation operator.
Scalar
The Scalar data type uses a decimal fixed-point encoding. Floating-point values are multiplied by 10000 to allow detailed control.
Examples:
Meter reference
Leveller threshold
Parametric filter boost/cut
Compressor threshold
Automixer slope
Parametric filter width
Mixer pan
- Graphic EQ selectivity
Conversion to Device
ValueToSend = Value * 10000
Conversion from Device
Value = ReceivedValue / 10000
DI_SETSVPERCENT and DI_BUMPSVPERCENT
The DI_SETSVPERCENT and DI_BUMPSVPERCENT messages use a 16.16 fixed-point format. The value of the control as a percentage of its total range (i.e. 0 to 100) is multiplied by 65536 to allow for fractions of a percent. The accepted range of values is 0 to 6553600 for DI_SETSVPERCENT, -6553600 to 6553600 for DI_BUMPSVPERCENT.
DI_SUBSCRUBESVPERCENT, DI_SETSVPERCENT, DI_BUMPSVPERCENT, and DI_UNSUBSCRIBESVPERCENT can be used on any control.
Conversion to Device
ValueToSend = PercentageValue * 65536
Conversion from Device
PercentageValue = ValueReceived / 65536
Example Values
10% = 655360 ( 0x00 0x0A 0x00 0x00 )
12.5%= 819200 ( 0x00 0x0C 0x80 0x00 )
50% = 3276800 ( 0x00 0x32 0x00 0x00 )
100%= 6553600( 0x00 0x64 0x00 0x00 )
-10%= -655360( 0xFF 0xF6 0x00 0x00 )
-12.5%= -819200( 0xFF 0xF3 0x80 0x00 )