On 13/02/15 11:19, Claude Heiland-Allen wrote:
On 13/02/15 10:32, Roman Haefeli wrote: I'll do some tests later today (but if you want to get there first the ramp is somewhere in "bl-gen-abs~.pd", perhaps try making it 1 all the way to SR/2).
2 weeks later, I finally got around to it...
I tried adjusting the filter ramp, it only made things worse (more aliasing). So it's still the same as it was.
There's also an offset in the index generation, [-~ 1] somewhere after the [log~ 2] in "bl-tabread4~.pd", changing this to [-~ 0.5] or even [-~ 0] should brighten the sound but risks audible aliasing.
In fact the offset was too high already - I added a spectrum view, there were (small, but visible) peaks moving to the right when the frequency of the oscillator was moving to the left. I changed the offset to [-~ 1.5] and the problem seems gone, at least when using [bl-tabread4c~].
The repository now has a [tabread4c~] abstraction using 4x [tabread~] and some maths (still vanilla core, no [expr~] even), and a [bl-tabread4c~] that uses it (same as [bl-tabread4~] except for much nicer sounding interpolation and presumably somewhat higher CPU usage).
Perhaps you just need to copy a larger table region
I increased the size of the source waveform table in the example, now copying shouldn't reduce harmonics (as the largest table is the same size).
Claude
On Thu, 2015-02-12 at 16:06 +0000, Claude Heiland-Allen wrote:
Hi all,
Today I implemented bandlimited wavetables in Pd vanilla using the idea behind mipmapping in OpenGL (ie, generate many filtered and downsampled versions of a source, use the most appropriate version(s) by a function of the derivative of the lookup index).
More info and full source (quick start tutorial: bl-example.pd):
https://gitorious.org/maximus/pd-bl
License: same as Pd vanilla.
Advantages over other implementations:
- Can generate wavetables from any waveform stored in a table.
Disadvantages:
- The higher harmonics are reduced compared to an optimal method.