about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2024-05-25 16:06:34 -0400
committerZach DeCook <zachdecook@librem.one>2024-05-25 16:17:34 -0400
commitc7821c7cb9026a96367e5301e5b848b29f73eb44 (patch)
treee8ce5491a6982462c9de181cc4a620a699af1e82
parent31237cac0f7867571658cfc5e2a4aedd5927a025 (diff)
downloadHexBoard-c7821c7cb9026a96367e5301e5b848b29f73eb44.tar.gz
Build: cleanup
-rw-r--r--.build.yml13
-rw-r--r--HexBoard.ino6
-rw-r--r--Makefile4
-rw-r--r--Presets.h336
-rw-r--r--README.md11
-rwxr-xr-xmakeLayout.py65
-rwxr-xr-xmakePitches.py18
7 files changed, 13 insertions, 440 deletions
diff --git a/.build.yml b/.build.yml
index 19fb30e..0569aea 100644
--- a/.build.yml
+++ b/.build.yml
@@ -4,24 +4,17 @@ packages:
   - python3
   - make
   - git
-sources:
-  - https://github.com/buxtronix/arduino
 tasks:
   - libraries: |
-      mv arduino buxduino
       arduino-cli --additional-urls=https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json core update-index
       # Install the core for rp2040
       arduino-cli --additional-urls=https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json core install rp2040:rp2040
       arduino-cli lib install "MIDI library" "Adafruit NeoPixel" "U8g2" "Adafruit GFX Library" "GEM"
       sed -i 's@#include "config/enable-glcd.h"@//\0@g' ~/Arduino/libraries/GEM/src/config.h # remove dependency from GEM
-      cd buxduino
-      git apply ../Hex*/Rotary.patch
-      cd ..
-      mv buxduino/libraries/Rotary ~/Arduino/libraries/
   - build: |
       cd Hex*
       make
-      mv build/build.ino.uf2 ../hexperiment.ino.uf2
-      sha256sum ../hexperiment.ino.uf2
+      mv build/build.ino.uf2 ../hexboard.ino.uf2
+      sha256sum ../hexboard.ino.uf2
 artifacts:
-  - hexperiment.ino.uf2
+  - hexboard.ino.uf2
diff --git a/HexBoard.ino b/HexBoard.ino
index 59232eb..9f2a87f 100644
--- a/HexBoard.ino
+++ b/HexBoard.ino
@@ -1643,7 +1643,7 @@
 
   byte arpeggiatingNow = UNUSED_NOTE;         // if this is 255, set to off (0% duty cycle)
   uint64_t arpeggiateTime = 0;                // Used to keep track of when this note started playing in ARPEG mode
