Finora abbiamo utilizzato i cicli programmando all'interno un solo tipo di evento. Ad esempio o solo suoni percussivi ("sound"), o note singole ("note"), o scale e arpeggi ("scale"). Ora invece mostreremo come sia possibile inserire all'interno di uno stesso ciclo eventi di natura diversa, o anche come sia possibile concatenare fra di loro diversi cicli, creando così una forma musicale.
Nella notazione qui accanto usiamo la funzione "seq". Separando i cicli con una
virgola, essi vengono compressi all'interno di un ciclo unico.
Se invece si desidera eseguire i cicli uno dopo l'altro si può usare la funzione "cat".
Una variante di "cat" è "timeCat" che cambia la velocità del ciclo in base ad un numero
indicato prima del ciclo stesso, come si può vedere nella notazione accanto. Se i
numeri sono tutti uguali i cicli hanno la stessa durata, se invece variano, hanno
una durata proporzionale ai numeri.
Strudel si basa sulla ripetizione infinita di un ciclo che può essere modificato dal vivo attraverso l'aggiunta trattamenti del suono in tempo reale. La forma musicale intesa in senso tradizionale invece prevede la combinazione di diversi elementi (cicli) in sequenza temporale, con un inizio e una fine. Per questo motivo l'organizzazione formale richiede una programmazione un po' più complessa, come quella riportata qui sotto.
Questo codice è suddiviso in tre blocchi:
1) definizione delle parti ("let")
2) definizione delle sezioni ("let" ... = "stack" ....
3) definizione della sequenza e della durata delle varie sezioni ("arrange)"
DEFINIZIONE DELLE PARTI: si usano le funzioni già note da sole o anche già predisposte in sequenza usando "cat". Nell'esempio accanto abbiamo "percussions", "arp", e "bass".
DEFINIZIONE DELLE SEZIONI: nel blocco successivo usando la sintassi "let <nome della sezione> = stack (<nome delle parti separate da virgola)" si definiscono i contenuti delle varie sezioni.
DEFINIZIONE DELLA SEQUENZA: a questo punto non resta che definire la forma della composizione combinando fra loro le varie sezioni e definendo la loro durata in cicli. La sintassi è "arrange ([<numero dei cicli>, <nome della sezione], [<altra sezione>]", etc.