From 26fb769349d9cf9f911511df6269368eb0fb704f Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Sat, 17 Oct 2020 15:25:19 -0600 Subject: [PATCH] Pitch adjustment --- synth.ino | 49 +++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/synth.ino b/synth.ino index dd00ddd..672348f 100644 --- a/synth.ino +++ b/synth.ino @@ -108,7 +108,7 @@ void setup(){ // Initialize the Trellis trellis.begin(); - trellis.setBrightness(20); + //trellis.setBrightness(20); AudioMemory(120); @@ -127,13 +127,6 @@ void setup(){ AudioMemoryUsageMaxReset(); } -void wtfSetPitch(float freq) { - for (int i=0; i<4; i++) { - Operator op = Bank[currentPatch].operators[i]; - oscs[i]->frequency(op.baseFrequency + freq*op.multiplier); - } -} - void setPitch(float freq) { for (int i=0; i<4; i++) { Operator op = Bank[currentPatch].operators[i]; @@ -158,25 +151,38 @@ void noteOff() { } AudioInterrupts(); } - + +#define BUTTON_UP 7 +#define BUTTON_RESET 15 +#define BUTTON_DOWN 31 +#define BUTTON_PITCH 24 + +int16_t pitchAdjust = 0; +#define PITCH_RANGE + void trellisLoop() { trellis.tick(); - while (trellis.available()) { - keypadEvent e = trellis.read(); - int keyindex = e.bit.KEY; - if (e.bit.EVENT == KEY_JUST_PRESSED) { - trellis.setPixelColor(keyindex, 0x600000); - noteOn(JustPitches[NOTE_D3 + keyindex]); - } else if (e.bit.EVENT == KEY_JUST_RELEASED){ - noteOff(); - trellis.setPixelColor(keyindex, 0); + // Pitch adjust + if (trellis.isPressed(BUTTON_PITCH)) { + if (trellis.isPressed(BUTTON_DOWN)) { + pitchAdjust -= 4; } + if (trellis.isPressed(BUTTON_UP)) { + pitchAdjust += 4; + } + if (trellis.isPressed(BUTTON_RESET)) { + pitchAdjust = 0; + } + + float adj = pow(2, pitchAdjust / 32768.0); + setupJustPitches(NOTE_D4, PITCH_D4*adj); + trellis.setPixelColor(BUTTON_PITCH, trellis.ColorHSV(uint16_t(pitchAdjust), 255, 80)); } } -#define CLOSEDVAL 0x30 -#define OPENVAL 0x70 +const uint8_t CLOSEDVAL=0x30; +const uint8_t OPENVAL=0x70; bool playing = false; @@ -196,6 +202,7 @@ void loop() { for (int i = 0; i < 8; i++) { uint16_t val = cap.filteredData(i+KEY_OFFSET); uint8_t c = 0; + if (val < OPENVAL) { bitSet(keys, i); c = 7; @@ -212,6 +219,7 @@ void loop() { } // print key states oled.rectFill(32 - 4*i, 40, 3, c); + trellis.setPixelColor(i, 1 << c); } note = uilleann_matrix[keys]; @@ -223,6 +231,7 @@ void loop() { note = note & 0x7f; gnote = gnote & 0x7f; + // All keys closed + knee = no sound if (knee) { oled.rectFill(36, 42, 3, 3);