which kind of interpolation is this?
I don’t get it.
@matt use table of 4096 samples by default, so it will process that interpolation on (for example) FMOp.
Not linear one (i.e. the code following outside that “if”).
But I don’t catch that interpolation tricks :slight_smile
Looks like that code path isn’t doing any interpolation, it’s just converting/wrapping the phase variable into an integer index.
How can it sound so good?
If you look at the FMOP output with a spectrum analyzer with extended amplitude range, you can see the spectrum is quite “dirty” below -60dB, but perhaps BogAudio has determined that is OK in this case.
The fun fact is that FM feedback with a more “clean” op sounds weird compared with this “dirty” generator
Also: whats the benefit of << 16, snap, then >> 16? I also miss that point
I think it’s because he’s doing integer math and does not want to loose precision in the division
But “phase” variable its already uint64_t…
Phase noise in a wavetable oscillator that doesn’t use interpolation (see DDS chips) is directly related to the number of points in the table. There is much information on this if you look at devices intended for RF signal generation. Xilinx has an app note which has useful calculations that you can apply to audio.
yes. I use 2k tables and linear interpolation. I think ages ago I measure it and decided that would give me better than 96 of signal to garbage. If you want super clean sine waves… you know where to find me.
Oh - here’s the comment in my source. I guess I have changed it recently:
// Used to use 4096, but 512 gives about 92db snr, so let's save memory
// working on high purity BasicVCO. move up to 2k to get rid of slight
// High-frequency junk (very, very low);