hi all, i'm new here, and with pd generally. ive been doing my best not to ask too many idiot questions but here's the first..
i'm attempting waveshaping using a lookup table and tabread4~. my table contains a linear ramp at the moment. but:
what i've noticed though is with a small table (100 points) i get a distortion that sounds like bit-depth reduction. it goes with a larger table. surely though, if tabread4~ interpolates this shouldn't happen? have i just made a buggy patch or is there a finer point i'm missing?
thanks, james
Hallo, james holden hat gesagt: // james holden wrote:
what i've noticed though is with a small table (100 points) i get a distortion that sounds like bit-depth reduction. it goes with a larger table. surely though, if tabread4~ interpolates this shouldn't happen?
Even with interpolation you can get these kinds of artifacts, so I'd recommend using a bigger table. RAM is cheap. Generally it's starts to be fun at 512 and above.
Frank Barknecht _ ______footils.org_ __goto10.org__
On Mon, 21 Nov 2005, james holden wrote:
i'm attempting waveshaping using a lookup table and tabread4~. my table contains a linear ramp at the moment. but: what i've noticed though is with a small table (100 points) i get a distortion that sounds like bit-depth reduction. it goes with a larger table. surely though, if tabread4~ interpolates this shouldn't happen? have i just made a buggy patch or is there a finer point i'm missing?
With a four-point interpolator you're supposed to be able to get perfectly any linear ramp, or even quadratic ramp or cubic ramp. If you don't then something else is wrong. How do you fill your table? How do you use [tabread4~] to sample it?
Whatever your input range is, you have to correctly scale it to fit the coords of your table. So with a 100-point table with 4-point centered interpolation, you have to use indices in the range from 2 to 97 (that is, reserve two indices at each end of the table). Thus if your input signal is in the range from -1 to +1, you will need to rescale it like:
[expr~ 2+($v1 - -1)*(97 - 2)/(1 - -1)]
that is:
[expr~ 49.5+$v1*47.5]
or just:
[*~ 47.5] | [+~ 49.5]
Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju Freelance Digital Arts Engineer, Montréal QC Canada