   //  readAdditionalInputs();
 
   // Synth osc 1
-  value = analogRead(multiplexInputPin1);
+  value = readSelectorPin(multiplexInputPin1);
+
   if (value != p0) {
     p0 = value;
 
-    if (value < 512) {
-      switch (p0 * 4 / 512 ) {
-        case 0:
-          synth.setWaveForm1(WAVEFORM_SINE);
-          break;
-
-        case 1:
-          synth.setWaveForm1(WAVEFORM_TRIANGLE);
-
-          break;
-
-        case 2:
-          synth.setWaveForm1(WAVEFORM_SAWTOOTH);
-          break;
-
-        case 3:
-          synth.setWaveForm1(WAVEFORM_SQUARE);
-          break;
-      }
-    }
-    else {
-      synth.setWaveForm1(WAVEFORM_PULSE);
-
-      float pw = fscale(512, 1023, 1.0, 0.1, p0, 0);
-      synth.setPulseWidth(pw);
+    switch (p0) {
+      case 0:
+        synth.setWaveForm1(WAVEFORM_SINE);
+        break;
+
+      case 1:
+        synth.setWaveForm1(WAVEFORM_TRIANGLE);
+        break;
+
+      case 2:
+        synth.setWaveForm1(WAVEFORM_SAWTOOTH);
+        break;
+
+      case 3:
+        synth.setWaveForm1(WAVEFORM_SQUARE);
+        break;
+
+      case 4:
+        synth.setWaveForm1(WAVEFORM_CELLO);
+        break;
+
+      case 5:
+        synth.setWaveForm1(WAVEFORM_PIANO);
+        break;
+
+      case 6:
+        synth.setWaveForm1(WAVEFORM_EORGAN);
+        break;
     }
   }
 

  }
}

void readInputKey(byte baseNote, byte keyOffset) {
  byte pressed = digitalRead(keyInputPins[keyOffset]);
  byte note = baseNote + keyOffset;

  delayMicroseconds(propagationDelay);

  // Synth osc 2 voice
  value = readSelectorPin(multiplexInputPin1);
  Serial.println(value);
   if (value != p1) {
     p1 = value;

     switch (p1) {
       case 0:
         synth.setWaveForm2(WAVEFORM_NOISE);
         break;
