(
{
var trigger, fund, flashInst;
flashInst = Array.fill(7,
{

trigger = Dust.kr(2)*PinkNoise.ar(1);
fund = rrand(100, 137);
Pan2.ar(
Mix.ar(
Array.fill(7,{
arg counter;
var partial;
partial = counter + 3;
DPW3Tri.ar(fund*partial).atan *EnvGen.kr(Env.adsr(0.01, 0, 0.1, 7.0),trigger, 1/partial) *AY.ar(713)* max(0, LFNoise1.kr(rrand(37.0, 73.0)))
}))*0.2,

1.0.rand2)
});
Mix.ar(flashInst)*0.6
}.play
)

(

{

var trigger, fund, flashInst;

// è un Array di 7 elementi che vengono Mixati e spalmati sui due canali left/right

flashInst = Array.fill(7,

{

// il trigger è un treno di impulsi, la moltiplicazione con il PinkNoise, va ad attenuare l'ampiezza degli impulsi; non ho ben capito per quale motivo;

trigger = Dust.kr(2)*PinkNoise.ar(1);

// la fondamentale dell'iesimo elemento dell'Array è scelta randomicamente tra 100Hz e 137Hz

fund = rrand(100, 137);

// ogni elemento dell'Array e formato da un Array di 7 elementi che vanno a definire le armoniche superiori della fondamentale scelta randomicamente;

Pan2.ar(

Mix.ar(

Array.fill(7,

{arg counter;

var partial;

partial = counter + 3;

// siccome il DPW3Tri presenta delle distorsioni sotto i 200Hz, credo che con il .atan l'arcotangente si vada a convertire, il picco picco [-1,1] del segnale triangolare in [0.78,-0.78] per evitare il clipping e quindi la distorsione; 

// la fondamentale è moltiplicata per la parziale iesima +3

DPW3Tri.ar(fund*partial).atan *

// il tutto è moltiplicato per un inviluppo adsr, con un attacco breve, un tempo di decay nullo, il sustain prossimo allo zero e un tempo di release molto lungo; il trigger dell'EnvGen è il Dust*PinkNoise, mentre il levelscale è inversamente proporzionale alla parziale;

// solo il DPW3Tri moltiplicato all'EnvGen


EnvGen.kr(Env.adsr(0.01, 0, 0.1, 7.0),trigger, 1/partial) *AY.ar(713)* max(0, LFNoise1.kr(rrand(37.0, 73.0)))

 // ci sono altre due moltiplicazioni, con un segnale AY a frequenza fissa e con un valore dato da solo i valori positivi di un LFNoise1 a interpolazione lineare e frequenza randomica; la moltiplicazione con il segnale AY sporca il suono rendendolo più rumoroso e disturbato, mentre la moltiplicazione con i valori positivi dell LFNoise1 rende il tutto intermittente;


// moltiplicato al segnale AY.ar
 
// moltiplicato con LFNoise1

























// segnale finale risultante della Sintesi Additiva dei 7 Array di parziali

























})
)*0.2,
1.0.rand2)

});
Mix.ar(flashInst)*0.6
}.plot(7)
)

Dust.kr
Dust.kr(density: 0.0, mul: 1.0, add: 0.0)

PinkNoise.ar
PinkNoise.ar(mul: 1.0, add: 0.0)

DPW3Tri.ar
//Distortion creeps in for changes at low frequencies when under 200Hz. But very clean above that.
Triangle via 3rd order differerentiated polynomial waveform