On 6/11/15 5:39 PM, Sampo Syreeni wrote:
On 2015-06-09, robert bristow-johnson wrote:
BTW, i am no longer much enamoured with BLIT and the descendents of
BLIT. eventually it gets to an integrated (or twice or 3 times
integrated) wavetable synthesis, and at that point, i'll just do
bandlimited wavetable synthesis (perhaps interpolating between
wavetables as we move up the keyboard).
How do you handle free-form PWM, sync and such in that case? Inquiring
minds want to know.
if memory is cheap, lotsa wavetables (in 2 dimensions sorta like the
Prophet VS having 2 dimensions but with a constellation of many more
than 4 wavetables) with incremental differences between them and
point-by-point interpolation between adjacent wavetables.
one dimension might be the pitch and, if your sampling rate is 48 kHz
and you don't care what happens above 19 kHz (because you'll filter it
all out), you can get away with 2 wavetables per octave (and you're only
interpolating between tow adjacent wavetables). for these analog
waveform emulations, whatever harmonics that adjacent wavetables have in
common would be phase aligned. as you get higher in pitch, some of the
harmonics will drop off in the wavetables used for those higher pitch,
the other harmonics would remain at exactly the same amplitude and same
phase, so for just those "active" harmonics, you would be crossfading
(with complementary "constant-voltage" crossfade) from one sinusoid to
another sinusoid that is exactly the same. but, as you get higher up
the keyboard, in the higher harmonics, you will be crossfading from an
active harmonic to no harmonic.
along the other dimension that would be your sync-osc frequency ratio
(or the PWM duty cycle), i am not sure how many wavetables you would
need, but i think a couple dozen (where you're always interpolating
between just two adjacent wavetables) should be way more than enough.
the waveshapes won't look exactly correct in the interpolated and
bandlimited wavetables, but you can define the wavetables so that all of
the harmonics below, say 19 kHz, are exactly what you want them to be
(they would be the same as the analog sync-osc). the harmonics above 19
kHz would either be zero, on its way to zero (as the pitch moves up), or
possibly folded back but not folded back below 19 kHz.
interpolating between samples within the wavetable is another issue that
depends on the interpolation method. again, if memory is cheap, perhaps
you might wanna put something like 2^12 samples per cycle with harmonics
only going up to, say, the 300th or so (for very low notes). then you
can get away with linear interpolation between samples.
--
r b-j r...@audioimagination.com
"Imagination is more important than knowledge."
--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp