     ;;(live-sequencer (now) ms-per-pattern *beats)
     ;; (live-sequencer (metro (inc (metro))) ms-per-pattern *beats))
     (live-sequencer (metro (next-beat (metro) 0 beat-per-pattern)) ms-per-pattern *beats))
-  (laserplayer (next-beat (metro) 0 beat-per-pattern))
   (init-latchbell-mod (:rate @latchbell-arg))
-  (apply-by (metro (next-beat (metro) (+ 4 (* 7 beat-per-pattern)) (* 8 beat-per-pattern)))
-            #'swap! [*beats assoc laserbeam [d _ _ [d d] (vec (repeat 64 0.8)) _ _ d _ _ d _ b _ _ [d d d]]])
-  (apply-by (metro (next-beat (metro) 0 (* 8 beat-per-pattern)))
-    #'swap! [*beats assoc laserbeam [d _ _ [d d] (vec (repeat 64 0.8)) _ _ d _ _ d _ b _ _ [d d d]]])
+  (apply-by (metro (- (next-beat (metro) 0 (* 8 beat-per-pattern)) 1/16))
+            #'swap! [*beats assoc laserbeam [d _ _ [_ d d] (vec (repeat 64 0.5)) _ _ d _ _ d _ b _ _ [d d d]]])
+
+  (apply-by (metro (- (next-beat (metro) 0 (* 4 beat-per-pattern)) 1/16))
+            #'init-latchbell-mod [(:rate @latchbell-arg)])
+  (apply-by (metro (- (next-beat (metro) 0 (* 4 beat-per-pattern)) 1/16))
+            #'swap! [*beats assoc latchbell (vec (repeat 24 a))])
 
   (swap! *beats assoc laserbeam [d _ _ [d d] (vec (repeat 64 0.8)) _ _ d _ _ d _ b _ _ [d d d]])
   (swap! *beats assoc laserbeam [_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _])
   (swap! *beats assoc latchbell [a _ a _ a _ a _ a _ a _ a _ a _])
-  (swap! *beats assoc latchbell (vec (repeat 1 _)))
   (swap! *beats assoc laserbeam [d c c c b c c d c c d c b c c d])
   (swap! *beats assoc grumble [g _ _ _ _ _ _ _ _  _ _ _ _ _ _ _])
 
   (reset! *beats beats)
   (stop))
 
+(def beats16 {laserbeam [
+                         [[d _ d _] [b _ _ _] [_ d 1 _] [[b _] [1 1 1]]]
+                         [[d 1 _ d] [b 1 _ d] [d _ d _] [[b 0.5 0.5] (vec (repeat 3 0.5))]]
+                         [[d 1 _ d] [b 1 _ _] [d 1 _ d] [b 1 _ _]]
+                         [[d _ d _] [b _ _ _] [_ _ d _] [[b _] [1 1 1]]]
+                         [[d _ d _] [b _ _ _] [_ d 1 _] [[b _] [1 1 1]]]
+                         [[d 1 _ d] [b 1 _ [1 1 1]] [d _ d _] [[b 0.5 0.5] (vec (repeat 3 0.5))]]
+                         [[d 1 _ d] [b 1 _ _] [d 1 _ d] [b 1 _ _]]
+                         [[d _ d _] [b _ _ _] [_ _ d _] [[b _] [1 1 1]]]
+                         [[d _ d _] [b _ _ _] [_ d 1 _] [[b _] [1 1 1]]]
+                         [[d 1 _ d] [b 1 _ [1 1 1]] [d _ d _] [[b 0.5 0.5] (vec (repeat 3 0.5))]]
+                         [[d 1 _ d] [b 1 _ _] [d 1 _ d] [b 1 _ _]]
+                         [[d _ d _] [b _ _ _] [_ _ d _] [[b _] [1 1 1]]]
+                         [[d _ d _] [b _ _ _] [_ d 1 _] [[b _] [1 1 1]]]
+                         [[d 1 _ d] [b 1 _ [1 1 1]] [d _ d _] [[b 0.5 0.5] (vec (repeat 3 0.5))]]
+                         [[d 1 _ d] [b 1 _ _] [d 1 _ d] [b 1 _ _]]
+                         [[d _ d _] [b _ _ _] [_ _ d _] [[b _] [1 1 1]]]
+                         ]})
+(def *beats16 (atom beats16))
+(reset! *beats16 beats16)
+(metro :bpm 128)
+
+(comment
+  ;;(live-sequencer (now) 2000 *beats)
+  (let [ms-per-pattern (* 1000 dur-per-pattern)]
+    ;;(live-sequencer (now) ms-per-pattern *beats)
+    ;; (live-sequencer (metro (inc (metro))) ms-per-pattern *beats))
+    (live-sequencer (metro (next-beat (metro) 0 beat-per-pattern)) (* 16 ms-per-pattern) *beats16))
+  (reset! *beats16 beats16))
+
+
 (comment
   (live-sequencer metro (metro) *beats 1/4 0)
   (stop))
 
-(odoc metronome)
+(comment
+  (odoc metronome)
+  (odoc apply-by)
+  (odoc apply-at)
+  (odoc at-at)
+  )

(defn normalise-beat-info
  [beat]
  (cond
   (= 0 beat)         nil
   (= 1 beat)         {}
   (map? beat)        beat
   (sequential? beat) beat
   :else              {}))

(defn schedule-pattern
  [curr-t pat-dur sound pattern]

;; (def kick (sample "resources/kick.wav"))
;; (kick)

(comment
  (odoc line)
  (odoc asr)
  (odoc buf-rd)
  (odoc phasor)
  (odoc bpz2)
  (odoc latch)
  (odoc buf-rate-scale)
  (odoc buf-dur))

(definst grumble [freq 440 freq-mul 1 speed 10 attack 10 release 50]
  (let [snd (mix (map #(* (lf-cub (* % freq-mul freq))
