   The function supplied with `:transition-phase-function` determines
   precisely when the transition takes place and how quickly it occurs.
   It is also called with the show metronome snapshot, and if the value
-  it returns is zero or less, the transition is considered not to have
-  started yet, and no fixtures will be assigned the current color.
-  Values between zero and one mean the transition is in progress, and
-  lights whose distance measure divided by the largest distance
-  measure is less than or equal to the current phase will change
-  color. Once the transition phase reaches one (or greater), the
-  transition is complete, and all lights will be assigned the color
-  associated with the current cycle index. The default transition
-  phase function causes the transition to be spread over the down beat
-  of each bar. Passing [[rhythm/snapshot-bar-phase]] instead would
-  spread the transition over the entire bar, so that transitions would
-  be feeding right into each other. Other possibilities are limited
-  only by your imagination, although for the transition mechanics to
-  work correctly with respect to assigning old and new color values,
-  it should always start at (or below) zero and progress to one (or
-  beyond). It can pause and reverse directions while in between those
-  extremes, but if you want to reverse the direction of the full
-  transition, do it by reversing the distance measure, not the phase
-  function.
+  it returns is less than zero, the transition is considered not to
+  have started yet, and no fixtures will be assigned the current
+  color. Values between zero and one mean the transition is in
+  progress, and lights whose distance measure divided by the largest
+  distance measure is less than or equal to the current phase will
+  change color. Once the transition phase reaches one (or greater),
+  the transition is complete, and all lights will be assigned the
+  color associated with the current cycle index. The default
+  transition phase function, [[transition-during-down-beat]], causes
+  the transition to be spread over the down beat of each bar.
+  Passing [[rhythm/snapshot-bar-phase]] instead would spread the
+  transition over the entire bar, so that transitions would be feeding
+  right into each other. Other possibilities are limited only by your
+  imagination, although for the transition mechanics to work correctly
+  with respect to assigning old and new color values, it should always
+  start at (or below) zero and progress to one (or beyond). It can
+  pause and reverse directions while in between those extremes, but if
+  you want to reverse the direction of the full transition, do it by
+  reversing the distance measure, not the phase function.
 
   To give your running effect a meaningful name within user
   interfaces, pass a short and descriptive value with `:effect-name`."

;; so they can be scaled in time too. Eventually allow randomization of fade time and perhaps
;; hue and peak brightness, with control over how much they vary?
(defn sparkle
  "A random sparkling effect like a particle generator over the supplied fixture heads."
  [fixtures & {:keys [color chance fade-time] :or {color default-sparkle-color chance 0.001 fade-time 500}}]
  {:pre [(some? *show*)]}
  (let [color (params/bind-keyword-param color :com.evocomputing.colors/color default-sparkle-color)

  value of 0 will change as soon as transition has started, and the
  fixture(s) that return the largest value will change when the
  transition ends. A value halfway between zero and the largest value
  would mean the color of that fixture or head would change exactly at
  the midpoint of the transition. Many interesting looking
  transtitions can be created using distance measures constructed by
  calling [[afterglow.transform/build-distance-measure]], as is done
