     [:bpm new-bpm])
 
   (metro-bpb [metro] @bpb)
+
   (metro-bpb [metro new-bpb]
     (dosync
      (ensure bpm)

           shift (round (* (metro-tick metro) (if (> delta 0.5) (dec delta)
                                                  (if (< delta -0.5) (inc delta) delta))))]
       (alter start - shift))))
  
  (metro-bar [metro]
    (dosync
     (ensure start)
     (ensure bpm)
     (ensure bpb)
     (marker-number (now) @start (metro-tock metro))))
  (metro-bar [metro b]
    (dosync
     (ensure start)
     (ensure bpm)
     (ensure bpb)
     (+ (* b (metro-tock metro)) @start)))
  (metro-bar-phase [metro]
    (dosync
     (ensure start)
     (ensure bpm)
     (ensure bpb)
     (marker-phase (now) @start (metro-tock metro))))
  (metro-bar-phase [metro phase]
    (dosync
     (ensure bpm)

           shift (* (metro-tick metro) (if (> phase 0.5) (dec phase) phase))
           new-bar-start (round (- (now) shift (* (dec start-bar) (metro-tock metro))))]
       (ref-set start new-bar-start))))

  (metro-phrase-start [metro start-phrase]
    (dosync
     (ensure bpm)
