      (ensure bpm)
      (ensure bpb)
      (let [cur-phrase (metro-phrase metro)
-           new-ding (beat-ms (* @bpb new-bpp) @bpm)
-           new-start (- (now) (* new-ding (dec cur-phrase)))
-           phase (metro-bar-phase metro)  ; Preserve beat & bar phase
-           shift (* (metro-tock metro) phase)]
+           new-ding   (beat-ms (* @bpb new-bpp) @bpm)
+           new-start  (- (now) (* new-ding (dec cur-phrase)))
+           phase      (metro-bar-phase metro) ; Preserve beat & bar phase
+           shift      (* (metro-tock metro) phase)]
        (ref-set start (round (- new-start shift)))
        (ref-set bpp new-bpp))))
 

  (metro-bpb [metro new-bpb]
    (dosync
     (ensure bpm)
     (let [cur-bar (metro-bar metro)
           new-tock (beat-ms new-bpb @bpm)
           new-start (- (now) (* new-tock (dec cur-bar)))
           phase (metro-beat-phase metro)  ; Preserve beat phase
           shift (* (metro-tick metro) phase)]
       (ref-set start (round (- new-start shift)))
       (ref-set bpb new-bpb))))


     (ensure bpm)
     (ensure bpb)
     (ensure bpp)
     (let [beat         (marker-number instant @start (metro-tick metro))
           bar          (marker-number instant @start (metro-tock metro))
           phrase       (marker-number instant @start (metro-ding metro))
           beat-phase   (marker-phase instant @start (metro-tick metro))
           bar-phase    (marker-phase instant @start (metro-tock metro))
           phrase-phase (marker-phase instant @start (metro-ding metro))]
       (MetronomeSnapshot. @start @bpm @bpb @bpp instant beat bar phrase beat-phase bar-phase phrase-phase))))

