   (letfn [(f [note]
             [(-> note (assoc :duration duration))
              (-> note (update :duration - duration) (update :time + duration))])]
-    (vary t f)))
+    (target t f)))
 
 (defn accent
   "Accent the pitch of the note at time t."
   [t]
   (letfn [(f [note] [(-> note (update :pitch dec))])]
-    (vary t f)))
+    (target t f)))
 
 (defn skip
   "Skip the note at time t."
   [t]
-  (vary t (constantly [])))
+  (target t (constantly [])))
 
 (defn rand-variations
   "Assemble an infinite random concatenation of variations."

(defn part
  "Generate version of the model using the variations fns."
  [instrument model & variations]
  (->>
    model
    ((apply juxt identity variations))
    (map (partial all :part instrument))))

(defn introduce-after
  "Gradually introduce each part after t beats."

; Ostinato with variations ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn target
  "Apply f to the note at time t."
  [t f]
  (fn [notes]
