Talk:Sound Synthesis Theory/Oscillators and Wavetables

Rounding vs. truncation
When resampling a digital signal, doesn't rounding produce a result that is identical in practice to truncation? The only difference between the two is a 1/2 sample group delay. And no, linear interpolation is not the most complex, most precise practical scheme. Cubic, quintic, and higher interpolations are used in some cases. --Damian Yerrick 21:48, 27 August 2007 (UTC)


 * Poor writing on my part; I was trying to say that it was the best of the three. I think rounding is more accurate because, for instance, a fractional jump calculated to 1.9 will be rounded to 2 rather truncated to 1 which is "further" from the desired position of the read pointer. Damien Karras 17:16, 28 August 2007 (UTC)


 * I just happened upon this page, and was about to add exactly what Damain Yerrick said years ago; Damian Karras: Rounding is equivalent to adding 0.5 and truncating, so the only difference between the two is a phase shift of Pi/table_length radians. Since you can't hear that phase shift in a free running oscillator, you can't consider it as error in the practical sense. I also thought it was a bit much to say that linear interpolation is "much more computationally demanding"—it's a modest increment, so some of that hyperbole should go (at least the "much"). And at that point it's worth at least mentioning that higher order interpolation methods further improve precision at the cost of increased computational overhead.—Earlevel (discuss • contribs) 09:46, 5 February 2012 (UTC)

Wavetables
"Wavetables are popular in digital synthesis applications because accessing a block of memory is computationally faster than calculating values using mathematical operations." Disagree—wavetables are not computationally faster. Take a (naive) sawtooth wave, for instance, as described earlier on the page. For the wavetable version, you need to create that same sawtooth, essentially, then use it to look up the corresponding wavetable entry. Wavetables are popular because of flexibility (the wavetable can hold any static waveform without change in the playback code, and it's easier to have control over aliasing by controlling the harmonic complexity of the waveform—something that is difficult with naive wave generation).Earlevel (discuss • contribs) 18:14, 5 February 2012 (UTC)

Using wavetables
"Digital systems, especially mixers that combine several synthesized or recorded signals, are designed to work at a fixed sampling rate and to make sudden changes to it is once again inefficient and extremely hard to program." If the hardware supports it—which it must or this wouldn't be in discussion—programming is extremely efficient and easy. The real reason is that you can't multiplex the oscillator—you can't generate several independent oscillators (or other functions) at the same time.Earlevel (discuss • contribs) 18:26, 5 February 2012 (UTC)