about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2022-07-11 20:45:55 -0400
committerZach DeCook <zachdecook@librem.one>2022-07-11 20:45:55 -0400
commit0a3abaa89d3829f6ab9fce60c9c83a1cb6e93fbd (patch)
treead759a3bfc8c1b2ba899c4e37f6db036b0233472
parent13d29af60b1e281dcc564d687c597a0faaad6469 (diff)
downloadHexBoard-0a3abaa89d3829f6ab9fce60c9c83a1cb6e93fbd.tar.gz
layouts: expand layouts
-rw-r--r--HexBoard_V1.ino67
1 files changed, 42 insertions, 25 deletions
diff --git a/HexBoard_V1.ino b/HexBoard_V1.ino
index c910b26..afa3b50 100644
--- a/HexBoard_V1.ino
+++ b/HexBoard_V1.ino
@@ -49,50 +49,67 @@ const byte elementCount     = columnCount * rowCount;// The number of elements i
 // (see commandPress)
 const int OCT_DN = 128;
 const int OCT_UP = 129;
+const int BT_TOG = 130;
+const int LAY_MD = 131;
+const int LGH_MD = 132;
+const int PTB_DN = 133;
+const int PTB_UP = 134;
 const int UNUSED = 255;
 
 #define ROW_FLIP(x, ix, viii, vii, vi, v, iv, iii, ii, i) i, ii, iii, iv, v, vi, vii, viii, ix, x
 
 // MIDI note value tables
 const byte wickiHaydenLayout[elementCount] = {
-ROW_FLIP(OCT_UP, 78,  80,  82,  84,  86,  88,  90,  92,  94),
+ROW_FLIP(BT_TOG, 78,  80,  82,  84,  86,  88,  90,  92,  94),
 ROW_FLIP(     71,  73,  75,  77,  79,  81,  83,  85,  87,  89),
-ROW_FLIP(OCT_DN, 66,  68,  70,  72,  74,  76,  78,  80,  82),
+ROW_FLIP(LGH_MD, 66,  68,  70,  72,  74,  76,  78,  80,  82),
 ROW_FLIP(     59,  61,  63,  65,  67,  69,  71,  73,  75,  77),
-ROW_FLIP(UNUSED, 54,  56,  58,  60,  62,  64,  66,  68,  70),
+ROW_FLIP(LAY_MD, 54,  56,  58,  60,  62,  64,  66,  68,  70),
 ROW_FLIP(     47,  49,  51,  53,  55,  57,  59,  61,  63,  65),
-ROW_FLIP(UNUSED, 42,  44,  46,  48,  50,  52,  54,  56,  58),
+ROW_FLIP(OCT_UP, 42,  44,  46,  48,  50,  52,  54,  56,  58),
 ROW_FLIP(     35,  37,  39,  41,  43,  45,  47,  49,  51,  53),
-ROW_FLIP(UNUSED, 30,  32,  34,  36,  38,  40,  42,  44,  46),
-ROW_FLIP(     23,  25,  27,  29,  31,  33,  35,  37,  39,  41)
+ROW_FLIP(OCT_DN, 30,  32,  34,  36,  38,  40,  42,  44,  46),
+ROW_FLIP(     23,  25,  27,  29,  31,  33,  35,  37,  39,  41),
+ROW_FLIP(PTB_UP, 18,  20,  22,  24,  26,  28,  30,  32,  34),
+ROW_FLIP(     11,  13,  15,  17,  19,  21,  23,  25,  27,  29),
+ROW_FLIP(PTB_DN,  6,   8,  10,  12,  14,  16,  18,  20,  22),
+ROW_FLIP( UNUSED,   1,   3,   5,   7,   9,  11,  13,  15,  17) // Oops, wasted key!
 };
 const byte harmonicTableLayout[elementCount] = {
-ROW_FLIP(OCT_UP, 20,  27,  34,  41,  48,  55,  62,  69,  76),
+ROW_FLIP(BT_TOG, 20,  27,  34,  41,  48,  55,  62,  69,  76),
 ROW_FLIP(     17,  24,  31,  38,  45,  52,  59,  66,  73,  80),
-ROW_FLIP(OCT_DN, 21,  28,  35,  42,  49,  56,  63,  70,  77),
+ROW_FLIP(LGH_MD, 21,  28,  35,  42,  49,  56,  63,  70,  77),
 ROW_FLIP(     18,  25,  32,  39,  46,  53,  60,  67,  74,  81),
-ROW_FLIP(UNUSED, 22,  29,  36,  43,  50,  57,  64,  71,  78),
+ROW_FLIP(LAY_MD, 22,  29,  36,  43,  50,  57,  64,  71,  78),
 ROW_FLIP(     19,  26,  33,  40,  47,  54,  61,  68,  75,  82),
-ROW_FLIP(UNUSED, 23,  30,  37,  44,  51,  58,  65,  72,  79),
+ROW_FLIP(OCT_UP, 23,  30,  37,  44,  51,  58,  65,  72,  79),
 ROW_FLIP(     20,  27,  34,  41,  48,  55,  62,  69,  76,  83),
-ROW_FLIP(UNUSED, 24,  31,  38,  45,  52,  59,  66,  73,  80),
-ROW_FLIP(     21,  28,  35,  42,  49,  56,  63,  70,  77,  84)
+ROW_FLIP(OCT_DN, 24,  31,  38,  45,  52,  59,  66,  73,  80),
+ROW_FLIP(     21,  28,  35,  42,  49,  56,  63,  70,  77,  84),
+ROW_FLIP(PTB_UP, 25,  32,  39,  46,  53,  60,  67,  74,  81),
+ROW_FLIP(     22,  29,  36,  43,  50,  57,  64,  71,  78,  85),
+ROW_FLIP(PTB_DN, 26,  33,  40,  47,  54,  61,  68,  75,  82),
+ROW_FLIP(     23,  30,  37,  44,  51,  58,  65,  72,  79,  86)
 };
 const byte gerhardLayout[elementCount] = {
-ROW_FLIP(OCT_UP, 20,  21,  22,  23,  24,  25,  26,  27,  28),
+ROW_FLIP(BT_TOG, 20,  21,  22,  23,  24,  25,  26,  27,  28),
 ROW_FLIP(     23,  24,  25,  26,  27,  28,  29,  30,  31,  32),
-ROW_FLIP(OCT_DN, 27,  28,  29,  30,  31,  32,  33,  34,  35),
+ROW_FLIP(LGH_MD, 27,  28,  29,  30,  31,  32,  33,  34,  35),
 ROW_FLIP(     30,  31,  32,  33,  34,  35,  36,  37,  38,  39),
-ROW_FLIP(UNUSED, 34,  35,  36,  37,  38,  39,  40,  41,  42),
+ROW_FLIP(LAY_MD, 34,  35,  36,  37,  38,  39,  40,  41,  42),
 ROW_FLIP(     37,  38,  39,  40,  41,  42,  43,  44,  45,  46),
-ROW_FLIP(UNUSED, 41,  42,  43,  44,  45,  46,  47,  48,  49),
+ROW_FLIP(OCT_UP, 41,  42,  43,  44,  45,  46,  47,  48,  49),
 ROW_FLIP(     44,  45,  46,  47,  48,  49,  50,  51,  52,  53),
-ROW_FLIP(UNUSED, 48,  49,  50,  51,  52,  53,  54,  55,  56),
-ROW_FLIP(     51,  52,  53,  54,  55,  56,  57,  58,  59,  60)
+ROW_FLIP(OCT_DN, 48,  49,  50,  51,  52,  53,  54,  55,  56),
+ROW_FLIP(     51,  52,  53,  54,  55,  56,  57,  58,  59,  60),
+ROW_FLIP(PTB_UP, 55,  56,  57,  58,  59,  60,  61,  62,  63),
+ROW_FLIP(     58,  59,  60,  61,  62,  63,  64,  65,  66,  67),
+ROW_FLIP(PTB_DN, 62,  63,  64,  65,  66,  67,  68,  69,  70),
+ROW_FLIP(     65,  66,  67,  68,  69,  70,  71,  72,  73,  74)
 };
 // LEDs for OCT_UP/OCT_DN status.
