 ; A mixer synth for volume, pan, and limiting
 ; TODO: Add basic EQ
 (defonce __MIXER-SYNTH__
-  (defsynth mixer [in-bus 49 out-bus 0
-                   volume 0.5 pan 0.0]
-    (let [source  (in in-bus)]
-      (out out-bus (pan2 source pan volume)))))
+  (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))
+  (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."

                              :name sname#
                              :ugens ugens#
                              :sdef sdef#
                              :group sgroup#
                              :out-bus MIXER-BUS
                              :fx-chain []
                              :player player#

      (alter instruments* assoc-in [ins-name :fx-chain] [])))
  :clear)

(defn setup-studio []
  (log/info (str "Creating studio group at head of: " (root-group)))
  (let [g (with-server-sync #(group :head (root-group)))
