Skip to content

Instantly share code, notes, and snippets.

@rbxbx
Forked from anonymous/overtone-1.clj
Created December 6, 2011 15:38

Revisions

  1. @invalid-email-address Anonymous revised this gist Dec 6, 2011. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions overtone-1.clj
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,7 @@
    (ns test.core
    (:use [overtone.live]
    [overtone.inst.synth]))

    (def kick (sample "kick.wav"))
    (def snare (sample "snare.wav"))
    (def hit (sample "hit.wav"))
  2. @invalid-email-address Anonymous created this gist Dec 6, 2011.
    30 changes: 30 additions & 0 deletions overtone-1.clj
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    (def kick (sample "kick.wav"))
    (def snare (sample "snare.wav"))
    (def hit (sample "hit.wav"))
    (def insts {:kick kick
    :snare snare
    :hit hit})
    (def pat {:kick [1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0]
    :snare [0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0]
    :hit [0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0]})

    (def metro (metronome 135))

    (defn play-pat [beat i]
    (let [t (mod beat 4)
    p (vec (take 4 (drop (* 4 t) (pat i))))]
    (if (= 1 (p 0)) (at (metro (+ 0.00 beat)) ((insts i))))
    (if (= 1 (p 1)) (at (metro (+ 0.25 beat)) ((insts i))))
    (if (= 1 (p 2)) (at (metro (+ 0.50 beat)) ((insts i))))
    (if (= 1 (p 3)) (at (metro (+ 0.75 beat)) ((insts i))))))

    (defn player [beat]
    (doseq [i (keys insts)] (play-pat beat i))
    (apply-at (metro (inc beat)) #'player (inc beat) []))

    (player (metro))

    (metro :bpm 160)
    (metro :bpm 90)

    (defn player [beat] "stop")