-const byte octUpSW = 10 - 1;
-const byte octDnSW = 30 - 1;
+const byte octUpSW = 70 - 1;
+const byte octDnSW = 90 - 1;
 
 const byte *currentLayout = wickiHaydenLayout;
 
@@ -260,9 +277,9 @@ void loopNoteOn(byte channel, byte pitch, byte velocity)
 
 void commandPress(byte command)
 {
-  // Keep octave between -12 and 24
+  // Keep octave between ~-12~ 0 and 24
   if(command == OCT_DN) {
-    if (octave >= 0) {
+    if (octave >= 12) {
       octave -= 12;
       setOctLED(); leds[octDnSW] = CRGB::White;
     }
@@ -285,12 +302,12 @@ void commandRelease(byte command)
 
 void setOctLED()
 {
-  if (octave <= -12) {
+  /*if (octave <= -12) {
     leds[octUpSW].setRGB(0xA0, 0, 0x20);
     leds[octDnSW] = CRGB::Black; // No lower to go.
-  } else if (octave <= 0) {
+  } else */if (octave <= 0) {
     leds[octUpSW] = CRGB::Purple;
-    leds[octDnSW] = CRGB::Red;
+    leds[octDnSW] = CRGB::Black; // No lower to go.
   } else if (octave <= 12) {
     leds[octUpSW] = CRGB::Blue;
     leds[octDnSW].setRGB(0xA0, 0, 0x20);