    :type range-type
    :label label})
 
-;; TODO is this a good range data structure for finding which one a value falls into?
 (defn fine-channel
   "Defines a channel for which sometimes multi-byte values are desired, via a separate
 channel which specifies the fractional value to be added to the main channel."

  [fixtures]
  (mapcat #(concat [%] (:heads %)) fixtures))

(defn extract-heads-with-some-matching-channel
  "Given a fixture list, returns all heads (which may be top-level fixtures too)
  whose channels contain a match for the specified predicate."
  [fixtures pred]
  (filter #(some pred (:channels %)) (expand-heads fixtures)))

(defn full-range
  "Returns a range spefication that encompasses all possible DMX values as a single variable setting."
  [range-type label]

   (fine-channel :zoom offset :fine-offset fine-offset)))


;; TODO: control channels

;; TODO: gobo wheel and color wheel channels special variants of control channels?
