RE:sc-tweet #1
play{AY.ar((Hasher.ar(Latch.ar(AY.ar((1..3)!2),Impulse.ar([7/3,1])))*337+317).round(73),0,LFNoise2.ar(3,1/3,1/3))/7}//#supercollider
AY.ar(tonea: 1777, toneb: 1666, tonec: 1555, noise: 1, control: 7, vola: 15, volb: 15, volc: 15, envfreq: 4, envstyle: 1, chiptype: 0, mul: 1, add: 0)
Emula lo strumento AY-3-8910 (a.k.a. the Yamaha YM2149) a tre voci, tre suoni chip.
i tre suoni chip :
tonea : (Hasher.ar(Latch.ar(AY.ar((1..3)!2),Impulse.ar([7/3,1])))*337+317).round(73)
toneb : 0
tonec : LFNoise2.ar(3,1/3,1/3)
Latch.ar(in: 0.0, trig: 0.0)
Il Latch mantiene l'input quando viene triggherato e genera zero all'inizio fino a quando non viene triggherato; nel nostro caso è triggherato da un doppio generatore di impulsi; quindi probabilmente il Latch campiona due valori secondo frequenze diverse;
questo è il segnale che viene campionato sui due canali stereo secondo il trig dei due impulsi;
{AY.ar((1..3))}.plot
{Latch.ar(AY.ar((1..3)!2),Impulse.ar([7/3,1]))}.plot
{(Hasher.ar(Latch.ar(AY.ar((1..3)!2),Impulse.ar([7/3,1])))*337+317).round(73)}.plot(10)
Hasher.ar(in: 0.0, mul: 1.0, add: 0.0)
L'Hasher è un generatore Hash, che genera valori tra -1 e 1 a seconda dell'input che riceve secondo una funzione Hash; lo stesso valore di input genererà lo stesso valore hash in output; il segnale di input non ha bisogno di essere nel range di -1 e 1.
Impulse.ar(freq: 440.0, phase: 0.0, mul: 1.0, add: 0.0)
Genera in output impulsi non limitati in banda; in teoria quindi se si superano i 22050 Herz di frequenza avremo un mirror nello spettro in frequenza?
round
round(a, b)
a round: b
a.round(b)
Arrotonda al più vicino multiplo di b;
LFNoise2.ar(freq: 500.0, mul: 1.0, add: 0.0)
{LFNoise2.ar(3,1/3,1/3)}.plot(10)
Genera valori casuali interpolati quadraticamente ad una velocità data dalla divisione intera più vicina della frequenza di campionamento freq.