         cycles-param (params/bind-keyword-param (:cycles var-map) Number 1)]
     (params/build-param-formula Number #(/ %1 %2) beats-param cycles-param)))
 
-(defn make-sawtooth-cue
+(defn make-sawtooth-dimmer-cue
   "Create a cue which applies a sawtooth oscillator to the dimmers of
-  the specified group of fixtures, with cue parameters to adjust the
-  beat ratio, starting with default values established by show
-  parameters."
+  the specified group of fixtures, with cue variables to adjust the
+  oscillator parameters."
   [group x y color]
   (let [[effect-key fixtures end-keys effect-name] (build-group-cue-elements group "dimmers" "saw")]
     (ct/set-cue! (:cue-grid *show*) x y

                           :variables [{:key "chance" :min 0.0 :max 0.4 :start 0.05 :velocity true}
                                       {:key "fade-time" :name "Fade" :min 1 :max 2000 :start 50 :type :integer}]))


    ;; Set up default starting values for oscillators driving dimmer cues
    (when-not (= (type (show/get-variable :starting-beats)) Long)
      ;; If the default beat ratio numerator has not yet been set, establish it as 2
      (show/set-variable! :starting-beats 2))
    (when-not (= (type (show/get-variable :starting-cycles)) Long)
      ;; If the default beat ratio denominator has not yet been set, establish it as 1
      (show/set-variable! :starting-cycles 1))
    (when-not (= (type (show/get-variable :starting-phase)) Double)
      ;; If the default pulse phase has not yet been set, establish it as 0.0
      (show/set-variable! :starting-phase 0.0))
    (when-not (= (type (show/get-variable :sawtooth-down?)) Boolean)
      ;; If the default sawtooth direction has not yet been set, establish it as down
      (show/set-variable! :sawtooth-down? true))
    (when-not (= (type (show/get-variable :starting-width)) Double)
      ;; If the default pulse width has not yet been set, establish it as 0.5
      (show/set-variable! :starting-width 0.5))

    ;; Dimmer oscillator cues: Sawtooth
    (make-sawtooth-cue nil 0 3 :yellow)
    (doall (map-indexed (fn [i group] (make-sawtooth-cue group (inc i) 3 :orange)) light-groups))

    (ct/set-cue! (:cue-grid *show*) 7 3
                 (cues/cue :sawtooth-down? (fn [_] (var-fx/variable-effect @var-binder :sawtooth-down? false))
                           :color :red :short-name "Saw Up"))

    ;; Dimmer oscillator cues: Triangle
    (make-triangle-cue nil 0 4 :orange)
    (doall (map-indexed (fn [i group] (make-triangle-cue group (inc i) 4 :red)) light-groups))

    ;; Dimmer oscillator cues: Sine
    (make-sine-cue nil 0 5 :cyan)
    (doall (map-indexed (fn [i group] (make-sine-cue group (inc i) 5 :blue)) light-groups))

    (ct/set-cue! (:cue-grid *show*) 7 5
                 (cues/cue :beat-ratio
                           (fn [_] (fx/blank "Starting Ratio"))
                           :variables [{:key :starting-beats :min 1 :max 32 :type :integer :name "Beats"}
                                       {:key :starting-cycles :min 1 :max 10 :type :integer :name "Cycles"}]))

    ;; Dimmer oscillator cues: Square
    (make-square-cue nil 0 6 :cyan)
    (doall (map-indexed (fn [i group] (make-square-cue group (inc i) 6 :green)) light-groups))

    (ct/set-cue! (:cue-grid *show*) 7 6
                 (cues/cue :beat-ratio
                           (fn [_] (fx/blank "Starting Shape"))
                           :variables [{:key :starting-width :min 0 :max 1 :name "Width"}
                                     {:key :starting-phase :min 0 :max 1 :name "Phase"}]))

    ;; Strobe cues
    (make-strobe-cue-2 "All" (show/all-fixtures) 0 7)

                                          fixtures
                                          :effect-name effect-name))
                           :color color
                           :variables [{:key "beats" :min 1 :max 32 :type :integer :start 2 :name "Beats"}
                                       {:key "down" :type :boolean :start true :name "Down?"}
                                       {:key "cycles" :min 1 :max 10 :type :integer :start 1 :name "Cycles"}
                                       {:key "phase" :min 0 :max 1 :start 0 :name "Phase"}]
                           :end-keys end-keys))))

(defn make-triangle-dimmer-cue
  "Create a cue which applies a triangle oscillator to the dimmers of
  the specified set of fixtures, with cue variables to adjust the
  oscillator parameters."
  [group x y color]
  (let [[effect-key fixtures end-keys effect-name] (build-group-cue-elements group "dimmers" "triangle")]
    (ct/set-cue! (:cue-grid *show*) x y
