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