no click tabread4~
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.
no click tabread4~
@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 
no click tabread4~
@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/14
When 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)
no click tabread4~
@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" 
no click tabread4~
maybe tabosc4~ is better for this, but I get this message "1202-noise: number of points (100) not a power of 2 plus three". I don't understand what I have to do to make the guard points, or what its asking for...
no click tabread4~
thank you both for your responses 
@whale-av the switch~ is just turning the clone off when its not being used... the perlin~ is the noise source which is being sampled in tabread4~ as an oscillator and the click is happening at every waveform cycle... The resize is for changing the size of the array, to fit the frequency for the waveform. Maybe I should use tabosc4~ for this instead?
wavetable-synth with phasor and tabread4 / no clicking
tabosc4 has a length constraint so this is probably better for samplers etc.
https://patchstorage.com/no-click-phasor-looping-w-tabread-pd-vanilla/

Guard points for tabosc4~
Each time a tabosc4~ reads a value from its table, it uses a combination of the four values closest to the given index. This allows it to produce a suitable value through interpolation even if the index isn't a whole number.
Let's imagine an object that does this without using guard values.
When the object is reading from the start of the table (any index less than 1), one of the four values it needs to combine lies before the start of the table. Because the waveform repeats, this is the same as the value at the end of the table. So the value can be read from there instead.
Similarly, when the object is reading from the end of the table (any index within 2 of the last index), one or two of the values it needs to combine lie beyond the end of the table. Because the waveform repeats, these are the same as the values at the start of the table. So the values can be read from there instead.
So our imaginary object without guard values works - what's the problem? The problem is that checking for those special cases increases the cost of looking up every value. It's more efficient to make copies of the extra values we need - one at the start and two at the end - when setting up the table. This extra work only needs to be done once, and then the lookup code that runs thousands of times per second can be as efficient as possible.
To answer the question about the discrepancy in the documentation about whether we should have three guard points at the end, or one at the start and two at the end: either way will work. Both approaches will produce waveforms that repeat cleanly, but the start point of the waveform (and thus its phase) will differ by one sample depending on which approach we choose. So if it's important to preserve the phase of your original waveform, add one guard point to the start and two to the end.
tabosc4~
Hello everyone,
I am a newbie of PD, so far I used Max-Msp. I have one question: is it possible to use in the same patch more than one tabosc4~, each one with an independent name, each one with its own array object to set the waveform?
Random crackling noise in a patch that has many instances of an abstraction
For examples of additive synthesis, take a look at D07.additive.pd or D13.additive.qlist.pd in Pd Vanilla's documentation.
Note-stealing yes! Turn silent instances dsp off with [switch~].
From a quick look: there is way too much running in parallel in your patch. Could be anything: objects and messages at the same time.
Also avoid clipping at sum of [dac~].
[osc~] or
[phasor~]
|
[cos~]
are reading from a cosine-wavetable.
Stacking many many lots of sines, it becomes cheaper to offline precompute a table for this and read that single wavetable with [tabosc4~], instead of many [osc~] or [cos~].
For Fourier-Synthesis, see sinesum message in helpfile of arrays:
[;arrayname sinesum 4096 1 0.5 0.25 0.125 0.0625, normalize 1(
Also you can do all sorts of offline computing signalerate~ objects, ether with
fast-forward message to Pd (see messages help-file)
or stepping audio-blocks
by banging [switch~] in a [pd sub-patch] (see [switch~] helpfile).

