Hello
I have made this plugdata device, but I can't make tabread4~ stop clicking. I looked at some examples on this forum, but I didn't fully understand them, which made it hard for me to implement them, so im attaching my patches and hoping someone will help me
Thank you
perlin klaver.zip
-
no click tabread4~
-
@mezko Guard points can be added using this handy patch (made by @lacuna if I remember correctly).
Because [tabread4~] interpolates the samples a copy of the last samples in the array needs to be added to the start..... Array Guard.zipHere I have maybe softened the [switch~] .... that might help.......
EDIT... Error in previous upload........... per.zip
David. -
@whale-av thank you again... I don't understand the array guard patch, and don't know how to implement it. I have tried to use tabosc4~ instead, because I think its more what im looking for, but I get this message "number of points (100) not a power of 2 plus three"

-
@mezko
Pd is a fairly low-level language, more so than it is common in the music software world. Another way to say this is, Pd is closer to C-Sound than to any VST. I'd say it is even closer to C-sound than to a modular-software, such as VCV-Rack or Reaktor.
You have to understand things more in depth than "I want this, I tryed that, it klicks, please make it work." If you want things easier, use sth different than Pd.
Also read this post by @Boran-Robert https://forum.pdpatchrepo.info/topic/13054/starting-a-pure-data-wiki-database-examples-collection/14When you are asking questions in the forum, please make it as easy as possible for us to answer and make some effort yourself!
Did you already search? Did you read the helpfile of tabosc4~ ? Did you read the helpfile of array-guard ? (here is the original post: https://forum.pdpatchrepo.info/topic/14301/add-delete-guard-points-of-an-array-for-4-point-interpolation-of-tabread4-ect )What is it that you do not understand?
This forum is very helpful, but "I don't understand" is not not enough to give any answer.
If you want low-level, I recommend learn the basics by going through Vanilla's example patches and manual.Don't want to sound like a gatekeeper or so but this is basic netiquette.
On your question about clicking:
a) What is a click? We hear a click when there is an abrupt change in the waveform.
b ) When does it happen? At the wrap around of the reading [phasor~]>[tabread4~]
c) There is a jump between the last sample and the first sample, so it clicks
d) How to solve this?
e) One way is to use a triangle-wave reading the array instead of a saw-tooth ramp. This gives us a continous loop back and forth without glitch.I think @willblackhurst solution is similar, but instead of reading back and forth it builds an array by mirroring the original array, to build a continous loop.
As last step you can make the triangle drive the tabread4~ between guardpoints, but I don't think missing guardpoints are the reason for clicks.
(I am also missing externals to test the patch)
-
here is a patch to play with, as always in DSP there are tradeoffs to choose.
Also you can drive Perlin noise directly without glitches, without an additional array.
-
@lacuna hello... its alright, im not used to using forums, so I guess other people who are on here more are more used to how to ask and answer questions... I sometimes feel that I won't ask here in fear of asking dumb questions and irritating people who know more about it, but I do appreciate people who are willing to help, cause for me this is some difficult stuff... I still like pd even if it's a low-level language, most of the stuff I make works and I find it fun to find my own solutions
I will try to explain my question in more detail:
I started with tabread4~ to be an oscillator with a sampled waveform of the perlin noise generator. Now I want to try to use tabosc4~ as I have an idea that it will work better... What I imagined is that tabosc4~ reads the table of the sampled bit of Perlin noise and I thought the guard points was there to make a fast crossfade between the end and the start of the loop... is this right? Anyways I tried to read how to add the start points and (that is how my brain works) didn't understand how to implement it. I thought you could add some extra samples to the length of the table and it would happen automatically but maybe im wrong... That is about as good as I can explain. Anyways I don't wanna bother anyone more with this, so if nobody is able to help or understand my question, ill just work around a homemade solution, that doesn't rely on stuff I don't understand
-
dumb questions
I didn't say that.
I thought the guard points was there to make a fast crossfade between the end and the start of the loop... is this right?
The "4" in [tabread4~] [tabosc4~] ect. stands for four-point interpolation. It inter-sample interpolates. This is useful when you read an array at different sampling-rate than the patch/system's sampling-rate. This happens if you change the read-speed or of the array or if it has different samplerate. By interpolating between samples you get a value anytime, even between samples.
The interpolation algorithm requires 4 points, and to work as intended, it requires an array-size in the power of 2 plus 3 samples have to be added at the edges of the array.
You can read about this in more detail in the array-guard helpfile and further links mentioned there.
There is also [tabread~] that does not inter-sample interpolate.I thought you could add some extra samples to the length of the table and it would happen automatically
Take an array in the size of power of two (256 for example) and use array-guard to add the guardpoints.
But I don't think that the click is about inter-sample-interpolation-artifacts.
Check out the patch I uploaded in my last post.crossfade between the end and the start of the loop
Yes, this would be another common way to get rid of the click.
Also, you can read Perlin directly, without array, check Perlin helpfile.
-
@lacuna ah ok, then I must have misunderstood what the interpolation is about... it might not be what im looking for after all. then I can understand if my question didn't make sense
sorry.
Im not sure what you mean that I can read perlin~ directly. Do you mean the audio output? Cause the idea was to loop a small part of the perlin generator, not just use the output directly. The easiest way to do what I want, is to have two waveforms running switching between each other and creating a crossfade between them myself to avoid click then, right? thanks
-
switching between each other and creating a crossfade
Pd Vanilla's example patches (I don't know if PlugData has them):
Read B.07.sampler.pd until B.13.sampler.overlap.pd -
@lacuna perfect, thank you
