Non serve conoscere la teoria musicale a memoria: Sonic Pi ha scale e chord che restituiscono le note giuste come una lista.
scale(:e3, :minor_pentatonic)
# => (ring 52, 55, 57, 59, 62, 64)
chord(:e3, :minor)
# => (ring 52, 55, 59)
# arpeggio: suona le note della scala una a una
scale(:e3, :minor_pentatonic).each do |n|
play n
sleep 0.2
end
play chord(:a3, :major7) # accordo suonato insieme
scale prende una tonica e un tipo (:minor, :major, :minor_pentatonic, :dorian...) e ti dà le note; chord fa lo stesso per gli accordi.
Combinali con .choose per melodie casuali sempre "in chiave", o con .tick per scorrerle in ordine. La teoria musicale diventa un'API.