   digitalWrite(multiplexAPin, HIGH);
   delayMicroseconds(propagationDelay);
 
-  // Synth osc 2 voice
-  value = readSelectorPin(multiplexInputPin1);
-  if (value != p1) {
-    p1 = value;
-
-    switch (p1) {
-      case 0:
-        synth.setWaveForm2(WAVEFORM_NOISE);
-        break;
-
-      case 1:
-        synth.setWaveForm2(WAVEFORM_SINE);
-        break;
-
-      case 2:
-        synth.setWaveForm2(WAVEFORM_TRIANGLE);
-        break;
-
-      case 3:
-        synth.setWaveForm2(WAVEFORM_SAWTOOTH);
-        break;
-
-      case 4:
-        synth.setWaveForm2(WAVEFORM_SQUARE);
-        break;
-    }
-  }
-
-  // Filter envelope sustain.
-  value = analogRead(multiplexInputPin2);
-  synth.setFilterEnvelopeSustain(fscale(1, 1023, 0.0, 1.0, value, 0));
-
-  // Sampler selector
-  value = readSelectorPin(multiplexInputPin4);
-
   readInputKeyRow(53);
 
+  if (frameCount % frameStep == 1) {
+
+    // Synth osc 2 voice
+    int value = readSelectorPin(multiplexInputPin1);
+    if (value != p1) {
+      p1 = value;
+
+      switch (p1) {
+        case 0:
+          synth.setWaveForm2(WAVEFORM_NOISE);
+          break;
+
+        case 1:
+          synth.setWaveForm2(WAVEFORM_SINE);
+          break;
+
+        case 2:
+          synth.setWaveForm2(WAVEFORM_TRIANGLE);
+          break;
+
+        case 3:
+          synth.setWaveForm2(WAVEFORM_SAWTOOTH);
+          break;
+
+        case 4:
+          synth.setWaveForm2(WAVEFORM_SQUARE);
+          break;
+      }
+    }
+
+    // Filter envelope sustain.
+    value = analogRead(multiplexInputPin2);
+    synth.setFilterEnvelopeSustain(fscale(1, 1023, 0.0, 1.0, value, 0));
+
+    // LFO Waveform
+    value = readSelectorPin(multiplexInputPin3);
+    synth.setLFOWaveform(value);
+
+    // Sampler selector
+    value = readSelectorPin(multiplexInputPin4);
+  }
+
 
   /**
    * Multiplexer pin 3
    */
   digitalWrite(multiplexBPin, HIGH);
   delayMicroseconds(propagationDelay);
+
   readInputKeyRow(74);
 
-  // Transpose
-  value = analogRead(multiplexInputPin1);
-  synth.setTranspose(map(value, 1, 1022, -12, 12));
-
-  // Amplitude envelope sustain
-  value = analogRead(multiplexInputPin2);
-  synth.setAmpEnvSustain(fscale(1, 1023, 0.0, 1.0, value, 0));
-
-  // Filter envelope amount
-  value = analogRead(multiplexInputPin3);
-  synth.setFilterEnvelopeAmount(fscale(1, 1023, -1.0, 1.0, value, 0));
-
-  // Master volume
-  value = analogRead(multiplexInputPin4);
-  if (value != p7) {
-   p7 = value;
-
-   synth.setMasterVolume((float)p7 / 1023 * 0.8);
+  if (frameCount % frameStep == 2) {
+
+    // Transpose
+    int value = analogRead(multiplexInputPin1);
+    synth.setTranspose(map(value, 1, 1022, -12, 12));
+
+    // Amplitude envelope sustain
+    value = analogRead(multiplexInputPin2);
+    synth.setAmpEnvSustain(fscale(1, 1023, 0.0, 1.0, value, 0));
+
+    // Filter envelope amount
+    value = analogRead(multiplexInputPin3);
+    synth.setFilterEnvelopeAmount(fscale(1, 1023, -1.0, 1.0, value, 0));
+
+    // Master volume
+    value = analogRead(multiplexInputPin4);
+    if (value != p7) {
+     p7 = value;
+
+     synth.setMasterVolume((float)p7 / 1023 * 0.8);
+    }
   }
 
 

}

unsigned long last_time = millis();
void loop() {

  // Change this to if(1) for measurement output every 2 seconds


  readInputKeyRow(46);

  if (frameCount % frameStep == 7) {
    // Synth mix
    int value = analogRead(multiplexInputPin1);
    synth.setMix(fscale(1, 1023, 0.0, 1.0, value, 0));

    // Filter envelope decay
    value = analogRead(multiplexInputPin2);
    synth.setFilterEnvelopeDecay(fscale(1, 1023, 1, 2000, value, -5));

    // LFO rate
    value = analogRead(multiplexInputPin3);
    synth.setLFORate(fscale(1, 1023, 0.05, 20.0, value, -2));

    // Mixer: Synth volume
    value = analogRead(multiplexInputPin4);
  }
}
