 #define NUM_LEDS 60
 
 /* Rotary encoder object */
-Encoder encoder(PIN_ROTARY_LEFT, PIN_ROTARY_RIGHT);
+Encoder encoder(PIN_ROTARY_ONE, PIN_ROTARY_TWO);
 
 /* This variable holds the LED color state. */
 CRGB leds[NUM_LEDS];
 
-/* Define the different variables that can be changed using the rotary wheel. */
-#define VARIABLE_MODE 0
-#define VARIABLE_HUE 1
-#define VARIABLE_SATURATION 2
-#define VARIABLE_VALUE 3
-#define VARIABLE_SPEED 4
-//#define VARIABLE_XXX 5
-//#define VARIABLE_XXX 6
-#define MAX_VARIABLES 7
+/* Define the different parameters that can be changed using the rotary wheel. */
+#define PARAMETER_MODE 0
+#define PARAMETER_HUE 1
+#define PARAMETER_SATURATION 2
+#define PARAMETER_VALUE 3
+#define PARAMETER_SPEED 4
+//#define PARAMETER_XXX 5
+//#define PARAMETER_XXX 6
+#define MAX_PARAMETERS 7
 
-/* Holds the variable that is currently changed using the rotary wheel. */
-uint8_t activeVariable = 0;
+/* Holds the parameter that is currently changed using the rotary wheel. */
+uint8_t activeParameter = PARAMETER_MODE;
 
-/* Rainbow colors, used to signify active variable to the user. */
+/* Holds the values of the different parameters. */
+uint8_t parameters[MAX_PARAMETERS] = { 0, 0, 255, 80, 80, 0, 0 };
+
+/* Maximum values of the different parameters, plus one. Zero denotes that a
+ * variable can stretch the full range of 0-255. */
+uint8_t parameterMax[MAX_PARAMETERS] = { 1, 0, 0, 0, 0, 0, 0 };
+
+/* Rainbow colors, used to signify active parameter to the user. */
 CRGB rainbowColors[] = {
     CHSV(0,   255, 255),
     CHSV(36,  255, 255),

    return rval;
}

void loop() {
    int32_t e;

    if (buttonChanged()) {
        if (buttonPressed()) {
            activeVariable = (activeVariable + 1) % MAX_VARIABLES;
            fill_solid(&leds[0], NUM_LEDS, rainbowColors[activeVariable]);
        } else {
            fill_solid(&leds[0], NUM_LEDS, CRGB::Black);
        }
    }

    e = encoder.read();
    if (e <= -4) {
        leds[10] = CHSV(0, 255, 255);
        e += 4;
    } else if (e >= 4) {
        leds[10] = CHSV(120, 255, 255);
        e -= 4;
    } else {
        leds[10] = CRGB::Black;
    }
    encoder.write(e);

    FastLED.show();
}


void setup() {
    FastLED.addLeds<NEOPIXEL, PIN_LED>(leds, NUM_LEDS);
    pinMode(PIN_BUTTON, INPUT_PULLUP);
}

/* buttonPressed returns true if the button is pressed, false otherwise. */
