Flexible table playback by index, concept?


#1

Hello people,

I would like to play samples forward/backward with variable speed. The common way would be using an "lfo/saw lin" object controlling a "table/read interp" object, while a value from 0 to 64 equals the playback position from 0 to 100%. This way it works.

Now i would like to control the playback position not with a ramp up signal like the lfo, but with a index integer I receive from a rotary enocder (600 pulses/rev).
In the example patch I just receive the trigger and count up. Normally it would reset when leaving minimum or maximum treshold.

The problem is, that when receiving a pulse (count up) a short crackeling noise is played whenever I turn the encoder and increase the counter by one. Nothing more. So it seems that the inerpolation here is misunderstood or used the wrong way by me and does not deliver a stream of fractional numbers like the "lfo/saw lin"-object.

As I understand, when playing a 48kHz sample, for normal speed the number at the input of the "table/read interp"-object would have to rise by 48.000 per second.

In PureData I would use a [line~]-object, together with the ramp-up time. So something like this would be needed?

Many Greetings & Thank you for helping,
himi


#2

I also love Pure data and have been missing something like line~ a few times.

Anyway, for the crackling issue, have you tried using conv/NONinterp?


#3

Not sure it will work here (my experience with tables is still limited) but I’ve had good luck with using a smooth object to get rid of clicks when adjusting table reads.


#4

@spacelordmother thanks, that was exactly what I was looking for. It does a similar thing as pd's [line~], interpolates between two values over time at k-rate.

I did like this now. Basically it lets you play samples with the encoder in the way you do it with a CD-DJ controller. Maybe it helps someone else. If you have any suggestions to improve or simplify it please tell me.

The hardest parts was (and still is) to get an idea of the fixed point number computation and all the different value ranges ranges. Before I only used puredata which uses floating point computation and you don't have to worry about anything. This made me a little mad in the beginning, but now I think it all has its deeper purpose and I'm learning something new about bit-shifting and computer math.

Now some serious advertisement :wink: ...groupie talk ... or resume ... (converted right after the first day really using it!)
I think as a high quality tool for (interactive) audio installations the axoloti totaly wins.
There are so many clever things about it and it has a very good workflow i.e. ...

  • voltage monitor (which showed me that mý usb cable was too long)
  • file manager (which is slow, but still useful)
  • shrinkable board with allot of solder pads (I additionally had to desolder the 6.3mm jacks and the USB connector)
  • very goop object browser and active community
  • fixed grid in the patch editor (no more "snap-to-grid/clean-up" function that does not work like in pd)
  • ultra fast compilation and live mode with displays and buttons/dials (missing all this was a pain with patchblocks, and made me sell and never use them again)

Before I would have used a raspberry + puredata, which also works great if you have an i2c soundcard and all the right settings. But setup takes long and the when using gpios and raspberry specific things which can't run on the pc the workflow is very bad (patch on pc, ssh, stop all running scripts/pd-patches, copy new patch, restart all scripts/pd_patches ... and again ...).

I can even run the axoloti on 18650 lipo cells and so have very good, mobile, controllable audio-stuff.