Skip to content

Instantly share code, notes, and snippets.

@pcsanwald
Created October 15, 2012 00:12
Show Gist options
  • Save pcsanwald/3890237 to your computer and use it in GitHub Desktop.
Save pcsanwald/3890237 to your computer and use it in GitHub Desktop.
Overtone drum loop of John "Jab'o" Starks' groove on James Brown's "Licking Stick"
(def snare (sample (freesound-path 26903)))
(def kick (sample (freesound-path 2086)))
(def ch (sample (freesound-path 802)))
(def oh (sample (freesound-path 26657)))
; define a metronome that will fire every eighth note
; at 100 bpm
(def met (metronome (* 100 2)))
(defn subdivide
"subdivide two time intervals by 4, and return the time interval
at position. this is a cheap hack to schedule 16th notes without
defining the whole pattern with the metronome firing every 16th note."
[a b position]
(+ a (* position (/ (- b a) 4) )))
(defn licking-stick-drums [nome]
(let [beat (nome)]
; hi-hat pattern
(at (nome beat) (ch))
(at (nome (+ 1 beat)) (oh))
(at (nome (+ 2 beat)) (ch))
(at (nome (+ 3 beat)) (ch))
(at (nome (+ 4 beat)) (ch))
(at (nome (+ 5 beat)) (oh))
(at (nome (+ 6 beat)) (ch))
(at (nome (+ 7 beat)) (ch))
; snare pattern
(at (nome (+ 2 beat)) (snare))
(at (subdivide (nome (+ 2 beat)) (nome (+ 4 beat)) 3) (snare))
(at (subdivide (nome (+ 4 beat)) (nome (+ 6 beat)) 1) (snare))
(at (nome (+ 6 beat)) (snare))
(at (subdivide (nome (+ 6 beat)) (nome (+ 8 beat)) 3) (snare))
; kick drum pattern
(at (nome beat) (kick))
(at (nome (+ 5 beat)) (kick))
(at (nome (+ 7 beat)) (kick))
(apply-at (nome (+ 8 beat)) licking-stick-drums nome [])))
(licking-stick-drums met)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment