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

Reply via email to