Firmware for HexBoard MIDI controller
Diffstat (limited to 'HexBoard_V1.1.ino')
| -rw-r--r-- | HexBoard_V1.1.ino | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/HexBoard_V1.1.ino b/HexBoard_V1.1.ino index aa52ffa..fb43375 100644 --- a/HexBoard_V1.1.ino +++ b/HexBoard_V1.1.ino @@ -207,6 +207,8 @@ typedef struct { } Lane; Lane lanes[7]; +bool sequencerMode=1; + // MENU SYSTEM SETUP // // Create menu page object of class GEMPage. Menu page holds menu items (GEMItem) and represents menu level. // Menu can have multiple menu pages (linked to each other) with multiple menu items each @@ -347,14 +349,22 @@ void loop() { // Read and store the digital button states of the scanning matrix readDigitalButtons(); - // Act on those buttons - playNotes(); + if(sequencerMode){ + // Cause newpresses to change stuff + sequencerToggleThingies(); + + // If it's time to play notes, play them + sequencerMaybePlayNotes(); + }else{ + // Act on those buttons + playNotes(); - // Pitch bend stuff - pitchBend(); + // Pitch bend stuff + pitchBend(); - // Held buttons - heldButtons(); + // Held buttons + heldButtons(); + } // Do the LEDS strip.show(); @@ -610,6 +620,42 @@ void heldButtons() { } } +void sequencerToggleThingies() { + // For all buttons in the deck + for (int i = 0; i < elementCount; i++) { + // Some change was made + if (activeButtons[i] != previousActiveButtons[i]){ + // newpress + if (activeButtons[i]){ + int stripN = i / 20; + int step = map2step(i % 20); + if (step >= 0){ + int offset = lanes[stripN].bank*16; + lanes[stripN].steps[step+offset] = !lanes[stripN].steps[step+offset]; + int color = 0; + if(lanes[stripN].steps[step+offset])color = 255; + strip.setPixelColor(i, color, color, color); + + } + } + } + } +} +// TODO: Redefine this for hexboard v2 +int map2step(int i){ + if(i >= 10){ + return (19-i)*2; + } + if (i<=8) { + return ((8-i)*2)+1; + } + return -1; +} + +void sequencerMaybePlayNotes(){ + +} + // Return the first note that is currently held. byte getHeldNote() { for (int i = 0; i < elementCount; i++) { |