        (binding [*ugens* []
                  *constants* #{}]
          (with-overloaded-ugens
-           (out MIXER-BUS ~@ugen-form)
-           [~sname
-            ~params
-            *ugens*
-            (into [] *constants*)])))))
+           (let [form# ~@ugen-form
+                 n-chans# (count form#)]
+             (out MIXER-BUS form#)
+             [~sname
+              ~params
+              *ugens*
+              (into [] *constants*)
+              n-chans#]))))))
 
 (defmacro inst
   [sname & args]
-  `(let [[sname# params# ugens# constants#] (pre-inst ~sname ~@args)
+  `(let [[sname# params# ugens# constants# n-chans#] (pre-inst ~sname ~@args)
          sdef# (synthdef sname# params# ugens# constants#)
-         sgroup# (or (:group (get @instruments* sname#))
+         igroup# (or (:group (get @instruments* sname#))
                      (if (server-connected?)
                        (group :tail @inst-group*)
                        nil))
+         imixer-bus# (audio-bus n-chans#)
+         imixer# (inst-mixer :tgt igroup# :pos :head :in-bus in-bus# :out-bus MIXER-BUS)
          arg-names# (map :name params#)
          params-with-vals# (map #(assoc % :value (atom (:default %))) params#)
          s-player# (synth-player sname# params-with-vals#)

(defonce mixer-id*     (ref nil))
(defonce fx-group*     (ref nil))
(defonce record-group* (ref nil))
(defonce MIXER-BUS 49)

(def RIG-BOOT-DEPS [:server-ready :studio-setup-completed])

(defn rig-booted? []
  (deps-satisfied? RIG-BOOT-DEPS))

; A mixer synth for volume, pan, and limiting
; TODO: Add basic EQ
(defonce __MIXER-SYNTH__
  (defsynth inst-mixer [in-bus 10 out-bus 0 mix -1
                        low-freq 80 mid-freq 800 hi-freq 2000
                        band1 -45 band2 -45 band3 -45
                        volume DEFAULT-VOLUME pan DEFAULT-PAN]
    (let [dry (in in-bus)
          wet (b-low-shelf dry low-freq 1 band1)
          wet (b-peak-eq wet mid-freq 1 band2)
          wet (b-hi-shelf wet hi-freq 1 band3)
          mixed (x-fade2 dry wet mix)]
      (out out-bus (pan2 mixed pan volume)))))

(defn inst-volume
  "Control the volume for a single instrument."
  [inst vol]
  (ctl inst :volume vol)
  (reset! (:volume inst) vol))

(defn inst-pan
  "Control the pan setting for a single instrument."
  [inst pan]
  (ctl inst :pan pan)
  (reset! (:pan inst) pan))

(defn inst-eq-low
  [ins freq]
  ())

(defn inst-out-bus
  "Set an instruments downstream bus."
