                              (chan/dimmer 7)
                              (build-shutter 8)
                              (build-control-channel 9)]})))))
+
+(defn slimpar-hex3-irc
+  "[SlimPAR HEX 3 IRC](http://www.chauvetlighting.com/slimpar-hex3irc.html)
+  six-color low-profile LED PAR.
+
+  This fixture can be configured to use either 6, 8 or 12 DMX
+  channels. If you do not specify a mode when patching it,
+  `:12-channel` is assumed; you can pass a value of `:6-channel` or
+  `:8-channel` for `mode` if you are using it that way.
+
+  When you pass a mode, you can also control whether the amber and UV
+  channels are mixed in when creating colors by passing a boolean
+  value with `:mix-amber` and `:mix-uv`. The default for each is
+  `true`."
+  {:doc/format :markdown
+   :author "James Elliott"}
+  ([]
+   (slimpar-hex3-irc :12-channel))
+  ([mode & {:keys [mix-amber mix-uv] :or {mix-amber true mix-uv true}}]
+   (assoc (case mode
+            :12-channel {:channels [(chan/dimmer 1) (chan/color 2 :red) (chan/color 3 :green) (chan/color 4 :blue)
+                                    (chan/color 5 :amber :hue (when mix-amber 45)) (chan/color 6 :white)
+                                    (chan/color 7 :uv :label "UV" :hue (when mix-uv 270))
+                                    (chan/functions :strobe 8 0 nil
+                                                    11 {:type :strobe
+                                                        :scale-fn (partial chan-fx/function-value-scaler 0.87 25)
+                                                        :label "Strobe (0.87Hz->25Hz)"})
+                                    (chan/functions :color-macros 9 0 nil 16 :color-macros)
+                                    (chan/functions :control 10 0 nil (range 11 200 50) "Program"
+                                                    201 :sound-active-6-color 226 :sound-active)
+                                    (chan/functions :program-speed 11 0 :program-speed)
+                                    (chan/functions :dimmer-mode 12 0 "Dimmer Mode Manual" 52 "Dimmer Mode Off"
+                                                    102 "Dimmer Mode Fast" 153 "Dimmer Mode Medium"
+                                                    204 "Dimmer Mode Slow")]}
+            :8-channel {:channels [(chan/dimmer 1) (chan/color 2 :red) (chan/color 3 :green) (chan/color 4 :blue)
+                                   (chan/color 5 :amber :hue (when mix-amber 45)) (chan/color 6 :white)
+                                   (chan/color 7 :uv :label "UV" :hue (when mix-uv 270))
+                                   (chan/functions :strobe 8 0 nil
+                                                   11 {:type :strobe
+                                                       :scale-fn (partial chan-fx/function-value-scaler 0.87 25)
+                                                       :label "Strobe (0.87Hz->25Hz)"})]}
+            :6-channel {:channels [(chan/color 1 :red) (chan/color 2 :green) (chan/color 3 :blue)
+                                   (chan/color 4 :amber :hue (when mix-amber 45)) (chan/color 5 :white)
+                                   (chan/color 6 :uv :label "UV" :hue (when mix-uv 270))]})
+          :name "Chauvet SlimPAR Hex 3 IRC"
+          :mode mode)))
+

                                       134 :beams-counterclockwise)]
   :name "Scorpion Storm RGX"})

(defn slimpar-hex3-irc
  "[SlimPAR HEX 3 IRC](http://www.chauvetlighting.com/slimpar-hex3irc.html)
  six-color low-profile LED PAR.

  This fixture can be configured to use either 6, 8 or 12 DMX
  channels. If you do not specify a mode when patching it,
  `:12-channel` is assumed; you can pass a value of `:6-channel` or
  `:8-channel` for `mode` if you are using it that way.

  When you pass a mode, you can also control whether the amber and UV
  channels are mixed in when creating colors by passing a boolean
  value with `:mix-amber` and `:mix-uv`. The default for each is
  `true`."
  {:doc/format :markdown
   :author "James Elliott"}
  ([]
   (slimpar-hex3-irc :12-channel))
  ([mode & {:keys [mix-amber mix-uv] :or {mix-amber true mix-uv true}}]
   (assoc (case mode
            :12-channel {:channels [(chan/dimmer 1) (chan/color 2 :red) (chan/color 3 :green) (chan/color 4 :blue)
                                    (chan/color 5 :amber :hue (when mix-amber 45)) (chan/color 6 :white)
                                    (chan/color 7 :uv :label "UV" :hue (when mix-uv 270))
                                    (chan/functions :strobe 8 0 nil
                                                    11 {:type :strobe
                                                        :scale-fn (partial chan-fx/function-value-scaler 0.87 25)
                                                        :label "Strobe (0.87Hz->25Hz)"})
                                    (chan/functions :color-macros 9 0 nil 16 :color-macros)
                                    (chan/functions :control 10 0 nil (range 11 200 50) "Program"
                                                    201 :sound-active-6-color 226 :sound-active)
                                    (chan/functions :program-speed 11 0 :program-speed)
                                    (chan/functions :dimmer-mode 12 0 "Dimmer Mode Manual" 52 "Dimmer Mode Off"
                                                    102 "Dimmer Mode Fast" 153 "Dimmer Mode Medium"
                                                    204 "Dimmer Mode Slow")]}
            :8-channel {:channels [(chan/dimmer 1) (chan/color 2 :red) (chan/color 3 :green) (chan/color 4 :blue)
                                   (chan/color 5 :amber :hue (when mix-amber 45)) (chan/color 6 :white)
                                   (chan/color 7 :uv :label "UV" :hue (when mix-uv 270))
                                   (chan/functions :strobe 8 0 nil
                                                   11 {:type :strobe
                                                       :scale-fn (partial chan-fx/function-value-scaler 0.87 25)
                                                       :label "Strobe (0.87Hz->25Hz)"})]}
            :6-channel {:channels [(chan/color 1 :red) (chan/color 2 :green) (chan/color 3 :blue)
                                   (chan/color 4 :amber :hue (when mix-amber 45)) (chan/color 5 :white)
                                   (chan/color 6 :uv :label "UV" :hue (when mix-uv 270))]})
          :name "Chauvet SlimPAR Hex 3 IRC"
          :mode mode)))

(defn q-spot-160
  "Q Spot 160 moving yoke.


  (:require [afterglow.channels :as chan]
            [afterglow.effects.channel :as chan-fx]
            [afterglow.fixtures.qxf :refer [sanitize-name]]))

(defn- build-gobo-entries
  "Build a list of gobo wheel function entries. If `shake?` is `true`,
  they are a variable range which sets the shake speed. The individual
  gobo names are in `names`."
  {:doc/format :markdown}
  [shake? names]
  (map (fn [entry]
         (let [label (str "Gobo " entry (when shake? " shake"))
               type-key (keyword (sanitize-name label))]
           (merge {:type type-key
                   :label label
                   :range (if shake? :variable :fixed)}
                  (when shake? {:var-label "Shake Speed"}))))
       names))

(defn color-strip
  "[ColorStrip](http://www.chauvetlighting.com/colorstrip.html) LED fixture.
