   (odoc apply-by)
   (odoc apply-at)
   (odoc at-at)
+  (odoc trig-id)
+  (odoc on-trigger)
+  (odoc on-sync-trigger)
+  (odoc on-latest-trigger)
   )

  (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)) ms-per-pattern *beats))
  (init-latchbell-mod (:rate @latchbell-arg))
  (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]])

    ;;(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))
  (let [ms-per-pattern (* 1000 dur-per-pattern)]
    ;;(live-sequencer (now) ms-per-pattern *beats)
    ;; (live-sequencer (metro (inc (metro))) ms-per-pattern *beats))
    (start-live-sequencer (metro (next-beat (metro) 0 beat-per-pattern)) (* 16 ms-per-pattern) *beats16))
  (print @*live-sequencer-states)
  (swap! *live-sequencer-states assoc 3 false)
  (reset! *beats16 beats16))


