[lookup~] vs [wave~]
Greetings!
I'm starting to learn a little bit about waveshaping and wavetable synthesis. Assembling information from various sources.
I'm having some trouble distinguishing the uses of [lookup~] and [wave~]. At first glance it seems like the only difference is that [lookup~] takes inputs from -1 to 1, and [wave~] takes inputs from 0 to 1. [wave~] also has built in interpolation (which I'm also not clear on exactly what that does). So seems more generally useful.
Does anybody have any thoughts on when to use one or the other? Or the best use cases for each?
Thanks for the input!
Interpolation or not? Say, you want to read sample number 1.2, 1.3, 1.4 (in between samples 1 and 2). With no interpolation you always get the same value: the value of sample number 1. With interpolation, 1.2 will give you a value that's in between the value of samples 1 and 2, but closer to sample #1. Actually, some interpolation schemes use more than 2 samples to compute an intermediary value. You'll have to test and listen to choose your favorite for your application.
about waveshaping and wavetable synthesis. Assembling information from various sources...I'm having some trouble distinguishing the uses of [lookup~] and [wave~].
i'd just add that the basic difference between lookup~ and wave~ is described nicely in your wording here: 'waveshaping'(lookup~) and 'wavetable synthesis'(wave~).
if you go into the 'examples' folder, you can look under the 'synths' section, and see the 'cheby' example(or just type 'cheby' in an empty object box and it'll contain the example patcher within), there you'll see how lookup~ is used for proper waveshaping using chebyshev polynomials... you can even swap wave~ for lookup~ in that example and hear the difference in sound is more-harsh/less-controlled: the example won't apply the same way to predictably controlling "amplitudes of first eight harmonics of each partial of original sound" the way it was originally designed to(another way to think about lookup~ is that it allows you to address a buffer~ (a)symmetrically based around the midpoint of its length - therefore, lookup~ automatically works a certain kind of symmetry into its reading style which allows for a smoother/more-controlled shaping of signals, especially real-world audio signals/waveforms that traverse between -1 and 1... this smoother/more-controlled shaping is also why lookup~ doesn't need as much detailed interpolation(in lookup~'s case the buffer~ content is known as a 'transfer function' and a transfer function will generally be sized appropriately for the distortion/waveshaping it strives to achieve)... but if i recall correctly, somewhere on these forums, i read that lookup~ does have basic 'linear interpolation'(i could be wrong?)).
waveshaping(lookup~) is more a form of distortion, whereby an 'input is (re)shaped by a transfer function', whereas wavetable oscillators(wave~) are a form of synthesis, whereby a phasor input simply reads through a function in order to create an oscillator/waveform from it(you can definitely use lookup~ more like an oscillator, and wave~ more like a waveshaper, but their methods of interface(input ranges in particular) are not designed for as much ease of control in those opposing contexts).
this forum gives me hope in a bleak world