Hey All,

I've been burning my brain over this issue lately and I can't seem to come up with an elegant solution, and stay with me here as I attempt to explain it best I can.  For me and my needs, being able to quantize an arbitrary signal to any arbitrary series is the Holy Grail (and I'm not talking about simple table lookup!).

I'm looking to quantize an incoming signal (or value) given a max and min quantization value and an arbitrary curve.  Think quantization of note events to a series of note lengths or your standard bitcrush algorithm, it's pretty much the same.  The arbitrary curve should influence the degree to which the bitcrush algorithm is applied to the signal such that one could have less quantization at smaller values of the input signal, and greater quantization and larger values (or vice versa).  Simple table-lookup is insufficient as it requires you to pre-define a maximum input signal amount.  I'm willing to waive this requirement if an implementation is not possible without it.

This will be used in the following circumstances:
  1. To quantize envelopes signals to any arbitrary series (say !, Fibonacci, x^2, 2^x, etc)
  2. To quantize signal loop length values to an arbitrary series of note values (say 1/16, 1/8, 1/2, 1/1)
  3. To apply non-linear bitcrushing to a signal such that higher values are expressed with less of an effect than smaller values
  4. To quantize pitch events to a pre-defined series
     
Is this making sense?

My attempts thus far has extended the RjDj bitcrush abstraction with mild success.  I can recreate the effect but the output signal bears too many artifacts from the input signal (ie: the curve retains part of it's original slope from the input signal and is not flattened or held until the next value).

Thanks,
~Brandon