diff --git a/src/droplets/lfo_droplet.cpp b/src/droplets/lfo_droplet.cpp
index cb7bec2..586c16b 100644
--- a/src/droplets/lfo_droplet.cpp
+++ b/src/droplets/lfo_droplet.cpp
@@ -34,37 +34,13 @@ float LFO::GetSignal() {
 
 LFODroplet::LFODroplet(DaisyPatch* m_patch,
 		       DropletState m_state,
-		       float sample_rate) :
+		       float m_sample_rate) :
   Droplet(m_patch,
 	  m_state) {
+  sample_rate = m_sample_rate;
   SetAnimationRate(5);
   CreateTitleGraph();
-  
-  switch (GetState()) {
-  default:
-  case DropletState::kFull:
-    lfo[0].Init(Patch(),
-		sample_rate,
-		Patch()->controls[Patch()->CTRL_1],
-		Patch()->controls[Patch()->CTRL_2]);
-    lfo[1].Init(Patch(),
-		sample_rate,
-		Patch()->controls[Patch()->CTRL_3],
-		Patch()->controls[Patch()->CTRL_4]);
-    break;
-  case DropletState::kLeft:
-    lfo[0].Init(Patch(),
-		sample_rate,
-		Patch()->controls[Patch()->CTRL_1],
-		Patch()->controls[Patch()->CTRL_2]);
-    break;
-  case DropletState::kRight:
-    lfo[0].Init(Patch(),
-		sample_rate,
-		Patch()->controls[Patch()->CTRL_3],
-		Patch()->controls[Patch()->CTRL_4]);
-    break;
-  }
+  SetControls();
 }
 
 LFODroplet::~LFODroplet() {
@@ -85,7 +61,9 @@ void LFODroplet::Control() {
   }
 }
 
-void LFODroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer out, size_t size) {
+void LFODroplet::Process(AudioHandle::InputBuffer in,
+			 AudioHandle::OutputBuffer out,
+			 size_t size) {
   Patch()->ProcessAnalogControls();
 
   for(size_t i = 0; i < size; i++) {
@@ -130,4 +108,33 @@ void LFODroplet::Draw() {
 void LFODroplet::UpdateStateCallback() {
   delete title_graph;
   CreateTitleGraph();
+  SetControls();
+}
+
+void LFODroplet::SetControls() {
+  switch (GetState()) {
+  default:
+  case DropletState::kFull:
+    lfo[0].Init(Patch(),
+		sample_rate,
+		Patch()->controls[Patch()->CTRL_1],
+		Patch()->controls[Patch()->CTRL_2]);
+    lfo[1].Init(Patch(),
+		sample_rate,
+		Patch()->controls[Patch()->CTRL_3],
+		Patch()->controls[Patch()->CTRL_4]);
+    break;
+  case DropletState::kLeft:
+    lfo[0].Init(Patch(),
+		sample_rate,
+		Patch()->controls[Patch()->CTRL_1],
+		Patch()->controls[Patch()->CTRL_2]);
+    break;
+  case DropletState::kRight:
+    lfo[0].Init(Patch(),
+		sample_rate,
+		Patch()->controls[Patch()->CTRL_3],
+		Patch()->controls[Patch()->CTRL_4]);
+    break;
+  }
 }
diff --git a/src/droplets/lfo_droplet.h b/src/droplets/lfo_droplet.h
index 15fa029..d37770c 100644
--- a/src/droplets/lfo_droplet.h
+++ b/src/droplets/lfo_droplet.h
@@ -72,6 +72,7 @@ class LFODroplet: public Droplet {
 private:
   LFO    lfo[2];
   Graph* title_graph;
+  float  sample_rate;
 
   /*
    * Create a new graph for the title bar.
@@ -120,6 +121,11 @@ public:
    * Runs when droplet state is updated.
    */
   void UpdateStateCallback();
+
+  /*
+   * Set up the controls for the droplet.
+   */
+  void SetControls();
 };
 
 #endif // DROPLETS_LFO_DROPLET_H_