[LAU] octaver (plugin) for bass

Fons Adriaensen fons at linuxaudio.org
Sun Jun 8 11:34:53 UTC 2014

On Sun, Jun 08, 2014 at 12:36:17PM +0200, hermann meyer wrote:

> Without downsampling it use (well, 4xtimes more then now) 8% dsp
> load. Most costs in the original source comes from that used values
> are not pre-calculated.
> But indeed, the reason for downsampling is that the limited
> frequency range makes it sound good,

because that removes most of the broadband junk that would be generated

> and for guitar/bass 3kHz are
> far more then enough when you would add a octave up/down to the
> original sound.

True for bass and guitar.

Still this algorithm is far from what it could be. I don't blame
for you that, it's Bernsee who is missing the consequences of his
own analysis (which is valid as far as it goes).

Take alook at his table labeled 'pass #5'. The input signal is
halfway between two bins. Assume we want one octave up. The expected
output signal corresponds exactly to bin 225. For that signal, the
output of the analysis FFT would be (similar to 'pass #1):

bin    amplitude
223    0.000
224    0.500
225    1.000
226    0.500
227    0.000

And that is of course also what the correct input to the synthesis
IFFT should be. Which is quite different from what the algorithm
produces (by scaling each bin individually): 

bin    amplitude
222     0.170 
223     0.000
224     0.849
225     0.000
226     0.849
227     0.000
228     0.170

The result of this after the IFFT is the correct frequency, but
with two periods of the window applied (it will be zero at the

The frequency values that are calculated provide exactly the
information required to avoid this and to do the correct
calculation. But it's just thrown away.



A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)

More information about the Linux-audio-user mailing list