[sdiy] Vocoder dabblings
ASSI
Stromeko at nexgo.de
Sat Dec 1 10:16:51 CET 2012
Hi Richie,
On Thursday 29 November 2012, 22:57:53, Richie Burnett wrote:
> Eric, it's interesting to hear that you already use this technique for RF
> stuff. Thanks for the magnitude estimation formula. I hadn't seen this
> trick before!
Additionally, this may give some more insight:
http://www.iro.umontreal.ca/~mignotte/IFT2425/Documents/ARootOfLessEvil.pdf
> Im currently using a MAC instruction to square a number inside a
> successive-approximation loop in order to calculate the square-root to
> 16-bits after 16 guesses. The sample rate is heavily decimated for the
> bottom few vocoder bands so can do a bit more number crunching here than
> I could afford in the top bands!
The trick to shave off iterations is to start with a better guess.
The equiripple-error estimator from the link above gives you seven correct
bits for (roughly) the cost of two iterations, so you only need 9 more
iterations to go to full precision.
However, you are _tracking_ the magnitude of a bandpass analytic signal.
The envelope of this signal is itself a lowpass signal, which means its slew
rate has an upper limit. You should be able to chop off some (more)
iterations if you use this fact to make an initial guess that is very close
to the true value. The simplest estimator of a signal that doesn't change
"fast" is the previous sample. The first order difference of your envelope
signal will show you to how many bits this estimator is accurate and how
many iterations you need to fully accuracy. Note that some iteration
procedures assume that the estimate is lower than the true value, which
means you can't directly use the previous sample in those cases. You can
probably combine this with an estimator for either the magnitude itself or
the change of magnitude from the previous sample (especially if you have the
first order differences of the I and Q signal already around somewhere), but
the added complexity of the estimator probably outweighs the saved
iterations.
Regards,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
Waldorf MIDI Implementation & additional documentation:
http://Synth.Stromeko.net/Downloads.html#WaldorfDocs
More information about the Synth-diy
mailing list