-  uint64_t arpeggiateLength = 65'536;         // in microseconds. approx a 1/32 note at 114 BPM
+  uint64_t arpeggiateLength = 65536;         // in microseconds. approx a 1/32 note at 114 BPM
 
   // RUN ON CORE 2
   void poll() {
@@ -2535,8 +2535,10 @@
     the rotary knob and physical hex buttons.
 
     Documentation:
-      Rotary knob code:
+      Rotary knob code derived from:
         https://github.com/buxtronix/arduino/tree/master/libraries/Rotary
+    Copyright 2011 Ben Buxton. Licenced under the GNU GPL Version 3.
+    Contact: bb@cactii.net
 
     when the mechanical rotary knob is turned,
     the two pins go through a set sequence of
diff --git a/Makefile b/Makefile
index 9f7c1d3..39d36d7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 # Copied fqbn from build.options.json
 build/build.ino.uf2: build/build.ino
 	arduino-cli compile -b rp2040:rp2040:generic:flash=16777216_0,freq=133,opt=Small,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=tinyusb,boot2=boot2_generic_03h_2_padded_checksum --output-dir build build
-build/build.ino: Hexperiment.ino
-	 cp Hexperiment.ino build/build.ino
+build/build.ino: HexBoard.ino
+	 cp HexBoard.ino build/build.ino
 
 /run/media/*/RPI-RP2/INFO_UF2.TXT:
 	echo "Mounting device"
diff --git a/Presets.h b/Presets.h
deleted file mode 100644
index ffc4c87..0000000
--- a/Presets.h
+++ /dev/null
@@ -1,336 +0,0 @@
-// 1/8192 of a whole tone pitch bend accuracy ~ 0.025 cents.

-// over 128 possible notes, error shd be less than 0.0002 cents to avoid drift.

-// expressing cents to 6 sig figs should be sufficient.

-// notation -- comma delimited string.

-// first entry should be the label for A=440. 

-// last entry should be C, i.e. the "home key".

-// the rest of the scale C thru G will be spelled using the same pattern.

-// the number of commas is used to count where A and C are located in step space.

-tuningDef tuningOptions[] = {

-  { "12 EDO", 12, 100.000, 

-    {{"C" ,-9},{"C#",-8},{"D" ,-7},{"Eb",-6},{"E" ,-5},{"F",-4}

-    ,{"F#",-3},{"G" ,-2},{"G#",-1},{"A" , 0},{"Bb", 1},{"B", 2}

-  }},

-  { "17 EDO", 17, 70.5882, 

-    {{"C",-13},{"Db",-12},{"C#",-11},{"D",-10},{"Eb",-9},{"D#",-8}

-    ,{"E", -7},{"F" , -6},{"Gb", -5},{"F#",-4},{"G", -3},{"Ab",-2}

-    ,{"G#",-1},{"A" ,  0},{"Bb",  1},{"A#", 2},{"B",  3}

-  }},

-  { "19 EDO", 19, 63.1579, 

-    {{"C" ,-14},{"C#",-13},{"Db",-12},{"D",-11},{"D#",-10},{"Eb",-9},{"E",-8}

-    ,{"E#", -7},{"F" , -6},{"F#", -5},{"Gb",-4},{"G",  -3},{"G#",-2}

-    ,{"Ab", -1},{"A" ,  0},{"A#",  1},{"Bb", 2},{"B",   3},{"Cb", 4}

-  }},  

-  { "22 EDO", 22, 54.5455, 

-    {{" C", -17},{"^C",-16},{"vC#",-15},{"vD",-14},{" D",-13},{"^D",-12}

-    ,{"^Eb",-11},{"vE",-10},{" E",  -9},{" F", -8},{"^F", -7},{"vF#",-6}

-    ,{"vG",  -5},{" G", -4},{"^G",  -3},{"vG#",-2},{"vA", -1},{" A",  0}

-    ,{"^A",   1},{"^Bb", 2},{"vB",   3},{" B",  4}

-  }},

-  { "24 EDO", 24, 50.0000, 

-    {{"C", -18},{"C+",-17},{"C#",-16},{"Dd",-15},{"D",-14},{"D+",-13}

-    ,{"Eb",-12},{"Ed",-11},{"E", -10},{"E+", -9},{"F", -8},{"F+", -7}

-    ,{"F#", -6},{"Gd", -5},{"G",  -4},{"G+", -3},{"G#",-2},{"Ad", -1}

-    ,{"A",   0},{"A+",  1},{"Bb",  2},{"Bd",  3},{"B",  4},{"Cd",  5}

-  }},

-  { "31 EDO", 31, 38.7097, 

-    {{"C",-23},{"C+",-22},{"C#",-21},{"Db",-20},{"Dd",-19}

-    ,{"D",-18},{"D+",-17},{"D#",-16},{"Eb",-15},{"Ed",-14}

-    ,{"E",-13},{"E+",-12}                      ,{"Fd",-11}

-    ,{"F",-10},{"F+", -9},{"F#", -8},{"Gb", -7},{"Gd", -6}

-    ,{"G", -5},{"G+", -4},{"G#", -3},{"Ab", -2},{"Ad", -1}

-    ,{"A",  0},{"A+",  1},{"A#",  2},{"Bb",  3},{"Bd",  4}

-    ,{"B",  5},{"B+",  6}                      ,{"Cd",  7}

-  }},

-  { "41 EDO", 41, 29.2683, 

-    {{" C",-31},{"^C",-30},{" C+",-29},{" Db",-28},{" C#",-27},{" Dd",-26},{"vD",-24}

-    ,{" D",-24},{"^D",-23},{" D+",-22},{" Eb",-21},{" D#",-20},{" Ed",-19},{"vE",-18}

-    ,{" E",-17},{"^E",-16}                                                ,{"vF",-15}

-    ,{" F",-14},{"^F",-13},{" F+",-12},{" Gb",-11},{" F#",-10},{" Gd", -9},{"vG", -8}

-    ,{" G", -7},{"^G", -6},{" G+", -5},{" Ab", -4},{" G#", -3},{" Ad", -2},{"vA", -1}

-    ,{" A",  0},{"^A",  1},{" A+",  2},{" Bb",  3},{" A#",  4},{" Bd",  5},{"vB",  6}

-    ,{" B",  7},{"^B",  8}                                                ,{"vC",  9}

-  }},

-  { "53 EDO", 53, 22.6415, 

-    {{" C", -40},{"^C", -39},{">C",-38},{"vDb",-37},{"Db",-36}

-    ,{" C#",-35},{"^C#",-34},{"<D",-33},{"vD", -32}

-    ,{" D", -31},{"^D", -30},{">D",-29},{"vEb",-28},{"Eb",-27}

-    ,{" D#",-26},{"^D#",-25},{"<E",-24},{"vE", -23}

-    ,{" E", -22},{"^E", -21},{">E",-20},{"vF", -19}

-    ,{" F", -18},{"^F", -17},{">F",-16},{"vGb",-15},{"Gb",-14}

-    ,{" F#",-13},{"^F#",-12},{"<G",-11},{"vG", -10}

-    ,{" G",  -9},{"^G",  -8},{">G", -7},{"vAb", -6},{"Ab", -5}

-    ,{" G#", -4},{"^G#", -3},{"<A", -2},{"vA",  -1}

-    ,{" A",   0},{"^A",   1},{">A",  2},{"vBb",  3},{"Bb",  4}

-    ,{" A#",  5},{"^A#",  6},{"<B",  7},{"vB",   8}

-    ,{" B",   9},{"^B",  10},{"<C", 11},{"vC",  12}

-  }},

-  { "72 EDO", 72, 16.6667, 

-    {{" C", -54},{"^C", -53},{">C", -52},{" C+",-51},{"<C#",-50},{"vC#",-49}

-    ,{" C#",-48},{"^C#",-47},{">C#",-46},{" Dd",-45},{"<D" ,-44},{"vD" ,-43}

-    ,{" D", -42},{"^D", -41},{">D", -40},{" D+",-39},{"<Eb",-38},{"vEb",-37}

-    ,{" Eb",-36},{"^Eb",-35},{">Eb",-34},{" Ed",-33},{"<E" ,-32},{"vE" ,-31}

-    ,{" E", -30},{"^E", -29},{">E", -28},{" E+",-27},{"<F" ,-26},{"vF" ,-25}

-    ,{" F", -24},{"^F", -23},{">F", -22},{" F+",-21},{"<F#",-20},{"vF#",-19}

-    ,{" F#",-18},{"^F#",-17},{">F#",-16},{" Gd",-15},{"<G" ,-14},{"vG" ,-13}

-    ,{" G", -12},{"^G", -11},{">G", -10},{" G+", -9},{"<G#", -8},{"vG#", -7}

-    ,{" G#", -6},{"^G#", -5},{">G#", -4},{" Ad", -3},{"<A" , -2},{"vA" , -1}

-    ,{" A",   0},{"^A",   1},{">A",   2},{" A+",  3},{"<Bb",  4},{"vBb",  5}

-    ,{" Bb",  6},{"^Bb",  7},{">Bb",  8},{" Bd",  9},{"<B" , 10},{"vB" , 11}

-    ,{" B",  12},{"^B",  13},{">B",  14},{" Cd", 15},{"<C" , 16},{"vC" , 17}

-  }},

-  { "Bohlen-Pierce", 13, 146.304, 

-    {{"C",-10},{"Db",-9},{"D",-8},{"E",-7},{"F",-6},{"Gb",-5}

-    ,{"G",-4},{"H",-3},{"Jb",-2},{"J",-1},{"A",0},{"Bb",1},{"B",2}

-  }},

-  { "Carlos Alpha", 9, 77.9650, 

-    {{"I",0},{"I#",1},{"II-",2},{"II+",3},{"III",4}

-    ,{"III#",5},{"IV-",6},{"IV+",7},{"Ib",8}

-  }},

-  { "Carlos Beta", 11, 63.8329,

-    {{"I",0},{"I#",1},{"IIb",2},{"II",3},{"II#",4},{"III",5}

-    ,{"III#",6},{"IVb",7},{"IV",8},{"IV#",9},{"Ib",10}

-  }},

-  { "Carlos Gamma", 20, 35.0985,

-    {{" I",  0},{"^I",  1},{" IIb", 2},{"^IIb", 3},{" I#",   4},{"^I#",   5}

-    ,{" II", 6},{"^II", 7}

-    ,{" III",8},{"^III",9},{" IVb",10},{"^IVb",11},{" III#",12},{"^III#",13}

-    ,{" IV",14},{"^IV",15},{" Ib", 16},{"^Ib", 17},{" IV#", 18},{"^IV#", 19}

-  }},

-};

-

-paletteDef palette[] = {

-  // 12 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  }

-     , {HUE_PURPLE,  SAT_DULL,  VALUE_NORMAL  }

-     , {HUE_CYAN,    SAT_DULL,  VALUE_NORMAL  }

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  }

-    }, {1,2,1,2,1,3,4,3,4,3,4,3}},

-  // 17 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  }

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  }

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  }

-    }, {1,2,3,1,2,3,1,1,2,3,1,2,3,1,2,3,1}},

-  // 19 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_YELLOW,  SAT_VIVID, VALUE_NORMAL  } //  #

-     , {HUE_CYAN,    SAT_VIVID, VALUE_NORMAL  } //  b

-     , {HUE_MAGENTA, SAT_VIVID, VALUE_NORMAL  } // enh

-    }, {1,2,3,1,2,3,1,4,1,2,3,1,2,3,1,2,3,1,4}},

-  // 22 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_CYAN,    SAT_VIVID, VALUE_NORMAL  } // ^

-     , {HUE_MAGENTA, SAT_VIVID, VALUE_NORMAL  } // mid

-     , {HUE_YELLOW,  SAT_VIVID, VALUE_NORMAL  } // v

-    }, {1,2,3,4,1,2,3,4,1,1,2,3,4,1,2,3,4,1,2,3,4,1}},

-  // 24 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_GREEN,   SAT_DULL,  VALUE_SHADE } //  +

-     , {HUE_CYAN,    SAT_VIVID, VALUE_NORMAL  } //  #/b  

-     , {HUE_BLUE,    SAT_DULL,  VALUE_SHADE } //  d

-     , {HUE_CYAN,    SAT_DULL,  VALUE_SHADE } // enh

-    }, {1,2,3,4,1,2,3,4,1,5,1,2,3,4,1,2,3,4,1,2,3,4,1,5}},

-  // 31 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_RED,     SAT_DULL,  VALUE_NORMAL  } //  +

-     , {HUE_YELLOW,  SAT_DULL,  VALUE_SHADE } //  #

-     , {HUE_CYAN,    SAT_DULL,  VALUE_SHADE } //  b

-     , {HUE_INDIGO,  SAT_DULL,  VALUE_NORMAL  } //  d

-     , {HUE_RED,     SAT_DULL,  VALUE_SHADE } //  enh E+ Fb

-     , {HUE_INDIGO,  SAT_DULL,  VALUE_SHADE } //  enh E# Fd

-    }, {1,2,3,4,5,1,2,3,4,5,1,6,7,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,6,7}},

-  // 41 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  } //  ^

-     , {HUE_BLUE,    SAT_VIVID, VALUE_NORMAL  } //  +

-     , {HUE_CYAN,    SAT_DULL,  VALUE_SHADE } //  b

-     , {HUE_GREEN,   SAT_VIVID, VALUE_SHADE } //  #

-     , {HUE_MAGENTA, SAT_VIVID, VALUE_NORMAL  } //  d

-     , {HUE_YELLOW,  SAT_VIVID, VALUE_NORMAL  } //  v

-    }, {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,1,2,3,4,5,6,7,

-        1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,6,7}},

-  // 53 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_ORANGE,  SAT_DULL,  VALUE_NORMAL  } //  ^

-     , {HUE_MAGENTA, SAT_DULL,  VALUE_NORMAL  } //  L

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  } // bv

-     , {HUE_GREEN,   SAT_VIVID, VALUE_NORMAL  } // b

-     , {HUE_YELLOW,  SAT_VIVID, VALUE_NORMAL  } // #

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  } // #^

-     , {HUE_PURPLE,  SAT_DULL,  VALUE_NORMAL  } //  7

-     , {HUE_CYAN,    SAT_DULL,  VALUE_NORMAL  } //  v

-    }, {1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,9,1,2,3,4,5,6,7,8,9,

-        1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,9}},

-  // 72 EDO

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_GREEN,   SAT_DULL,  VALUE_SHADE } // ^

-     , {HUE_RED,     SAT_DULL,  VALUE_SHADE } // L

-     , {HUE_PURPLE,  SAT_DULL,  VALUE_SHADE } // +/d

-     , {HUE_BLUE,    SAT_DULL,  VALUE_SHADE } // 7

-     , {HUE_YELLOW,  SAT_DULL,  VALUE_SHADE } // v

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  } // #/b

-    }, {1,2,3,4,5,6,7,2,3,4,5,6,1,2,3,4,5,6,7,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,

-        7,2,3,4,5,6,1,2,3,4,5,6,7,2,3,4,5,6,1,2,3,4,5,6,7,2,3,4,5,6,1,2,3,4,5,6}},

-  // BOHLEN PIERCE

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  }

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  }

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  }

-    }, {1,2,3,1,2,3,1,1,2,3,1,2,3}},

-  // ALPHA

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_YELLOW,  SAT_VIVID, VALUE_NORMAL  } // #

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  } // d

-     , {HUE_LIME,    SAT_VIVID, VALUE_NORMAL  } // +

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  } // enharmonic

-     , {HUE_CYAN,    SAT_VIVID, VALUE_NORMAL  } // b

-    }, {1,2,3,4,1,2,3,5,6}},

-  // BETA

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_INDIGO,  SAT_VIVID, VALUE_NORMAL  } // #

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  } // b

-     , {HUE_MAGENTA, SAT_DULL,  VALUE_NORMAL  } // enharmonic

-    }, {1,2,3,1,4,1,2,3,1,2,3}},

-  // GAMMA

-    {{ {HUE_NONE,    SAT_BW,    VALUE_NORMAL  } // n

-     , {HUE_RED,     SAT_VIVID, VALUE_NORMAL  } // b

-     , {HUE_BLUE,    SAT_VIVID, VALUE_NORMAL  } // #

-     , {HUE_YELLOW,  SAT_VIVID, VALUE_NORMAL  } // n^

-     , {HUE_PURPLE,  SAT_VIVID, VALUE_NORMAL  } // b^

-     , {HUE_GREEN,   SAT_VIVID, VALUE_NORMAL  } // #^

-    }, {1,4,2,5,3,6,1,4,1,4,2,5,3,6,1,4,2,5,3,6}},

-};

-

-layoutDef layoutOptions[] = {

-  { "Wicki-Hayden",      1, 64,   2,  -7, TUNING_12EDO },

-  { "Harmonic Table",    0, 75,  -7,   3, TUNING_12EDO },

-  { "Janko",             0, 65,  -1,  -1, TUNING_12EDO },

-  { "Gerhard",           0, 65,  -1,  -3, TUNING_12EDO },

-  { "Accordion C-sys.",  1, 75,   2,  -3, TUNING_12EDO },

-  { "Accordion B-sys.",  1, 64,   1,  -3, TUNING_12EDO },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_12EDO },

-  { "Bosanquet-Wilson",  0, 65,  -2,  -1, TUNING_17EDO },

-  { "Neutral Thirds A",  0, 65,  -1,  -2, TUNING_17EDO },

-  { "Neutral Thirds B",  0, 65,   1,  -3, TUNING_17EDO },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_17EDO },

-  { "Bosanquet-Wilson",  0, 65,  -1,  -2, TUNING_19EDO },

-  { "Kleismic",          0, 65,  -1,  -4, TUNING_19EDO },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_19EDO },

-  { "Bosanquet-Wilson",  0, 65,  -3,  -1, TUNING_22EDO },

-  { "Porcupine",         0, 65,   1,  -4, TUNING_22EDO },

-  { "Full Gamut",        1, 65,   1,  -8, TUNING_22EDO },

-  { "Bosanquet-Wilson",  0, 65,  -1,  -3, TUNING_24EDO },

-  { "Inverted",          0, 65,   1,  -4, TUNING_24EDO },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_24EDO },

-  { "Bosanquet-Wilson",  0, 65,  -2,  -3, TUNING_31EDO },

-  { "Double Bosanquet",  0, 65,  -1,  -4, TUNING_31EDO },

-  { "Anti-Double Bos.",  0, 65,   1,  -5, TUNING_31EDO },

-  { "Full Gamut",        1, 65,  -1,  -7, TUNING_31EDO },

-  { "Bosanquet-Wilson",  0, 65,  -4,  -3, TUNING_41EDO },  // forty-one #1

-  { "Gerhard",           0, 65,   3, -10, TUNING_41EDO },  // forty-one #2

-  { "Baldy",             0, 65,  -1,  -6, TUNING_41EDO },  

-  { "Rodan",             1, 65,  -1,  -7, TUNING_41EDO },  

-  { "Full Gamut",        0, 65,  -1,  -8, TUNING_41EDO },  // forty-one #3

-  { "Bosanquet-Wilson",  0, 65,  -5,  -4, TUNING_53EDO },

-  { "Kleismic A",        0, 65,  -8,  -3, TUNING_53EDO },

-  { "Kleismic B",        0, 65,  -5,  -3, TUNING_53EDO },

-  { "Wicki-Hayden",      1, 64,   9, -31, TUNING_53EDO },

-  { "Harmonic Table",    0, 75, -31,  14, TUNING_53EDO },

-  { "Buzzard",           0, 65,  -9,  -1, TUNING_53EDO },

-  { "Expanded Janko",    0, 65,  -1,  -6, TUNING_72EDO },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_72EDO },

-  { "Standard",          0, 65,  -2,  -1, TUNING_BP },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_BP },

-  { "Compressed",        0, 65,  -2,  -1, TUNING_ALPHA },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_ALPHA },

-  { "Compressed",        0, 65,  -2,  -1, TUNING_BETA },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_BETA },

-  { "Compressed",        0, 65,  -2,  -1, TUNING_GAMMA },

-  { "Full Gamut",        1, 65,  -1,  -9, TUNING_GAMMA }

-};

-

-scaleDef scaleOptions[] = {

-  { "None",              ALL_TUNINGS,      { 0 } },

-  // 12 EDO

-  { "Major",             TUNING_12EDO,     { 2,2,1,2,2,2,1 } },

-  { "Minor, natural",    TUNING_12EDO,     { 2,1,2,2,1,2,2 } },

-  { "Minor, melodic",    TUNING_12EDO,     { 2,1,2,2,2,2,1 } },

-  { "Minor, harmonic",   TUNING_12EDO,     { 2,1,2,2,1,3,1 } },

-  { "Pentatonic, major", TUNING_12EDO,     { 2,2,3,2,3 } },

-  { "Pentatonic, minor", TUNING_12EDO,     { 3,2,2,3,2 } },

-  { "Blues",             TUNING_12EDO,     { 3,1,1,1,1,3,2 } },

-  { "Double Harmonic",   TUNING_12EDO,     { 1,3,1,2,1,3,1 } },

-  { "Phrygian",          TUNING_12EDO,     { 1,2,2,2,1,2,2 } },

-  { "Phrygian Dominant", TUNING_12EDO,     { 1,3,1,2,1,2,2 } },

-  { "Dorian",            TUNING_12EDO,     { 2,1,2,2,2,1,2 } },

-  { "Lydian",            TUNING_12EDO,     { 2,2,2,1,2,2,1 } },

-  { "Lydian Dominant",   TUNING_12EDO,     { 2,2,2,1,2,1,2 } },

-  { "Mixolydian",        TUNING_12EDO,     { 2,2,1,2,2,1,2 } },

-  { "Locrian",           TUNING_12EDO,     { 1,2,2,1,2,2,2 } },

-  { "Whole tone",        TUNING_12EDO,     { 2,2,2,2,2,2 } },

-  { "Octatonic",         TUNING_12EDO,     { 2,1,2,1,2,1,2,1 } },

-  // 17 EDO; for more: https://en.xen.wiki/w/17edo#Scales

-  { "Diatonic",          TUNING_17EDO,  { 3,3,1,3,3,3,1 } },

-  { "Pentatonic",        TUNING_17EDO,  { 3,3,4,3,4 } },

-  { "Harmonic",          TUNING_17EDO,  { 3,2,3,2,2,2,3 } },

-  { "Husayni maqam",     TUNING_17EDO,  { 2,2,3,3,2,1,1,3 } },

-  { "Blues",             TUNING_17EDO,  { 4,3,1,1,1,4,3 } },

-  { "Hydra",             TUNING_17EDO,  { 3,3,1,1,2,3,2,1,1 } },

-  // 19 EDO; for more: https://en.xen.wiki/w/19edo#Scales

-  { "Diatonic",          TUNING_19EDO,   { 3,3,2,3,3,3,2 } },

-  { "Pentatonic",        TUNING_19EDO,   { 3,3,5,3,5 } },

-  { "Semaphore",         TUNING_19EDO,   { 3,1,3,1,3,3,1,3,1 } },

-  { "Negri",             TUNING_19EDO,   { 2,2,2,2,2,1,2,2,2,2 } },

-  { "Sensi",             TUNING_19EDO,   { 2,2,1,2,2,2,1,2,2,2,1 } },

-  { "Kleismic",          TUNING_19EDO,   { 1,3,1,1,3,1,1,3,1,3,1 } },

-  { "Magic",             TUNING_19EDO,   { 3,1,1,1,3,1,1,1,3,1,1,1,1 } },

-  { "Kind of blues",     TUNING_19EDO,   { 4,4,1,2,4,4 } },

-  // 22 EDO; for more: https://en.xen.wiki/w/22edo_modes

-  { "Diatonic",          TUNING_22EDO,  { 4,4,1,4,4,4,1 } },

-  { "Pentatonic",        TUNING_22EDO,  { 4,4,5,4,5 } },

-  { "Orwell",            TUNING_22EDO,  { 3,2,3,2,3,2,3,2,2 } },

-  { "Porcupine",         TUNING_22EDO,  { 4,3,3,3,3,3,3 } },

-  { "Pajara",            TUNING_22EDO,  { 2,2,3,2,2,2,3,2,2,2 } },

-  // 24 EDO; for more: https://en.xen.wiki/w/24edo_scales

-  { "Diatonic 12",       TUNING_24EDO, { 4,4,2,4,4,4,2 } },

-  { "Diatonic Soft",     TUNING_24EDO, { 3,5,2,3,5,4,2 } },

-  { "Diatonic Neutral",  TUNING_24EDO, { 4,3,3,4,3,4,3 } },

-  { "Pentatonic (12)",   TUNING_24EDO, { 4,4,6,4,6 } },

-  { "Pentatonic (Hába)", TUNING_24EDO, { 5,5,5,5,4 } },

-  { "Invert Pentatonic", TUNING_24EDO, { 6,3,6,6,3 } },

-  { "Rast maqam",        TUNING_24EDO, { 4,3,3,4,4,2,1,3 } },

-  { "Bayati maqam",      TUNING_24EDO, { 3,3,4,4,2,1,3,4 } },      

-  { "Hijaz maqam",       TUNING_24EDO, { 2,6,2,4,2,1,3,4 } },

-  { "8-EDO",             TUNING_24EDO, { 3,3,3,3,3,3,3,3 } },

-  { "Wyschnegradsky",    TUNING_24EDO, { 2,2,2,2,2,1,2,2,2,2,2,2,1 } },

-  // 31 EDO; for more: https://en.xen.wiki/w/31edo#Scales

-  { "Diatonic",          TUNING_31EDO,  { 5,5,3,5,5,5,3 } },

-  { "Pentatonic",        TUNING_31EDO,  { 5,5,8,5,8 } },

-  { "Harmonic",          TUNING_31EDO,  { 5,5,4,4,4,3,3,3 } },

-  { "Mavila",            TUNING_31EDO,  { 5,3,3,3,5,3,3,3,3 } },

-  { "Quartal",           TUNING_31EDO,  { 2,2,7,2,2,7,2,7 } },

-  { "Orwell",            TUNING_31EDO,  { 4,3,4,3,4,3,4,3,3 } },

-  { "Neutral",           TUNING_31EDO,  { 4,4,4,4,4,4,4,3 } },

-  { "Miracle",           TUNING_31EDO,  { 4,3,3,3,3,3,3,3,3,3 } },

-  // 41 EDO; for more: https://en.xen.wiki/w/41edo#Scales_and_modes

-  { "Diatonic",          TUNING_41EDO,   { 7,7,3,7,7,7,3 } },

-  { "Pentatonic",        TUNING_41EDO,   { 7,7,10,7,10 } },

-  { "Pure major",        TUNING_41EDO,   { 7,6,4,7,6,7,4 } },

-  { "5-limit chromatic", TUNING_41EDO,   { 4,3,4,2,4,3,4,4,2,4,3,4 } },

-  { "7-limit chromatic", TUNING_41EDO,   { 3,4,2,4,4,3,4,2,4,3,3,4 } },

-  { "Harmonic",          TUNING_41EDO,   { 5,4,4,4,4,3,3,3,3,3,2,3 } },

-  { "Middle East-ish",   TUNING_41EDO,   { 7,5,7,5,5,7,5 } },

-  { "Thai",              TUNING_41EDO,   { 6,6,6,6,6,6,5 } },

-  { "Slendro",           TUNING_41EDO,   { 8,8,8,8,9 } },

-  { "Pelog / Mavila",    TUNING_41EDO,   { 8,5,5,8,5,5,5 } },

-  // 53 EDO

-  { "Diatonic",          TUNING_53EDO, { 9,9,4,9,9,9,4 } },

-  { "Pentatonic",        TUNING_53EDO, { 9,9,13,9,13 } },

-  { "Rast makam",        TUNING_53EDO, { 9,8,5,9,9,4,4,5 } },

-  // 72 EDO

-  { "Diatonic",          TUNING_72EDO, { 12,12,6,12,12,12,6 } },

-  { "Pentatonic",        TUNING_72EDO, { 12,12,18,12,18 } },

-  // BP

-  // Alpha

-  // Beta

-  // Gamma

-};

diff --git a/README.md b/README.md
index 21771d8..627b5d5 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,10 @@ Created by Nicholas Fox, sometimes available at https://github.com/theHDM/hexper
 
 [![builds.sr.ht status](https://builds.sr.ht/~earboxer/HexBoard/commits/hexperiment.svg)](https://builds.sr.ht/~earboxer/HexBoard/commits/hexperiment?)
 
+## Golden Master firmware
+
+Since version 1.0.0, hexperiment has been merged into the main firmware branch. This firmware is only for the production model.
+
 ### Building the firmware
 
 If you want to build the firmware,
@@ -56,13 +60,6 @@ arduino-cli lib install "U8g2" # dependency for GEM
 arduino-cli lib install "Adafruit GFX Library" # dependency for GEM
 arduino-cli lib install "GEM"
 sed -i 's@#include "config/enable-glcd.h"@//\0@g' ~/Arduino/libraries/GEM/src/config.h # remove dependency from GEM
-# Correct Rotary Library
-git clone https://github.com/buxtronix/arduino buxduino
-cd buxduino
-git apply ../Rotary.patch
-cd ..
-mv buxduino/libraries/Rotary ~/Arduino/libraries/
-rm -rf buxduino
 # Run Make to build the firmware
 make
 ```
diff --git a/makeLayout.py b/makeLayout.py
deleted file mode 100755
index 0138817..0000000
--- a/makeLayout.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env python3
-import sys
-
-evenCols=9
-oddCols=10
-rows=14
-
-def makeLayout(starting, across, downleft):
-    a = []
-    for row in range(0, rows):
-        a.append([])
-        for col in range(0, oddCols if row%2 else evenCols):
-            if row == 0 and col == 0:
-                a[row].append(starting)
-            elif col > 0:
-                a[row].append(a[row][col-1] + across)
-            else: # col == 0
-                if row%2:
-                    ref = a[row-1][0]
-                else:
-                    ref = a[row-1][1]
-                a[row].append(ref+downleft)
-    return a
-
-def print_qmk(layout):
-    # Mapping to QMK constants
-    start = ["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"]
-    start = ["MI_"+x for x in start]
-    arr = start.copy()
-    for n in range(1,6):
-        arr += [x+str(n) for x in start]
-    row = 0
-    print("LAYOUT_inorder(")
-    for Row in layout:
-        if row%2 == 0:
-            n = int(row/2)+1
-            print(f"_______, ", end='')
-        else:
-            print("      ", end='')
-        for entry in Row:
-            print(arr[entry] if entry < len(arr) else 'KC_NO', end=', ')
-        print()
-        row = row + 1
-    print("    ),")
-
-if __name__ == '__main__':
-    layout = makeLayout(int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3]))
-    if len(sys.argv)==5:
-        print_qmk(layout)
-        exit()
-    #print(layout)
-    row = 0
-    for Row in layout:
-        if row%2 == 0:
-            n = int(row/2)+1
-            print(f"  ROW_FLIP(CMDB_{n}, ", end='')
-        else:
-            print("        ROW_FLIP(", end='')
-        col = 1
-        for entry in Row:
-            end = ', ' if col < (oddCols if row%2 else evenCols) else ''
-            print(entry, end=end)
-            col = col + 1
-        print(')' if row +1 == rows else '),')
-        row = row + 1
diff --git a/makePitches.py b/makePitches.py
deleted file mode 100755
index 7829e52..0000000
--- a/makePitches.py
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env python3
-import sys
-
-pitches=128
-
-# calculate integer values in hertz for equal-temperament scales
-def makePitches(root, tones, offset):
-    a = []
-    for index in range(offset, pitches+offset):
-        a.append(round(root*(2**(index/tones))))
-    return a
-
-if __name__ == '__main__':
-    offset = 0
-    if len(sys.argv) > 3:
-        offset = int(sys.argv[3])
-    pitches = makePitches(float(sys.argv[1]), int(sys.argv[2]), offset)
-    print(pitches)