La musica generativa è codice che compone al posto tuo. In Sonic Pi il mattone è il ring: una lista circolare che scorri con .tick.
notes = (ring :c4, :e4, :g4, :b4, :a4)
live_loop :arp do
play notes.tick, release: 0.2 # avanza a ogni giro, poi ricomincia
sleep 0.25
end
# due ring di lunghezza diversa creano pattern che si spostano
durate = (ring 0.25, 0.25, 0.5)
live_loop :ritmo do
sample :bd_haus
sleep durate.tick
end
.tick avanza di uno a ogni chiamata e torna all'inizio quando finisce; .look guarda il valore corrente senza avanzare. La magia nasce quando combini ring di lunghezze diverse: le note e le durate si sfasano, generando pattern che si evolvono per decine di battute prima di ripetersi.
Poca scrittura, tanta musica: è il fascino del generativo.