I have a problem getting Overtone to correctly play MIDI events. When I load Overtone and define play-note
it works as expected.
(use 'overtone.live)
(def piano-device
(first (midi-connected-receivers)))
(defn play-note [dev x]
(midi-note dev x 100 500))
(play-note piano-device 60)
However, if I want to schedule MIDI events into the future by defining play-melody
, it will play them immediately (all at once), instead of at the specified beats.
(def one-twenty (metronome 120))
(defn play-melody [m]
(let [beat (m)]
(at (m beat) (play-note piano-device 60))
(at (m (+ beat 1)) (play-note piano-device 63))
(at (m (+ beat 2)) (play-note piano-device 67))
(at (m (+ beat 3)) (play-note piano-device 58))))
(play-melody one-twenty)
I have tried to use anonymous functions (wrapping them in fn
) instead of calling play-note
within play-melody
, but I couldn't get it to work. Anyone care to help me out?