 ; allocate multiple, adjacent busses, which the current bitset based
 ; allocator doesn't support.
 (defn control-bus
-  "Allocate one ore more control busses."
+  "Allocate one or more control busses."
   ([] (control-bus 1))
   ([n-channels]
      (let [id (alloc-id :control-bus n-channels)]

  [bus]
  (isa? (type bus) ::bus))

(defn- bus-or-id?
  "Returns true if the specified bus can be treated as a bus - i.e. is either a
  number or a map with metadata that suggests it is of type ::bus"
  [bus]
  (or (number? bus)
      (bus? bus)))

(defn bus-id
  "Returns the id of the specified bus (returns numbers unmodified)."


  (bus-set! my-bus 3) ;=> Sets my-bus to the value 3"
  [bus val]
  (assert (control-bus-or-id? bus))
  (let [id  (bus-id bus)
        val (double val)]
    (snd "/c_set" id val)))
