I am having a hard time understanding what you are suggesting.
> Don't use wavetables!
I would be pleased not to.
> As you have constructed your desired waveform as a continuous function
> all you have to do is work out where any discontinuities in C(n) occur
> and you can band limit those use corrective grains for each C(n)
> discontinuity at fractions of a sample where the discontinuity occurs.
> Adding sync to this is trivial is you just do the same thing, in fact
> you can jump between any two points in your waveform or waveform shape
> instantly if you want to create even more interesting waveforms.
How do I detect discontinuities? It is easy to see when printed visually but I
do not see how I can approach this with code. Do I need the ‘complete’ function
at once and check or can I do it in runtime for each sample. I think so since
you suggest that I can jump around within the function without alias? Because
that would sound like a solution I wanted to have from the very beginning.
> For example a sawtooth is C(1) continuous all the time, it just has a
> jump in C(0) every now and again, so you just band limit those jumps
> with a C(0) corrective grain - which is an integrated sinc function to
> give you a bandlmited step, then subtract the trivial step from this,
> and add in this corrective grain at a fraction of a sample to
> re-construct your fraction of a sample band limited step.
I do not quite get this: C(1). Does it mean I have C(n) values of the function
where C(1) is the second value?
What frequency does the integrated sync function has?
What is a 'fraction of a sample'?
> Similarly you can bandlimit C(1) and C(2) discontinuities, after that
> the amplitude of the discontinuities is so small that it rarely
> matters if you are running at 88.2 / 96 khz.
I am missing to many aspects of your suggestion. Any hints where to learn about
this would be appreciated.
dupswapdrop: music-dsp mailing list