wavetable entries. I mean, it does a perfect job at DC right? :]
Post by robert bristow-johnson---------------------------- Original Message ----------------------------
Subject: Re: [music-dsp] Antialiased OSC
Date: Sun, August 5, 2018 1:30 pm
--------------------------------------------------------------------------
Post by Nigel RedmonYes, thatâs a good way, not only for LFO but for that rare time you want
to sweep down into the nether regions to show off.
i, personally, would rather see a consistent method used throughout the
MIDI keyboard range; high notes or low. it's hard to gracefully transition
from one method to a totally different method while the note sweeps. like
what if portamento is turned on? the only way to clicklessly jump from
wavetable to a "naive" sawtooth would be to crossfade. but crossfading to
a wavetable richer in harmonics is already built in. and what if the
"classic" waveform wasn't a saw but something else? more general?
Post by Nigel RedmonI think a lot of people donât consider that the error of a ânaiveâ
oscillator becomes increasingly smaller for lower frequencies. Of course,
itâs waveform specific, so thatâs why I suggested bigger tables. (Side
comment: If you get big enough tables, you could choose to skip linear
interpolation altogetherâat constant table size, the higher frequency
octave/whatever tables, where it matters more, will be progressively more
oversampled anyway.)
well, Duane Wise and i visited this drop-sample vs. linear vs. various
different cubic splines (Lagrange, Hermite...) a couple decades ago. for
really high quality audio (not the same as an electronic musical
instrument), i had been able to show that, for 120 dB S/N, 512x
oversampling is sufficient for linear interpolation but 512K is what is
needed for drop sample. even relaxing those standards, choosing to forgo
linear interpolation for drop-sample "interpolation" might require bigger
wavetables than you might wanna pay for. for the general wavetable synth
(or NCO or DDS or whatever you wanna call this LUT thing, including just
sample playback) i would never recommend interpolation cruder than linear.
Nigel, i remember your code didn't require big tables and you could have
each wavetable a different size (i think you had the accumulated phase be a
float between 0 and 1 and that was scaled to the wavetable size, right?)
but then that might mean you have to do better interpolation than linear,
if you want it clean.
Post by Nigel RedmonFunny thing I found in writing the wavetable articles. One soft synth
developer dismissed the whole idea of wavetables (in favor of minBLEPs,
etc.). When I pointed out that wavetables allow any waveform, he said the
other methods did too. I questioned that assertion by giving an example of
a wavetable with a few arbitrary harmonics. He countered that it wasnât a
waveform. I guess some people only consider the basic synth waves as
âwaveformsâ. :-D
i've had arguments like this with other Kurzweil people while i worked
there a decade ago (still such a waste when you consider how good and how
much work they put into their sample-playback, looping, and interpolation
hardware, only a small modification was needed to make it into a decent
wavetable synth with morphing).
for me, a "waveform" is any quasi-periodic function. A note from any
decently harmonic instrument; piano, fiddle, a plucked guitar, oboe,
trumpet, flute, all of those can be done with wavetable synthesis (and
most, maybe all, of them can be limited to 127 harmonics allowing archived
wavetables to be as small as 256).
quasi-periodic note (that means it can be represented as a Fourier series
with slowly-changing Fourier coefficients) and bandlimited. if it's
quasi-periodic and bandlimited it can be done with wavetable synthesis. to
me, for someone to argue against that, means to me that they are arguing
against Fourier and Shannon.
there is a straight-forward way of pitch tracking the sampled note from
attack to release, and from that slowly-changing period information, there
is a straight-forward way to sample it to 256 points per cycle and
converting each adjacent cycle into a wavetable. that's a lotta redundant
data and most of the wavetables (nearly all of them) can be culled with the
assumption that the wavetables surviving the culling process will be
linearly cross-faded from one to the next.
and if several notes (say up and down the keyboard) are sampled, there is
a way to align the wavetables (before culling) between the different notes
to be phase aligned. then, say you have a split every half octave, the
note at E-flat can be a mix of the wavetables for C below and F# above.
it's like the F# is pitched down 3 semitones and the C is pitched up 3
semitones and the Eb is a phase-aligned mix of the two. this can be done
with any harmonic or quasi-periodic instrument, even a piano (but maybe you
will need more than 2 splits per octave).
Post by Nigel RedmonHard sync is another topic...
hard sync is sorta hard, but still very doable with wavetable (and
morphing along one dimension) as long as one is willing to put a lotta
memory into it. each incremental change in the slave/master frequency
ratio (which is a timbre control) will require a separate wavetable to
cross-fade into and out.
--
"Imagination is more important than knowledge."
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp