Posts by sumsar

    I see what you're getting at, even though to me, it sounded like you were phrasing it as a why can't the digital hardware solution be done in software.

    The vast majority of amp modelling developers are doing approximate circuit simulation. Which is a rather well researched topic, in this industry.


    Nonlinear system identification hasn't been explored much in the context of guitar amp modelling. There used to be a software which did some (limited) form of volterra modelling for analog audio efffects, but I've forgotten it's name. It never gained much traction.

    Prior to the Kemper release I don't think there was any research directly applicable to guitar amplifiers.


    Rather than framing it as a hardware or software problem. I do believe that it is more accurate to frame it as a wetware problem ;)

    I hope that one day in the future we will find out exactly how the Kemper profiles. There are often plausible guesses, but I don't sense they are that close.

    In the paper "Block-oriented modeling of distortion audio effects using iterative minimization" the authors reference the kemper patent summarizing it as:



    To the best of my knowledge that would mean that the core model is two linear blocks with a nonlinear block in between.

    The nonlinear block is typically approximated as the sum of a series of polynomials (or curves in general). There's quite a lot of ways to represent the linear blocks, so I won't speculate on those.


    If you're interested the method is part of a field of mathematics called nonlinear system identification. What Neural DSP is doing with the Quad Cortex capture is another instance of this line of research.

    There are obviously a bunch of innovations on top of that model, which, I believe, is what sets the Kemper apart from the Quad Cortex.

    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
    1. 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.

    Nice find!

    I've done a few quick tests and it does appear that extending the single parameter with two values sets up the morph range.

    It sure would be nice to get an update on the profiler midi parameter documentation some time.


    The only caveat I'm aware of in regards to morphing is that using the same slot selection cc's twice triggers the morph. Using a program change instead does not.

    I've been ignoring morphing because the documented way wouldn't be feasible for my use. But if this way works smoothly, I could do a lot with it.

    Thanks for sharing :)

    Linear parameter values have to be scaled into a range of 0-16383.

    The mix parameter has two 100% ranges, the first is dry and the second is wet.

    Assuming you mean 90% dry, the scaling would be: 16383 * 90 / (100+100) = 7372


    For non-linear parameter values you either have to interpolate between known values or create a lookup table.

    The Request Parameter Value as Rendered String function can be used to build lookup tables for some parameters, but it doesnt return the right value for others.

    In the MIDI protocol the top bit (the 8th bit) is reserved as a special marker. So the kemper uses an encoding for 14-bit NPRNs to ensure that the top bit of each byte is cleared.

    Quote


    F0 00 20 33 02 7F 01 00 3C 00 00 91 F7

    Because 0x91 is bigger than 0x7F (the maximum 7-bit value). The overflowing bit has to be shifted into the preceding 7-bit byte.

    So for 0x91 the byte values would have to be:

    0x91 >> 7)= 0x01 bitwise shifting the value right by 7 bits leaves the upper 7 bits.

    0x91 & 0x7F = 0x11 bitwise anding by the maximum 7-bit value leaves the lower 7 bits


    Which gives:

    F0 00 20 33 02 7F 01 00 3C 00 01 11 F7

    With UI to MIDI enabled you can monitor which messages are generated for most of the editing you can do on the kemper.

    I've done it for the new delays and reverbs a while ago, for a similarish use case.

    In my implementation I have not been able to dynamically setup reverbs without leaving an audible gap.

    My approach was to first set the stomp type, toggle it on and finally set the needed effect parameters.

    I think morphing would be better if the limitations fit your use case.

    Rig Manager stores the rigs and tags in separate sqlite databases for each folder you create. Mirroring the folder structure of your local library.

    I'm not sure why they've chosen this design but I can understand why they might have an aversion to implementing sub folder search on top of it.