I’m floored.<p>While I was interested in programmatic synthesis, I stopped because I found the languages (e.g. Max/MSP, pd, SuperCollider, et al.) too obtrusive. The examples are a pleasure to read:<p><pre><code> (defn chord-progression-time []
(let [time (now)]
(at time (play-chord (chord :C4 :major)))
(at (+ 2000 time) (play-chord (chord :G3 :major)))
(at (+ 3000 time) (play-chord (chord :F3 :sus4)))
(at (+ 4300 time) (play-chord (chord :F3 :major)))
(at (+ 5000 time) (play-chord (chord :G3 :major)))))</code></pre>