thanks for all the replies

defining `freq`

and `formantFreq`

like in the example above follows the pulsar synthesis chapter in microsound where the pulsaret length (grain duration) is always equal to 1 / formantFreq followed by silence until the next trigger arrives for the case formantFreq > freq. Both of the parameters can be modulated independently. The rectangular window in this case applied with phase < 1 should always have the length of the pulsaret. the pulsaret is always only one cycle of the waveform unless its beeing multiplied by an integer: `sin((1 - phase ) ** 3 * 2pi * sineCycles.kr(4))`

which concatenates a number of single cycles under the window function.

Therefore the window function in the example by @bovil43810 should be adjusted to `t < 1`

instead of `phase < 1`

```
(
{
var snd, snd2, freq, trig, formantFreq, t, phase, dphase;
freq = 100;
formantFreq = 400;
trig = Impulse.ar(freq);
t = Sweep.ar(trig, formantFreq);
phase = 2pi * ((1-t) * (1-t) * (1-t));
dphase = 6pi.neg * (1-t).squared;
dphase = dphase / (pi/2 + 0.065) ; // nudge
snd = SinOsc.ar(0, phase.mod(2pi));
snd = snd * (t < 1);
snd2 = SinOsc.ar(dphase * freq);
snd2 = snd2 * (t < 1);
[snd, snd2]
}.plot(0.02);
)
```

EDIT: im not sure if `dphase`

should be multiplied by `freq`

. i think it should be multiplied by `formantFreq`

.

when you get rid of the curving thats aquivalent:

```
(
{
var snd, snd2, freq, trig, formantFreq, phase, sineCycles;
freq = 100;
formantFreq = 400;
sineCycles = 2;
trig = Impulse.ar(freq);
phase = Sweep.ar(trig, formantFreq);
snd = SinOsc.ar(0, phase * 2pi * sineCycles);
snd = snd * (phase < 1);
snd2 = SinOsc.ar(formantFreq * sineCycles);
snd2 = snd2 * (phase < 0.99);
[snd, snd2]
}.plot(0.02);
)
```

thanks a lot for making the effort to adjust it for beeing used as frequency instead of phase. My algebra / DSP is unfortunately not sufficient enough to know why both of these create different results.

I havent taken SinOscs limitation of Â±8p into account thanks for pointing that out @jamshark70

i now see the reason why probably using `sin((1 - phase ) ** 3 * 2pi)`

makes more sense here, or?

Also thanks for pointing out the necessity for the phase reset.

after looking at how â€śtotal phaseâ€ť is defined and the comparision of FM and PM in this thread Frequency Modulation â€“ Phase Modulation â€“ Delay Modulation (FM / PM / DM)

i thought freq and phase would easily be interchangeable. Seems to be more complicated then i thought, sorry for the noise.

As always, some concepts i try to merge (in this case the chirp beeing used for Pulsar Synthesis + the possibility for aliasing free high index FM on Sin/Saw/Square which needs Squine) are simply not possible or easily not possible.

My specific pulsar implementation was taken from / inspired by @nathan wonderful blog post Pulsar Synthesis | Nathan Ho