# [PD] setting phasor's phase without clicks

Frank Barknecht barknech at ph-cip.uni-koeln.de
Thu May 16 09:25:37 CEST 2002

```Krzysztof Czaja hat gesagt: // Krzysztof Czaja wrote:

> finally found some time to look closer at the math (I am math-blind
> without a sheet of paper).

Me, too. And I should have used wrap~ indeed, that does the same [>~
1] and substracting 1 or 0, I just didn't think of it. All those objects...

> The min~ solution is apparently cheaper than Varga's, and the output
> scaling is not tricky at all -- it is: ((a + 1) / a) * min~(x, a *~
> (1 -~ x)).  The input (`a' coeff) scaling is best done with an exp,
> in order to have symmetric control around zero.

The important idea behind Varga's algorithm is "Bandlimiting".  The
standard phasor has harmonics beyond the Nyquist frequency because of
the abrupt changes from 1->0 and unfortunatly now that I took a sheet
of paper, the way I realised trisaw has the same problem. Duh. I
looked closer at Varga's code and he uses a new Csound function table
generator, GEN30. This does the following:

"GEN30 extracts a range of harmonic partials from an existing
waveform"

The 4(x-x^2) expression is used in Varga's code to fill a table with
such a waveform, that GEN30 then reads while limiting the upper border
of the harmonics range.

Because these gen30-generated table later is used in an oscili
(==tabosc~ in PD) with varying frequency, one cannot simply use one
table for every trisaw~ frequency, because that would introduce
aliased frequencies again. Varga's solution is to fill 128 tables,
one for each midi note, with GEN30-functions from 4x(1-x) polynoms and
limited upper harmonic borders of "nyquist_frequency/note_frequency"

All this I didn't do in my trisaw~ and so I alias the same amount as
you.

Life's a dog.

ciao,
--
Frank Barknecht                                  _ _______footils__

```