     if (midiControl[CC_RESET]) {
         midiControl[CC_RESET] = 0;
         reset();
+    }
+}
+
+void updateVibrato() {
+    if (!midiControl[CC_VIBRATO]) {
+	vibrato.setMode(Off);
+    }
+
+    uint8_t mode = midiControl[CC_VIBRATO_MODE];
+    if (mode == 0) {
+	vibrato.setMode(V1);
+    } else if (mode <= 26) {
+	vibrato.setMode(C1);
+    } else if (mode <= 51) {
+	vibrato.setMode(V2);
+    } else if (mode <= 84) {
+	vibrato.setMode(C2);
+    } else if (mode <= 102) {
+	vibrato.setMode(V3);
+    } else if (mode <= 127) {
+	vibrato.setMode(C3);
     }
 }
 

    } else if (ctrl > CC_DRAWBAR_0 && ctrl <= CC_DRAWBAR_9) {
        updateTonewheelVolumes();
    } else if (ctrl == CC_ROTARY_STOP || ctrl == CC_ROTARY_SPEED) {
	updateLeslieRotation();
    }
}


}

void updateLeslieAmplifier() {
    float k = remap((float)midiControl[CC_SPEAKER_DRIVE], 0, 127, 5.0, 50.0);
    preamp.setK(k);
    crossover.frequency(800);
    crossover.resonance(0.707);
}

void updateLeslieRotation() {
    // Reset some things that should be constant.
    leslieBassR.setTremoloDepth(0.3);
    leslieTrebleR.setTremoloDepth(0.1);
    leslieBassL.setTremoloDepth(0.3);
    leslieTrebleL.setTremoloDepth(0.1);

    // Vibrato in the AMFM blocks currently has some fizz artifacts.

    // These Leslie speeds are from
    // http://www.dairiki.org/HammondWiki/LeslieRotationSpeed
