Di default in Sonic Pi sleep 1 dura un secondo. Ma con use_bpm cambi l'unità di misura: sleep 1 diventa "un beat", e la velocità del brano la decidi in battiti al minuto.
use_bpm 128 # da qui, sleep conta in beat, non in secondi
live_loop :beat do
sample :bd_haus
sleep 1 # un movimento
end
live_loop :hats do
sample :drum_cymbal_closed
sleep 0.25 # un sedicesimo
end
A 128 BPM, sleep 1 dura circa 0,47 secondi. Il vantaggio è enorme: ragioni in termini musicali (movimenti, sedicesimi) invece che in secondi. Cambia il use_bpm e tutto il brano accelera o rallenta restando in sync.
Puoi anche usare use_bpm_mul 2 per raddoppiare localmente il tempo di un loop. Pensare in beat invece che in secondi è il passaggio mentale che ti fa smettere di calcolare e iniziare a comporre.