From 32b12c45c3c72aef7b1ee789550f0aa3905443f2 Mon Sep 17 00:00:00 2001
From: Christian Colglazier <christian@cacolglazier.com>
Date: Sat, 22 Jan 2022 16:30:26 -0500
Subject: [PATCH] Fixed Mixer merging

---
 src/droplets/mixer_droplet.cpp | 58 +++++++++++++++++++---------------
 src/droplets/mixer_droplet.h   |  5 +++
 2 files changed, 37 insertions(+), 26 deletions(-)

diff --git a/src/droplets/mixer_droplet.cpp b/src/droplets/mixer_droplet.cpp
index 1ac30cf..60e61ba 100644
--- a/src/droplets/mixer_droplet.cpp
+++ b/src/droplets/mixer_droplet.cpp
@@ -4,31 +4,7 @@ MixerDroplet::MixerDroplet(DaisyPatch* m_patch,
 		       DropletState m_state) :
   Droplet(m_patch,
 	  m_state) {
-  switch (GetState()) {
-  default:
-  case DropletState::kFull:
-    mix[0].Init(Patch()->controls[Patch()->CTRL_1],
-		0.0, 1.0f, Parameter::LINEAR);
-    mix[1].Init(Patch()->controls[Patch()->CTRL_2],
-		0.0, 1.0f, Parameter::LINEAR);
-    mix[2].Init(Patch()->controls[Patch()->CTRL_3],
-		0.0, 1.0f, Parameter::LINEAR);
-    mix[3].Init(Patch()->controls[Patch()->CTRL_4],
-		0.0, 1.0f, Parameter::LINEAR);
-    break;
-  case DropletState::kLeft:
-    mix[0].Init(Patch()->controls[Patch()->CTRL_1],
-		0.0, 1.0f, Parameter::LINEAR);
-    mix[1].Init(Patch()->controls[Patch()->CTRL_2],
-		0.0, 1.0f, Parameter::LINEAR);
-    break;
-  case DropletState::kRight:
-    mix[2].Init(Patch()->controls[Patch()->CTRL_3],
-		0.0, 1.0f, Parameter::LINEAR);
-    mix[3].Init(Patch()->controls[Patch()->CTRL_4],
-		0.0, 1.0f, Parameter::LINEAR);
-    break;
-  }
+  SetControls();
 }
 
 MixerDroplet::~MixerDroplet() {}
@@ -100,4 +76,34 @@ void MixerDroplet::Draw() {
   DrawName("Mixer");
 }
 
-void MixerDroplet::UpdateStateCallback() {}
+void MixerDroplet::UpdateStateCallback() {
+  SetControls();
+}
+
+void MixerDroplet::SetControls() {
+  switch (GetState()) {
+  default:
+  case DropletState::kFull:
+    mix[0].Init(Patch()->controls[Patch()->CTRL_1],
+		0.0, 1.0f, Parameter::LINEAR);
+    mix[1].Init(Patch()->controls[Patch()->CTRL_2],
+		0.0, 1.0f, Parameter::LINEAR);
+    mix[2].Init(Patch()->controls[Patch()->CTRL_3],
+		0.0, 1.0f, Parameter::LINEAR);
+    mix[3].Init(Patch()->controls[Patch()->CTRL_4],
+		0.0, 1.0f, Parameter::LINEAR);
+    break;
+  case DropletState::kLeft:
+    mix[0].Init(Patch()->controls[Patch()->CTRL_1],
+		0.0, 1.0f, Parameter::LINEAR);
+    mix[1].Init(Patch()->controls[Patch()->CTRL_2],
+		0.0, 1.0f, Parameter::LINEAR);
+    break;
+  case DropletState::kRight:
+    mix[2].Init(Patch()->controls[Patch()->CTRL_3],
+		0.0, 1.0f, Parameter::LINEAR);
+    mix[3].Init(Patch()->controls[Patch()->CTRL_4],
+		0.0, 1.0f, Parameter::LINEAR);
+    break;
+  }
+}
diff --git a/src/droplets/mixer_droplet.h b/src/droplets/mixer_droplet.h
index 454a9f4..15b35a6 100644
--- a/src/droplets/mixer_droplet.h
+++ b/src/droplets/mixer_droplet.h
@@ -56,6 +56,11 @@ public:
    * Runs when droplet state is updated.
    */
   void UpdateStateCallback();
+
+  /*
+   * Set up the controls for the droplet.
+   */
+  void SetControls();
 };
 
 #endif // DROPLETS_VCA_DROPLET_H_