(
{
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