Firmware for HexBoard MIDI controller
Formatting and add nonescale
| -rw-r--r-- | HexBoard_V1.1.ino | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/HexBoard_V1.1.ino b/HexBoard_V1.1.ino index 0303e6a..acdfe34 100644 --- a/HexBoard_V1.1.ino +++ b/HexBoard_V1.1.ino @@ -8,7 +8,7 @@ // Sketch > Export Compiled Binary // // Brilliant resource for dealing with hexagonal coordinates. https://www.redblobgames.com/grids/hexagons/ -// Might be useful for animations and stuff like that. +// Used this to get my hexagonal animations sorted. http://ondras.github.io/rot.js/manual/#hex/indexing // Menu library documentation https://github.com/Spirik/GEM @@ -151,54 +151,55 @@ const byte cmdBtn7 = 120; // MIDI note layout tables const byte wickiHaydenLayout[elementCount] = { ROW_FLIP(CMDB_1, 90, 92, 94, 96, 98, 100, 102, 104, 106), - ROW_FLIP(83, 85, 87, 89, 91, 93, 95, 97, 99, 101), + ROW_FLIP(83, 85, 87, 89, 91, 93, 95, 97, 99, 101), ROW_FLIP(CMDB_2, 78, 80, 82, 84, 86, 88, 90, 92, 94), - ROW_FLIP(71, 73, 75, 77, 79, 81, 83, 85, 87, 89), + ROW_FLIP(71, 73, 75, 77, 79, 81, 83, 85, 87, 89), ROW_FLIP(CMDB_3, 66, 68, 70, 72, 74, 76, 78, 80, 82), - ROW_FLIP(59, 61, 63, 65, 67, 69, 71, 73, 75, 77), + ROW_FLIP(59, 61, 63, 65, 67, 69, 71, 73, 75, 77), ROW_FLIP(CMDB_4, 54, 56, 58, 60, 62, 64, 66, 68, 70), - ROW_FLIP(47, 49, 51, 53, 55, 57, 59, 61, 63, 65), + ROW_FLIP(47, 49, 51, 53, 55, 57, 59, 61, 63, 65), ROW_FLIP(CMDB_5, 42, 44, 46, 48, 50, 52, 54, 56, 58), - ROW_FLIP(35, 37, 39, 41, 43, 45, 47, 49, 51, 53), + ROW_FLIP(35, 37, 39, 41, 43, 45, 47, 49, 51, 53), ROW_FLIP(CMDB_6, 30, 32, 34, 36, 38, 40, 42, 44, 46), - ROW_FLIP(23, 25, 27, 29, 31, 33, 35, 37, 39, 41), + ROW_FLIP(23, 25, 27, 29, 31, 33, 35, 37, 39, 41), ROW_FLIP(CMDB_7, 18, 20, 22, 24, 26, 28, 30, 32, 34), - ROW_FLIP(11, 13, 15, 17, 19, 21, 23, 25, 27, 29) + ROW_FLIP(11, 13, 15, 17, 19, 21, 23, 25, 27, 29) }; const byte harmonicTableLayout[elementCount] = { ROW_FLIP(CMDB_1, 95, 88, 81, 74, 67, 60, 53, 46, 39), - ROW_FLIP(98, 91, 84, 77, 70, 63, 56, 49, 42, 35), + ROW_FLIP(98, 91, 84, 77, 70, 63, 56, 49, 42, 35), ROW_FLIP(CMDB_2, 94, 87, 80, 73, 66, 59, 52, 45, 38), - ROW_FLIP(97, 90, 83, 76, 69, 62, 55, 48, 41, 34), + ROW_FLIP(97, 90, 83, 76, 69, 62, 55, 48, 41, 34), ROW_FLIP(CMDB_3, 93, 86, 79, 72, 65, 58, 51, 44, 37), - ROW_FLIP(96, 89, 82, 75, 68, 61, 54, 47, 40, 33), + ROW_FLIP(96, 89, 82, 75, 68, 61, 54, 47, 40, 33), ROW_FLIP(CMDB_4, 92, 85, 78, 71, 64, 57, 50, 43, 36), - ROW_FLIP(95, 88, 81, 74, 67, 60, 53, 46, 39, 32), + ROW_FLIP(95, 88, 81, 74, 67, 60, 53, 46, 39, 32), ROW_FLIP(CMDB_5, 91, 84, 77, 70, 63, 56, 49, 42, 35), - ROW_FLIP(94, 87, 80, 73, 66, 59, 52, 45, 38, 31), + ROW_FLIP(94, 87, 80, 73, 66, 59, 52, 45, 38, 31), ROW_FLIP(CMDB_6, 90, 83, 76, 69, 62, 55, 48, 41, 34), - ROW_FLIP(93, 86, 79, 72, 65, 58, 51, 44, 37, 30), + ROW_FLIP(93, 86, 79, 72, 65, 58, 51, 44, 37, 30), ROW_FLIP(CMDB_7, 89, 82, 75, 68, 61, 54, 47, 40, 33), - ROW_FLIP(92, 85, 78, 71, 64, 57, 50, 43, 36, 29) + ROW_FLIP(92, 85, 78, 71, 64, 57, 50, 43, 36, 29) }; const byte gerhardLayout[elementCount] = { ROW_FLIP(CMDB_1, 86, 85, 84, 83, 82, 81, 80, 79, 78), - ROW_FLIP(83, 82, 81, 80, 79, 78, 77, 76, 75, 74), + ROW_FLIP(83, 82, 81, 80, 79, 78, 77, 76, 75, 74), ROW_FLIP(CMDB_2, 79, 78, 77, 76, 75, 74, 73, 72, 71), - ROW_FLIP(76, 75, 74, 73, 72, 71, 70, 69, 68, 67), + ROW_FLIP(76, 75, 74, 73, 72, 71, 70, 69, 68, 67), ROW_FLIP(CMDB_3, 72, 71, 70, 69, 68, 67, 66, 65, 64), - ROW_FLIP(69, 68, 67, 66, 65, 64, 63, 62, 61, 60), + ROW_FLIP(69, 68, 67, 66, 65, 64, 63, 62, 61, 60), ROW_FLIP(CMDB_4, 65, 64, 63, 62, 61, 60, 59, 58, 57), - ROW_FLIP(62, 61, 60, 59, 58, 57, 56, 55, 54, 53), + ROW_FLIP(62, 61, 60, 59, 58, 57, 56, 55, 54, 53), ROW_FLIP(CMDB_5, 58, 57, 56, 55, 54, 53, 52, 51, 50), - ROW_FLIP(55, 54, 53, 52, 51, 50, 49, 48, 47, 46), + ROW_FLIP(55, 54, 53, 52, 51, 50, 49, 48, 47, 46), ROW_FLIP(CMDB_6, 51, 50, 49, 48, 47, 46, 45, 44, 43), - ROW_FLIP(48, 47, 46, 45, 44, 43, 42, 41, 40, 39), + ROW_FLIP(48, 47, 46, 45, 44, 43, 42, 41, 40, 39), ROW_FLIP(CMDB_7, 44, 43, 42, 41, 40, 39, 38, 37, 36), ROW_FLIP(41, 40, 39, 38, 37, 36, 35, 34, 33, 32) }; const byte* currentLayout = wickiHaydenLayout; +// These are for standard tuning only const unsigned int pitches[128] = { 16, 17, 18, 19, 21, 22, 23, 25, 26, 28, 29, 31, // Octave 0 33, 35, 37, 39, 41, 44, 46, 49, 52, 55, 58, 62, // Octave 1 @@ -307,6 +308,7 @@ GEMItem menuItemScale("Scale:", scale, selectScale, applySelectedScale); const bool (*selectedScale)[12]; // Scale arrays of boolean (for O(1) access instead of O(12/2)) // 0 1 2 3 4 5 6 7 8 9 X E +const bool noneScale[12] = {0,0,0,0,0,0,0,0,0,0,0,0}; const bool chromaticScale[12] = {1,1,1,1,1,1,1,1,1,1,1,1}; const bool majorScale[12] = {1,0,1,0,1,1,0,1,0,1,0,1}; const bool harmonicMinorScale[12] = {1,0,1,1,0,1,0,1,1,0,0,1}; @@ -343,7 +345,8 @@ void applySelectedScale() { case 7: // Blues scale selectedScale = &bluesScale; break; - default: + default: // Dim all LEDs + selectedScale = &noneScale; break; } setLayoutLEDs(); |