Kemper SYSEX Request Parameter Value as Rendered String

  • Hi Folks,


    i try to make an OSC Template to control the Kemper via a 24" Touch Monitor.

    To convert the incoming Hex string(14 bit) to a decimal value (to update the value of the knobs on the touch monitor, when you turn a knob on the kemper) -> msb hex* 128 + lsb hex is used.


    I now want to avoid sending sysex strings like "F0 00 20 33 02 7F 7C 00 4A 04 40 00 F7" to receive the string representation of a certain value to print it under the corresponding knobs.


    But how do i calculate that with javascript or how does the kemper calculate this?

    1. 0 to 16383(x'00 00' -> x'7f 7f') -> -5db to +5db
    2. 0 to 16383(x'00 00' -> x'7f 7f') -> -inf. to +12db
    3. 0 to 16383(x'00 00' -> x'7f 7f') -> 0 to 10 (gain)


    Any hints on that?


    Thanks!

  • For the parameters with a linear range you have to scale the the parameter range to the raw value range.

    In your first example -5db would be 0 and +5db would be 16383.

    Code
    Math.round((value - parameter_min) * 16383.0) / (parameter_max - parameter_min)

    The Request String Parameter SYSEX function hasn't been updated since the reverb update (at the very least) and can't be used for every parameter.

    Some of the reverb parameters, like the Decay Time, have non linear ramps in the range that can't be queried. I've opted to interpolate between fixed points for my own use but that is a bit tedious if you want to map every parameter.