1ccd0c19da8a8b3e0032ffb0446c543dd6c96155

Author
3araht <69518343+3araht@users.noreply.github.com>
Committer
GitHub <noreply@github.com>
Date

Message

Add giabalanai keyboard (#10125)

by 3araht

Diff

This diff is truncated to protect this page.

   1diff --git a/keyboards/giabalanai/config.h b/keyboards/giabalanai/config.h
   2new file mode 100644
   3index 0000000000000000000000000000000000000000..efad053aaeb7eb597198188fc691cf2d711cee4f
   4--- /dev/null
   5+++ b/keyboards/giabalanai/config.h
   6@@ -0,0 +1,294 @@
   7+/*
   8+Copyright 2020 3araht
   9+
  10+This program is free software: you can redistribute it and/or modify
  11+it under the terms of the GNU General Public License as published by
  12+the Free Software Foundation, either version 2 of the License, or
  13+(at your option) any later version.
  14+
  15+This program is distributed in the hope that it will be useful,
  16+but WITHOUT ANY WARRANTY; without even the implied warranty of
  17+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18+GNU General Public License for more details.
  19+
  20+You should have received a copy of the GNU General Public License
  21+along with this program.  If not, see <http://www.gnu.org/licenses/>.
  22+*/
  23+
  24+#pragma once
  25+
  26+#include "config_common.h"
  27+
  28+/* key matrix size */
  29+#define MATRIX_ROWS 12
  30+#define MATRIX_COLS 10
  31+
  32+/*
  33+ * Keyboard Matrix Assignments
  34+ *
  35+ * Change this to how you wired your keyboard
  36+ * COLS: AVR pins used for columns, left to right
  37+ * ROWS: AVR pins used for rows, top to bottom
  38+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
  39+ *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
  40+ *
  41+ */
  42+#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6, D4 }
  43+#define MATRIX_COL_PINS { B1, F7, F6, F5, F4, B3, B2, B6, D0, D1 }
  44+#define MATRIX_ROW_PINS_RIGHT { D1, D0, D4, C6, D7, E6 }
  45+#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, C7, B7, F1 }
  46+
  47+/* COL2ROW, ROW2COL */
  48+#define DIODE_DIRECTION COL2ROW
  49+
  50+/*
  51+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
  52+ */
  53+#define SOFT_SERIAL_PIN D2
  54+#define SELECT_SOFT_SERIAL_SPEED 1
  55+/*Sets the protocol speed when using serial communication*/
  56+//Speeds:
  57+//0: about 189kbps (Experimental only)
  58+//1: about 137kbps (default)
  59+//2: about 75kbps
  60+//3: about 39kbps
  61+//4: about 26kbps
  62+//5: about 20kbps
  63+
  64+// Right side has to be the master since 1, LED data is output from right side, and 2, Audio pin is prepared on right side as a reserve.
  65+#define MASTER_RIGHT
  66+
  67+// for "Generic" Promicro to be detected correctly as lefthand side (slave)
  68+#define SPLIT_USB_DETECT
  69+
  70+//#define BACKLIGHT_PIN B7
  71+//#define BACKLIGHT_LEVELS 3
  72+//#define BACKLIGHT_BREATHING
  73+
  74+/* ws2812 RGB LED */
  75+#define RGB_DI_PIN D3
  76+
  77+#ifdef RGBLIGHT_ENABLE
  78+#   define RGBLED_NUM 123
  79+
  80+// Do not define "RGBLED_SPLIT" since somehow it doesn't work well yet.
  81+// Even thhough "#define RGBLED_SPLIT { 60, 63 }" was set, LEDs on the sub keyboad side didn't turn on.
  82+// Not sure but rgblight_sethsv_at() might not support RGBLED_SPLIT yet.
  83+// Instead, LED data is tranferred from right side to the left via TRRS cable.
  84+
  85+#   define RGBLIGHT_LIMIT_VAL 80
  86+#   define RGBLIGHT_LAYERS
  87+
  88+// By default, LEDs of the buttons which are pressed turn on.
  89+// #    define RGBLIGHT_EFFECT_TWINKLE
  90+// #    define RGBLIGHT_EFFECT_KNIGHT
  91+
  92+
  93+// RGBLIGHT LED MAP
  94+//     Right 1st row (12 LEDs)
  95+//     ENCODER
  96+//     Right 2nd .. 5th row(13, 12, 13, 12 LEDs)
  97+//     Left 1st .. 5th row (12 LEDs x 5 rows)
  98+
  99+#   define RGBLIGHT_LED_MAP { \
 100+    60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71, \
 101+    97, \
 102+    84,  83,  82,  81,  80,  79,  78,  77,  76,  75,  74,  73,  72, \
 103+    85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,  96, \
 104+    110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99,  98, \
 105+    111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, \
 106diff --git a/keyboards/giabalanai/giabalanai.c b/keyboards/giabalanai/giabalanai.c
 107new file mode 100644
 108index 0000000000000000000000000000000000000000..6f8e359479a62ffc548945b4b02458b43ad3d1e7
 109--- /dev/null
 110+++ b/keyboards/giabalanai/giabalanai.c
 111@@ -0,0 +1,255 @@
 112+/* Copyright 2020 3araht
 113+ *
 114+ * This program is free software: you can redistribute it and/or modify
 115+ * it under the terms of the GNU General Public License as published by
 116+ * the Free Software Foundation, either version 2 of the License, or
 117+ * (at your option) any later version.
 118+ *
 119+ * This program is distributed in the hope that it will be useful,
 120+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 121+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 122+ * GNU General Public License for more details.
 123+ *
 124+ * You should have received a copy of the GNU General Public License
 125+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 126+ */
 127+
 128+#include "giabalanai.h"
 129+
 130+// the velocity difference from the velocity of the root note.
 131+#define UNISON_VELOCITY_OFFSET 30
 132+
 133+#ifdef RGBLIGHT_ENABLE
 134+#    define NO_LED 255
 135+/* Conversion map from keylocation (MATRIX_ROWS x2(split) x MATRIX_COLS) to led IDs.
 136+  led IDs are the number starts "0" from upper left corner of left side,
 137+  enumerated from left to right, from top to bottom.
 138+  Then emumeration follows to the right side, starting from "60".
 139+
 140+  Note that the conversion from physical LED serial alighment to
 141+    the led IDs is done with RGBLIGHT_LED_MAP beforehand.                          */
 142+
 143+#    ifdef GIABARINAIX2
 144+const uint8_t PROGMEM convert_key_to_led[] =
 145+{
 146+    0,  12,  24,  36,  48,  11,  23,  35,  47,  59,
 147+    1,  13,  25,  37,  49,  10,  22,  34,  46,  58,
 148+    2,  14,  26,  38,  50,  9,   21,  33,  45,  57,
 149+    3,  15,  27,  39,  51,  8,   20,  32,  44,  56,
 150+    4,  16,  28,  40,  52,  7,   19,  31,  43,  55,
 151+    5,  17,  29,  41,  53,  6,   18,  30,  42,  54,
 152+  119, 107,  95,  83,  71, 108,  96,  84,  72,  60,
 153+  118, 106,  94,  82,  70, 109,  97,  85,  73,  61,
 154+  117, 105,  93,  81,  69, 110,  98,  86,  74,  62,
 155+  116, 104,  92,  80,  68, 111,  99,  87,  75,  63,
 156+  115, 103,  91,  79,  67, 112, 100,  88,  76,  64,
 157+  114, 102,  90,  78,  66, 113, 101,  89,  77,  65
 158+};
 159+
 160+#    else
 161+const uint8_t PROGMEM convert_key_to_led[] =
 162+{
 163+0,      12,    24,    36,    48,      11,    23,    35,     47,     59,
 164+1,      13,    25,    37,    49,      10,    22,    34,     46,     58,
 165+2,      14,    26,    38,    50,      9,     21,    33,     45,     57,
 166+3,      15,    27,    39,    51,      8,     20,    32,     44,     56,
 167+4,      16,    28,    40,    52,      7,     19,    31,     43,     55,
 168+5,      17,    29,    41,    53,      6,     18,    30,     42,     54,
 169+
 170+85,     86,    87,    88,    89,      90,    91,    NO_LED, NO_LED, NO_LED,
 171+98,     99,    100,   101,   102,     103,   104,   NO_LED, NO_LED, NO_LED,
 172+NO_LED, 111,   112,   113,   114,     115,   116,   NO_LED, NO_LED, NO_LED,
 173+NO_LED, 97,    96,    95,    94,      93,    92,    NO_LED, NO_LED, NO_LED,
 174+NO_LED, 110,   109,   108,   107,     106,   105,   NO_LED, NO_LED, NO_LED,
 175+NO_LED, 122,   121,   120,   119,     118,   117,   NO_LED, NO_LED, NO_LED
 176+};
 177+
 178+/* Top 2 rows on the right side (LED:60-84) are
 179+ duplicates of the bottom 2 rows (LED:85-122).
 180+ LED:97 = Encoder,
 181+ LED:110 don't have a duplicate on the top row,
 182+ LED:72 is used when r20 is pressed (not a duplicate) */
 183+const uint8_t PROGMEM convert_key_to_led2[] =
 184+{
 185+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 186+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 187+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 188+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 189+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 190+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 191+
 192+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 193+60,     61,     62,     63,     64,       65,     66,     NO_LED, NO_LED, NO_LED,
 194+72,     73,     74,     75,     76,       77,     78,     NO_LED, NO_LED, NO_LED,
 195+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,   NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
 196+NO_LED, NO_LED, 71,     70,     69,       68,     67,     NO_LED, NO_LED, NO_LED,
 197+NO_LED, 84,     83,     82,     81,       80,     79,     NO_LED, NO_LED, NO_LED
 198+};
 199+#    endif
 200+#endif  //  RGBLIGHT_ENABLE
 201+
 202+#ifdef RGB_MATRIX_ENABLE
 203+
 204+led_config_t g_led_config = {
 205+    {
 206+        { 74,     75, 98,  99, 122, 63, 86,     87,    110,    111 },
 207+        { 73,     76, 97, 100, 121, 64, 85,     88,    109,    112 },
 208+        { 72,     77, 96, 101, 120, 65, 84,     89,    108,    113 },
 209+        { 71,     78, 95, 102, 119, 66, 83,     90,    107,    114 },
 210+        { 70,     79, 94, 103, 118, 67, 82,     91,    106,    115 },
 211diff --git a/keyboards/giabalanai/giabalanai.h b/keyboards/giabalanai/giabalanai.h
 212new file mode 100644
 213index 0000000000000000000000000000000000000000..df4759f00fb7668385e7ed1e1858db54438c1a8c
 214--- /dev/null
 215+++ b/keyboards/giabalanai/giabalanai.h
 216@@ -0,0 +1,132 @@
 217+/* Copyright 2020 3araht
 218+ *
 219+ * This program is free software: you can redistribute it and/or modify
 220+ * it under the terms of the GNU General Public License as published by
 221+ * the Free Software Foundation, either version 2 of the License, or
 222+ * (at your option) any later version.
 223+ *
 224+ * This program is distributed in the hope that it will be useful,
 225+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 226+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 227+ * GNU General Public License for more details.
 228+ *
 229+ * You should have received a copy of the GNU General Public License
 230+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 231+ */
 232+
 233+#pragma once
 234+
 235+#include "quantum.h"
 236+
 237+/* This is a shortcut to help you visually see your layout.
 238+ *
 239+ * The first section contains all of the arguments representing the physical
 240+ * layout of the board and position of the keys.
 241+ *
 242+ * The second converts the arguments into a two-dimensional array which
 243+ * represents the switch matrix.
 244+ */
 245+#define LAYOUT( \
 246+    l00, l01, l02, l03, l04, l05, l06, l07, l08, l09, l0a, l0b, \
 247+      l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l1a, l1b, \
 248+        l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l2a, l2b, \
 249+          l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l3a, l3b, \
 250+            l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l4a, l4b, \
 251+    \
 252+    r20, \
 253+      r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, r0a, r0b,   renc,  \
 254+    r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r1a, r1b, r1c,  \
 255+      r21, r22, r23, r24, r25, r26, r27, r28, r29, r2a, r2b, r2c   \
 256+) { \
 257+    { l00,   l10,  l20, l30, l40, l0b, l1b, l2b,   l3b,   l4b }, \
 258+    { l01,   l11,  l21, l31, l41, l0a, l1a, l2a,   l3a,   l4a }, \
 259+    { l02,   l12,  l22, l32, l42, l09, l19, l29,   l39,   l49 }, \
 260+    { l03,   l13,  l23, l33, l43, l08, l18, l28,   l38,   l48 }, \
 261+    { l04,   l14,  l24, l34, l44, l07, l17, l27,   l37,   l47 }, \
 262+    { l05,   l15,  l25, l35, l45, l06, l16, l26,   l36,   l46 }, \
 263+    \
 264+    { r00,   r01,  r02, r03, r04, r05, r06, KC_NO, KC_NO, KC_NO }, \
 265+    { r10,   r11,  r12, r13, r14, r15, r16, KC_NO, KC_NO, KC_NO }, \
 266+    { r20,   r21,  r22, r23, r24, r25, r26, KC_NO, KC_NO, KC_NO }, \
 267+    { KC_NO, renc, r0b, r0a, r09, r08, r07, KC_NO, KC_NO, KC_NO }, \
 268+    { KC_NO, r1c,  r1b, r1a, r19, r18, r17, KC_NO, KC_NO, KC_NO }, \
 269+    { KC_NO, r2c,  r2b, r2a, r29, r28, r27, KC_NO, KC_NO, KC_NO }  \
 270+}
 271+
 272+#define LAYOUT_giabarinaix2( \
 273+    l00, l01, l02, l03, l04, l05, l06, l07, l08, l09, l0a, l0b, \
 274+      l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l1a, l1b, \
 275+        l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l2a, l2b, \
 276+          l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l3a, l3b, \
 277+            l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l4a, l4b, \
 278+    \
 279+    r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, r0a, r0b, \
 280+      r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r1a, r1b, \
 281+        r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r2a, r2b, \
 282+          r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r3a, r3b, \
 283+            r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r4a, r4b  \
 284+) { \
 285+    { l00, l10, l20, l30, l40, l0b, l1b, l2b, l3b, l4b }, \
 286+    { l01, l11, l21, l31, l41, l0a, l1a, l2a, l3a, l4a }, \
 287+    { l02, l12, l22, l32, l42, l09, l19, l29, l39, l49 }, \
 288+    { l03, l13, l23, l33, l43, l08, l18, l28, l38, l48 }, \
 289+    { l04, l14, l24, l34, l44, l07, l17, l27, l37, l47 }, \
 290+    { l05, l15, l25, l35, l45, l06, l16, l26, l36, l46 }, \
 291+    \
 292+    { r4b, r3b, r2b, r1b, r0b, r40, r30, r20, r10, r00 }, \
 293+    { r4a, r3a, r2a, r1a, r0a, r41, r31, r21, r11, r01 }, \
 294+    { r49, r39, r29, r19, r09, r42, r32, r22, r12, r02 }, \
 295+    { r48, r38, r28, r18, r08, r43, r33, r23, r13, r03 }, \
 296+    { r47, r37, r27, r17, r07, r44, r34, r24, r14, r04 }, \
 297+    { r46, r36, r26, r16, r06, r45, r35, r25, r15, r05 }  \
 298+}
 299+
 300+
 301+#define _________________QWERTY_L1_________________ KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
 302+#define _________________QWERTY_L2_________________ KC_A,    KC_S,    KC_D,    KC_F,    KC_G
 303+#define _________________QWERTY_L3_________________ KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
 304+
 305+#define _________________QWERTY_R1_________________ KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
 306+#define _________________QWERTY_R2_________________ KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN
 307+#define _________________QWERTY_R3_________________ KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH
 308+
 309+#define _________________COLEMAK_L1________________ KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
 310+#define _________________COLEMAK_L2________________ KC_A,    KC_R,    KC_S,    KC_T,    KC_D
 311+#define _________________COLEMAK_L3________________ KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
 312+
 313+#define _________________COLEMAK_R1________________ KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN
 314+#define _________________COLEMAK_R2________________ KC_H,    KC_N,    KC_E,    KC_I,    KC_O
 315+#define _________________COLEMAK_R3________________ KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH
 316diff --git a/keyboards/giabalanai/info.json b/keyboards/giabalanai/info.json
 317new file mode 100644
 318index 0000000000000000000000000000000000000000..b0b52b4ab8dfcf369843dc2e5e7ebb2e31bc5e56
 319--- /dev/null
 320+++ b/keyboards/giabalanai/info.json
 321@@ -0,0 +1,125 @@
 322+{
 323+    "keyboard_name": "giabalanai",
 324+    "manufacturer": "3araht",
 325+    "url": "https://github.com/3araht",
 326+    "maintainer": "3araht",
 327+    "usb": {
 328+        "vid": "0xFEED",
 329+        "pid": "0xF4B0",
 330+        "device_version": "0.0.1"
 331+    },
 332+    "layouts": {
 333+        "LAYOUT": {
 334+          "layout": [
 335+              {"label": "l00", "x": 0,  "y": 0},
 336+              {"label": "l01", "x": 1,  "y": 0},
 337+              {"label": "l02", "x": 2,  "y": 0},
 338+              {"label": "l03", "x": 3,  "y": 0},
 339+              {"label": "l04", "x": 4,  "y": 0},
 340+              {"label": "l05", "x": 5,  "y": 0},
 341+              {"label": "l06", "x": 6,  "y": 0},
 342+              {"label": "l07", "x": 7,  "y": 0},
 343+              {"label": "l08", "x": 8,  "y": 0},
 344+              {"label": "l09", "x": 9,  "y": 0},
 345+              {"label": "l0a", "x": 10, "y": 0},
 346+              {"label": "l0b", "x": 11, "y": 0},
 347+
 348+              {"label": "l10", "x": 0.5,  "y": 1},
 349+              {"label": "l11", "x": 1.5,  "y": 1},
 350+              {"label": "l12", "x": 2.5,  "y": 1},
 351+              {"label": "l13", "x": 3.5,  "y": 1},
 352+              {"label": "l14", "x": 4.5,  "y": 1},
 353+              {"label": "l15", "x": 5.5,  "y": 1},
 354+              {"label": "l16", "x": 6.5,  "y": 1},
 355+              {"label": "l17", "x": 7.5,  "y": 1},
 356+              {"label": "l18", "x": 8.5,  "y": 1},
 357+              {"label": "l19", "x": 9.5,  "y": 1},
 358+              {"label": "l1a", "x": 10.5, "y": 1},
 359+              {"label": "l1b", "x": 11.5, "y": 1},
 360+
 361+              {"label": "r20", "x": 14.5, "y": 1},
 362+
 363+              {"label": "l20", "x": 1,  "y": 2},
 364+              {"label": "l21", "x": 2,  "y": 2},
 365+              {"label": "l22", "x": 3,  "y": 2},
 366+              {"label": "l23", "x": 4,  "y": 2},
 367+              {"label": "l24", "x": 5,  "y": 2},
 368+              {"label": "l25", "x": 6,  "y": 2},
 369+              {"label": "l26", "x": 7,  "y": 2},
 370+              {"label": "l27", "x": 8,  "y": 2},
 371+              {"label": "l28", "x": 9,  "y": 2},
 372+              {"label": "l29", "x": 10, "y": 2},
 373+              {"label": "l2a", "x": 11, "y": 2},
 374+              {"label": "l2b", "x": 12, "y": 2},
 375+
 376+              {"label": "r00", "x": 15,   "y": 2},
 377+              {"label": "r01", "x": 16,   "y": 2},
 378+              {"label": "r02", "x": 17,   "y": 2},
 379+              {"label": "r03", "x": 18,   "y": 2},
 380+              {"label": "r04", "x": 19,   "y": 2},
 381+              {"label": "r05", "x": 20,   "y": 2},
 382+              {"label": "r06", "x": 21,   "y": 2},
 383+              {"label": "r07", "x": 22,   "y": 2},
 384+              {"label": "r08", "x": 23,   "y": 2},
 385+              {"label": "r09", "x": 24,   "y": 2},
 386+              {"label": "r0a", "x": 25,   "y": 2},
 387+              {"label": "r0b", "x": 26,   "y": 2},
 388+
 389+              {"label": "renc", "x": 27.5, "y": 2},
 390+
 391+              {"label": "l30", "x": 1.5,  "y": 3},
 392+              {"label": "l31", "x": 2.5,  "y": 3},
 393+              {"label": "l32", "x": 3.5,  "y": 3},
 394+              {"label": "l33", "x": 4.5,  "y": 3},
 395+              {"label": "l34", "x": 5.5,  "y": 3},
 396+              {"label": "l35", "x": 6.5,  "y": 3},
 397+              {"label": "l36", "x": 7.5,  "y": 3},
 398+              {"label": "l37", "x": 8.5,  "y": 3},
 399+              {"label": "l38", "x": 9.5,  "y": 3},
 400+              {"label": "l39", "x": 10.5, "y": 3},
 401+              {"label": "l3a", "x": 11.5, "y": 3},
 402+              {"label": "l3b", "x": 12.5, "y": 3},
 403+
 404+              {"label": "r10", "x": 14.5, "y": 3},
 405+              {"label": "r11", "x": 15.5, "y": 3},
 406+              {"label": "r12", "x": 16.5, "y": 3},
 407+              {"label": "r13", "x": 17.5, "y": 3},
 408+              {"label": "r14", "x": 18.5, "y": 3},
 409+              {"label": "r15", "x": 19.5, "y": 3},
 410+              {"label": "r16", "x": 20.5, "y": 3},
 411+              {"label": "r17", "x": 21.5, "y": 3},
 412+              {"label": "r18", "x": 22.5, "y": 3},
 413+              {"label": "r19", "x": 23.5, "y": 3},
 414+              {"label": "r1a", "x": 24.5, "y": 3},
 415+              {"label": "r1b", "x": 25.5, "y": 3},
 416+              {"label": "r1c", "x": 26.5, "y": 3},
 417+
 418+              {"label": "l40", "x": 2,  "y": 4},
 419+              {"label": "l41", "x": 3,  "y": 4},
 420+              {"label": "l42", "x": 4,  "y": 4},
 421diff --git a/keyboards/giabalanai/keymaps/2firmware/config.h b/keyboards/giabalanai/keymaps/2firmware/config.h
 422new file mode 100644
 423index 0000000000000000000000000000000000000000..a9c772adefe8cf0fc7669a86741ff4febd611bbe
 424--- /dev/null
 425+++ b/keyboards/giabalanai/keymaps/2firmware/config.h
 426@@ -0,0 +1,9 @@
 427+#pragma once
 428+
 429+//#define USE_MATRIX_I2C
 430+
 431+/* Select hand configuration */
 432+
 433+// #define MASTER_LEFT
 434+// #define MASTER_RIGHT
 435+#define EE_HANDS
 436diff --git a/keyboards/giabalanai/keymaps/2firmware/keymap.c b/keyboards/giabalanai/keymaps/2firmware/keymap.c
 437new file mode 100644
 438index 0000000000000000000000000000000000000000..2877f8ecd85df016d2d37a213aeff394d64ae9cb
 439--- /dev/null
 440+++ b/keyboards/giabalanai/keymaps/2firmware/keymap.c
 441@@ -0,0 +1,739 @@
 442+/* Copyright 2020 3araht
 443+ *
 444+ * This program is free software: you can redistribute it and/or modify
 445+ * it under the terms of the GNU General Public License as published by
 446+ * the Free Software Foundation, either version 2 of the License, or
 447+ * (at your option) any later version.
 448+ *
 449+ * This program is distributed in the hope that it will be useful,
 450+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 451+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 452+ * GNU General Public License for more details.
 453+ *
 454+ * You should have received a copy of the GNU General Public License
 455+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 456+ */
 457+#include QMK_KEYBOARD_H
 458+#include "split_util.h"
 459+#include "print.h"
 460+#include "version.h"
 461+
 462+// Alias layout macros that expand groups of keys.
 463+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
 464+
 465+#define DF_QWER  DF(_QWERTY)
 466+#define DF_COLE  DF(_COLEMAK)
 467+#define MO_ADJ   MO(_ADJUST)
 468+// Long press: go to _FN layer, tap: MUTE
 469+#define FN_MUTE  LT(_FN, KC_MUTE)
 470+#define SHIF_UP  RSFT_T(KC_UP)
 471+#define ADJ_EIS  LT(_ADJUST,KC_LANG2)
 472+#define MIS_KAN  LT(_MISC,KC_LANG1)
 473+
 474+// Used to set octave to MI_OCT_0
 475+extern midi_config_t midi_config;
 476+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 477+
 478+// UNISON flags
 479+static bool melody_dyad_high = false;  //  true when +1 octave unison dyad is enabled.
 480+static bool melody_dyad_low  = false;  //  true when -1 octave unison dyad is enabled.
 481+
 482+static bool melody_unison_suppress  = true;  //  true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
 483+
 484+// To record the status of Bass Chord (single or dyad, default: dyad.)
 485+typedef union {
 486+    uint32_t raw;
 487+    struct {
 488+        bool isSingleBass:1;
 489+    };
 490+} user_config_t;
 491+user_config_t user_config;
 492+
 493+#define IS_SINGLE_BASS()   (user_config.isSingleBass)
 494+
 495+#ifdef RGBLIGHT_ENABLE
 496+/* used to specify there is no LED on the keylocation. */
 497+#    define NO_LED 255
 498+#endif  //  RGBLIGHT_ENABLE
 499+
 500+
 501+// Defines names for use in layer keycodes and the keymap
 502+enum layer_names {
 503+    _C_SYSTEM_BASE,      //  MIDI C-system
 504+    _FAKE_B_SYSTEM,      //  MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system.
 505+    _C_SYSTEM_BASS2ROW,  //  counter bass system
 506+    _C_SYSTEM_ENTIRELY,  //  single notes for both left and right keybaords.
 507+    _CHROMATONE,
 508+    _CFLIP_BASS2ROW,     //  180 degree flipped layout on right side keyboard
 509+    _QWERTY,
 510+    _COLEMAK,
 511+    _ADJUST,             //  for Fn keys, etc.
 512+    _FN                  //  for changing layers, octaves, etc.
 513+};
 514+
 515+// Defines the keycodes used by our macros in process_record_user
 516+enum custom_keycodes {
 517+
 518+    // MIDI Chord Keycodes - Root notes
 519+    MY_CHORD_MIN = SAFE_RANGE,
 520+
 521+    MI_CH_Cr = MY_CHORD_MIN,
 522+    MI_CH_Csr,
 523+    MI_CH_Dbr = MI_CH_Csr,
 524+    MI_CH_Dr,
 525+    MI_CH_Dsr,
 526+    MI_CH_Ebr = MI_CH_Dsr,
 527+    MI_CH_Er,
 528+    MI_CH_Fr,
 529+    MI_CH_Fsr,
 530+    MI_CH_Gbr = MI_CH_Fsr,
 531+    MI_CH_Gr,
 532+    MI_CH_Gsr,
 533+    MI_CH_Abr = MI_CH_Gsr,
 534+    MI_CH_Ar,
 535+    MI_CH_Asr,
 536+    MI_CH_Bbr = MI_CH_Asr,
 537+    MI_CH_Br,
 538+
 539+    // MIDI Chord Keycodes - Major
 540+
 541diff --git a/keyboards/giabalanai/keymaps/2firmware/readme.md b/keyboards/giabalanai/keymaps/2firmware/readme.md
 542new file mode 100644
 543index 0000000000000000000000000000000000000000..e851c97af8cf50ba0837f276072f18a46ecb073f
 544--- /dev/null
 545+++ b/keyboards/giabalanai/keymaps/2firmware/readme.md
 546@@ -0,0 +1,12 @@
 547+# A personal keymap for giabalanai with RGBLIGHT_ENABLE = yes in rules.mk, which 3araht is using.
 548+"2firmware" requires writing the firmware separately to left and right keyboards in order to have different functionality when USB cable is connected to the left side keyboard. It can be used without the right side.
 549+(EE_HANDS is defined in 2firmware/config.h).  
 550+
 551+When USB cable is connected to the left side keyboard, QWERTY layout is used by default.
 552+
 553+
 554+Use below for writing the firmware to the left side keyboard.
 555+> make giabalanai:2firmware:avrdude-split-left  
 556+
 557+Use below for writing the firmware to the right side keyboard.
 558+> make giabalanai:2firmware:avrdude-split-right  
 559diff --git a/keyboards/giabalanai/keymaps/2firmware/rules.mk b/keyboards/giabalanai/keymaps/2firmware/rules.mk
 560new file mode 100644
 561index 0000000000000000000000000000000000000000..2ecc5f55c193ea2389eac34925b011a676b5b87d
 562--- /dev/null
 563+++ b/keyboards/giabalanai/keymaps/2firmware/rules.mk
 564@@ -0,0 +1,4 @@
 565+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
 566+CONSOLE_ENABLE =  no        # Console for debug
 567+
 568+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
 569diff --git a/keyboards/giabalanai/keymaps/3araht/keymap.c b/keyboards/giabalanai/keymaps/3araht/keymap.c
 570new file mode 100644
 571index 0000000000000000000000000000000000000000..418b6e0ceb0a30d5f37bd5f6454062fc0f51bf68
 572--- /dev/null
 573+++ b/keyboards/giabalanai/keymaps/3araht/keymap.c
 574@@ -0,0 +1,754 @@
 575+/* Copyright 2020 3araht
 576+ *
 577+ * This program is free software: you can redistribute it and/or modify
 578+ * it under the terms of the GNU General Public License as published by
 579+ * the Free Software Foundation, either version 2 of the License, or
 580+ * (at your option) any later version.
 581+ *
 582+ * This program is distributed in the hope that it will be useful,
 583+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 584+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 585+ * GNU General Public License for more details.
 586+ *
 587+ * You should have received a copy of the GNU General Public License
 588+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 589+ */
 590+#include QMK_KEYBOARD_H
 591+#include "print.h"
 592+#include "version.h"
 593+
 594+// Alias layout macros that expand groups of keys.
 595+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
 596+
 597+#define DF_QWER  DF(_QWERTY)
 598+#define DF_COLE  DF(_COLEMAK)
 599+#define MO_ADJ   MO(_ADJUST)
 600+// Long press: go to _FN layer, tap: MUTE
 601+#define FN_MUTE  LT(_FN, KC_MUTE)
 602+#define SHIF_UP  RSFT_T(KC_UP)
 603+#define ADJ_EIS  LT(_ADJUST,KC_LANG2)
 604+#define MIS_KAN  LT(_MISC,KC_LANG1)
 605+
 606+// Used to set octave to MI_OCT_0
 607+extern midi_config_t midi_config;
 608+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 609+
 610+// UNISON flags
 611+static bool melody_dyad_high = false;  //  true when +1 octave unison dyad is enabled.
 612+static bool melody_dyad_low  = false;  //  true when -1 octave unison dyad is enabled.
 613+
 614+static bool melody_unison_suppress  = true;  //  true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
 615+
 616+// To record the status of Bass Chord (single or dyad, default: dyad.)
 617+typedef union {
 618+    uint32_t raw;
 619+    struct {
 620+        bool isSingleBass:1;
 621+    };
 622+} user_config_t;
 623+user_config_t user_config;
 624+
 625+#define IS_SINGLE_BASS()   (user_config.isSingleBass)
 626+
 627+#ifdef RGBLIGHT_ENABLE
 628+/* used to specify there is no LED on the keylocation. */
 629+#    define NO_LED 255
 630+#endif  //  RGBLIGHT_ENABLE
 631+
 632+
 633+// Defines names for use in layer keycodes and the keymap
 634+enum layer_names {
 635+    _C_SYSTEM_BASE,      //  MIDI C-system
 636+    _FAKE_B_SYSTEM,      //  MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system.
 637+    _C_SYSTEM_BASS2ROW,  //  counter bass system
 638+    _C_SYSTEM_ENTIRELY,  //  single notes for both left and right keybaords.
 639+    _C_SYSTEM_FREEBASS,  //  C-system Free Bass
 640+    _CHROMATONE,
 641+    _CFLIP_BASS2ROW,     //  180 degree flipped layout on right side keyboard
 642+    _QWERTY,
 643+    _COLEMAK,
 644+    _ADJUST,             //  for Fn keys, etc.
 645+    _FN                  //  for changing layers, octaves, etc.
 646+};
 647+
 648+// Defines the keycodes used by our macros in process_record_user
 649+enum custom_keycodes {
 650+
 651+    // MIDI Chord Keycodes - Root notes
 652+    MY_CHORD_MIN = SAFE_RANGE,
 653+
 654+    MI_CH_Cr = MY_CHORD_MIN,
 655+    MI_CH_Csr,
 656+    MI_CH_Dbr = MI_CH_Csr,
 657+    MI_CH_Dr,
 658+    MI_CH_Dsr,
 659+    MI_CH_Ebr = MI_CH_Dsr,
 660+    MI_CH_Er,
 661+    MI_CH_Fr,
 662+    MI_CH_Fsr,
 663+    MI_CH_Gbr = MI_CH_Fsr,
 664+    MI_CH_Gr,
 665+    MI_CH_Gsr,
 666+    MI_CH_Abr = MI_CH_Gsr,
 667+    MI_CH_Ar,
 668+    MI_CH_Asr,
 669+    MI_CH_Bbr = MI_CH_Asr,
 670+    MI_CH_Br,
 671+
 672+    // MIDI Chord Keycodes - Major
 673+
 674diff --git a/keyboards/giabalanai/keymaps/3araht/readme.md b/keyboards/giabalanai/keymaps/3araht/readme.md
 675new file mode 100644
 676index 0000000000000000000000000000000000000000..a731456db61c83e1ba91c3203e55b4c50973a026
 677--- /dev/null
 678+++ b/keyboards/giabalanai/keymaps/3araht/readme.md
 679@@ -0,0 +1 @@
 680+# A personal keymap for giabalanai with RGBLIGHT_ENABLE = yes in rules.mk, which 3araht is using.
 681diff --git a/keyboards/giabalanai/keymaps/3araht/rules.mk b/keyboards/giabalanai/keymaps/3araht/rules.mk
 682new file mode 100644
 683index 0000000000000000000000000000000000000000..2ecc5f55c193ea2389eac34925b011a676b5b87d
 684--- /dev/null
 685+++ b/keyboards/giabalanai/keymaps/3araht/rules.mk
 686@@ -0,0 +1,4 @@
 687+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
 688+CONSOLE_ENABLE =  no        # Console for debug
 689+
 690+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
 691diff --git a/keyboards/giabalanai/keymaps/default/keymap.c b/keyboards/giabalanai/keymaps/default/keymap.c
 692new file mode 100644
 693index 0000000000000000000000000000000000000000..7b5f524a4fedd838518c02c4e8819d8acb836c12
 694--- /dev/null
 695+++ b/keyboards/giabalanai/keymaps/default/keymap.c
 696@@ -0,0 +1,259 @@
 697+/* Copyright 2020 3araht
 698+ *
 699+ * This program is free software: you can redistribute it and/or modify
 700+ * it under the terms of the GNU General Public License as published by
 701+ * the Free Software Foundation, either version 2 of the License, or
 702+ * (at your option) any later version.
 703+ *
 704+ * This program is distributed in the hope that it will be useful,
 705+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 706+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 707+ * GNU General Public License for more details.
 708+ *
 709+ * You should have received a copy of the GNU General Public License
 710+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 711+ */
 712+#include QMK_KEYBOARD_H
 713+#include "version.h"
 714+
 715+// Alias layout macros that expand groups of keys.
 716+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
 717+
 718+#define DFCBASE DF(_C_SYSTEM_BASE)
 719+#define DF_QWER DF(_QWERTY)
 720+// Long press: go to _FN layer, tap: MUTE
 721+#define FN_MUTE LT(_FN, KC_MUTE)
 722+
 723+// Used to set octave to MI_OCT_0
 724+extern midi_config_t midi_config;
 725+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 726+
 727+// Defines names for use in layer keycodes and the keymap
 728+enum layer_names {
 729+    _C_SYSTEM_BASE,  //  MIDI C-system
 730+    _QWERTY,         //  just in case
 731+    _FN
 732+};
 733+
 734+// Defines the keycodes used by our macros in process_record_user
 735+enum custom_keycodes {
 736+
 737+    // MIDI Chord Keycodes - Root notes
 738+    MY_CHORD_MIN = SAFE_RANGE,
 739+
 740+    MI_CH_Cr = MY_CHORD_MIN,
 741+    MI_CH_Csr,
 742+    MI_CH_Dbr = MI_CH_Csr,
 743+    MI_CH_Dr,
 744+    MI_CH_Dsr,
 745+    MI_CH_Ebr = MI_CH_Dsr,
 746+    MI_CH_Er,
 747+    MI_CH_Fr,
 748+    MI_CH_Fsr,
 749+    MI_CH_Gbr = MI_CH_Fsr,
 750+    MI_CH_Gr,
 751+    MI_CH_Gsr,
 752+    MI_CH_Abr = MI_CH_Gsr,
 753+    MI_CH_Ar,
 754+    MI_CH_Asr,
 755+    MI_CH_Bbr = MI_CH_Asr,
 756+    MI_CH_Br,
 757+
 758+    // MIDI Chord Keycodes - Major
 759+
 760+    MI_CH_C,
 761+    MI_CH_Cs,
 762+    MI_CH_Db = MI_CH_Cs,
 763+    MI_CH_D,
 764+    MI_CH_Ds,
 765+    MI_CH_Eb = MI_CH_Ds,
 766+    MI_CH_E,
 767+    MI_CH_F,
 768+    MI_CH_Fs,
 769+    MI_CH_Gb = MI_CH_Fs,
 770+    MI_CH_G,
 771+    MI_CH_Gs,
 772+    MI_CH_Ab = MI_CH_Gs,
 773+    MI_CH_A,
 774+    MI_CH_As,
 775+    MI_CH_Bb = MI_CH_As,
 776+    MI_CH_B,
 777+
 778+    // MIDI Chord Keycodes Minor
 779+
 780+    MI_CH_Cm,
 781+    MI_CH_Csm,
 782+    MI_CH_Dbm = MI_CH_Csm,
 783+    MI_CH_Dm,
 784+    MI_CH_Dsm,
 785+    MI_CH_Ebm = MI_CH_Dsm,
 786+    MI_CH_Em,
 787+    MI_CH_Fm,
 788+    MI_CH_Fsm,
 789+    MI_CH_Gbm = MI_CH_Fsm,
 790+    MI_CH_Gm,
 791+    MI_CH_Gsm,
 792+    MI_CH_Abm = MI_CH_Gsm,
 793+    MI_CH_Am,
 794+    MI_CH_Asm,
 795+    MI_CH_Bbm = MI_CH_Asm,
 796diff --git a/keyboards/giabalanai/keymaps/default/readme.md b/keyboards/giabalanai/keymaps/default/readme.md
 797new file mode 100644
 798index 0000000000000000000000000000000000000000..d929aa1f5e5437d28c19c4d84832f156018f18ac
 799--- /dev/null
 800+++ b/keyboards/giabalanai/keymaps/default/readme.md
 801@@ -0,0 +1 @@
 802+# The default keymap for giabalanai
 803diff --git a/keyboards/giabalanai/keymaps/default/rules.mk b/keyboards/giabalanai/keymaps/default/rules.mk
 804new file mode 100644
 805index 0000000000000000000000000000000000000000..8006608ea92286da2c7c42295d6dbc1393360838
 806--- /dev/null
 807+++ b/keyboards/giabalanai/keymaps/default/rules.mk
 808@@ -0,0 +1 @@
 809+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
 810diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
 811new file mode 100644
 812index 0000000000000000000000000000000000000000..684287ba98bf374e5c364be836e5ff4263745128
 813--- /dev/null
 814+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
 815@@ -0,0 +1,26 @@
 816+#pragma once
 817+
 818+#define GIABARINAIX2
 819+#ifdef GIABARINAIX2
 820+#    undef MATRIX_ROW_PINS_RIGHT
 821+#    undef MATRIX_COL_PINS_RIGHT
 822+
 823+#    ifdef RGBLIGHT_ENABLE
 824+#        undef RGBLED_NUM
 825+#        define RGBLED_NUM 120
 826+#        undef RGBLIGHT_LED_MAP
 827+#        define RGBLIGHT_LED_MAP { \
 828+           108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
 829+           107, 106, 105, 104, 103, 102, 101, 100, 99,  98,  97,  96, \
 830+           84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95, \
 831+           83,  82,  81,  80,  79,  78,  77,  76,  75,  74,  73,  72, \
 832+           60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71, \
 833+           \
 834+           11,  10,  9,   8,   7,   6,   5,   4,   3,   2,   1,   0,  \
 835+           12,  13,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23, \
 836+           35,  34,  33,  32,  31,  30,  29,  28,  27,  26,  25,  24, \
 837+           36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47, \
 838+           59,  58,  57,  56,  55,  54,  53,  52,  51,  50,  49,  48  \
 839+           }
 840+#    endif
 841+#endif
 842diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json b/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json
 843new file mode 100644
 844index 0000000000000000000000000000000000000000..20a52326dd6c29bc54e1ebd18ef05229ee8b9030
 845--- /dev/null
 846+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json
 847@@ -0,0 +1,146 @@
 848+{
 849+    "keyboard_name": "giabarinaix2",
 850+    "manufacturer": "3araht",
 851+    "url": "https://github.com/3araht",
 852+    "maintainer": "3araht",
 853+    "usb": {
 854+        "vid": "0xFEED",
 855+        "pid": "0xF4B2",
 856+        "device_version": "0.0.1"
 857+    },
 858+    "layouts": {
 859+        "LAYOUT": {
 860+          "layout": [
 861+              {"label": "l00", "x": 0,    "y": 0},
 862+              {"label": "l01", "x": 1,    "y": 0},
 863+              {"label": "l02", "x": 2,    "y": 0},
 864+              {"label": "l03", "x": 3,    "y": 0},
 865+              {"label": "l04", "x": 4,    "y": 0},
 866+              {"label": "l05", "x": 5,    "y": 0},
 867+              {"label": "l06", "x": 6,    "y": 0},
 868+              {"label": "l07", "x": 7,    "y": 0},
 869+              {"label": "l08", "x": 8,    "y": 0},
 870+              {"label": "l09", "x": 9,    "y": 0},
 871+              {"label": "l0a", "x": 10,   "y": 0},
 872+              {"label": "l0b", "x": 11,   "y": 0},
 873+
 874+              {"label": "r00", "x": 14.5, "y": 0},
 875+              {"label": "r01", "x": 15.5, "y": 0},
 876+              {"label": "r02", "x": 16.5, "y": 0},
 877+              {"label": "r03", "x": 17.5, "y": 0},
 878+              {"label": "r04", "x": 18.5, "y": 0},
 879+              {"label": "r05", "x": 19.5, "y": 0},
 880+              {"label": "r06", "x": 20.5, "y": 0},
 881+              {"label": "r07", "x": 21.5, "y": 0},
 882+              {"label": "r08", "x": 22.5, "y": 0},
 883+              {"label": "r09", "x": 23.5, "y": 0},
 884+              {"label": "r0a", "x": 24.5, "y": 0},
 885+              {"label": "r0b", "x": 25.5, "y": 0},
 886+
 887+              {"label": "l10", "x": 0.5,  "y": 1},
 888+              {"label": "l11", "x": 1.5,  "y": 1},
 889+              {"label": "l12", "x": 2.5,  "y": 1},
 890+              {"label": "l13", "x": 3.5,  "y": 1},
 891+              {"label": "l14", "x": 4.5,  "y": 1},
 892+              {"label": "l15", "x": 5.5,  "y": 1},
 893+              {"label": "l16", "x": 6.5,  "y": 1},
 894+              {"label": "l17", "x": 7.5,  "y": 1},
 895+              {"label": "l18", "x": 8.5,  "y": 1},
 896+              {"label": "l19", "x": 9.5,  "y": 1},
 897+              {"label": "l1a", "x": 10.5, "y": 1},
 898+              {"label": "l1b", "x": 11.5, "y": 1},
 899+
 900+              {"label": "r10", "x": 15,   "y": 1},
 901+              {"label": "r11", "x": 16,   "y": 1},
 902+              {"label": "r12", "x": 17,   "y": 1},
 903+              {"label": "r13", "x": 18,   "y": 1},
 904+              {"label": "r14", "x": 19,   "y": 1},
 905+              {"label": "r15", "x": 20,   "y": 1},
 906+              {"label": "r16", "x": 21,   "y": 1},
 907+              {"label": "r17", "x": 22,   "y": 1},
 908+              {"label": "r18", "x": 23,   "y": 1},
 909+              {"label": "r19", "x": 24,   "y": 1},
 910+              {"label": "r1a", "x": 25,   "y": 1},
 911+              {"label": "r1b", "x": 26,   "y": 1},
 912+
 913+              {"label": "l20", "x": 1,    "y": 2},
 914+              {"label": "l21", "x": 2,    "y": 2},
 915+              {"label": "l22", "x": 3,    "y": 2},
 916+              {"label": "l23", "x": 4,    "y": 2},
 917+              {"label": "l24", "x": 5,    "y": 2},
 918+              {"label": "l25", "x": 6,    "y": 2},
 919+              {"label": "l26", "x": 7,    "y": 2},
 920+              {"label": "l27", "x": 8,    "y": 2},
 921+              {"label": "l28", "x": 9,    "y": 2},
 922+              {"label": "l29", "x": 10,   "y": 2},
 923+              {"label": "l2a", "x": 11,   "y": 2},
 924+              {"label": "l2b", "x": 12,   "y": 2},
 925+
 926+              {"label": "r20", "x": 15.5, "y": 2},
 927+              {"label": "r21", "x": 16.5, "y": 2},
 928+              {"label": "r22", "x": 17.5, "y": 2},
 929+              {"label": "r23", "x": 18.5, "y": 2},
 930+              {"label": "r24", "x": 19.5, "y": 2},
 931+              {"label": "r25", "x": 20.5, "y": 2},
 932+              {"label": "r26", "x": 21.5, "y": 2},
 933+              {"label": "r27", "x": 22.5, "y": 2},
 934+              {"label": "r28", "x": 23.5, "y": 2},
 935+              {"label": "r29", "x": 24.5, "y": 2},
 936+              {"label": "r2a", "x": 25.5, "y": 2},
 937+              {"label": "r2b", "x": 26.5, "y": 2},
 938+
 939+              {"label": "l30", "x": 1.5,  "y": 3},
 940+              {"label": "l31", "x": 2.5,  "y": 3},
 941+              {"label": "l32", "x": 3.5,  "y": 3},
 942+              {"label": "l33", "x": 4.5,  "y": 3},
 943+              {"label": "l34", "x": 5.5,  "y": 3},
 944+              {"label": "l35", "x": 6.5,  "y": 3},
 945+              {"label": "l36", "x": 7.5,  "y": 3},
 946+              {"label": "l37", "x": 8.5,  "y": 3},
 947diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c b/keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c
 948new file mode 100644
 949index 0000000000000000000000000000000000000000..82d86594dfb999df1556c14f48009f1407b203e5
 950--- /dev/null
 951+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c
 952@@ -0,0 +1,262 @@
 953+/* Copyright 2020 3araht
 954+ *
 955+ * This program is free software: you can redistribute it and/or modify
 956+ * it under the terms of the GNU General Public License as published by
 957+ * the Free Software Foundation, either version 2 of the License, or
 958+ * (at your option) any later version.
 959+ *
 960+ * This program is distributed in the hope that it will be useful,
 961+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 962+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 963+ * GNU General Public License for more details.
 964+ *
 965+ * You should have received a copy of the GNU General Public License
 966+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 967+ */
 968+#include QMK_KEYBOARD_H
 969+#include "version.h"
 970+
 971+// Alias layout macros that expand groups of keys.
 972+#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__)
 973+
 974+#define DFCBASE DF(_C_SYSTEM_BASE)
 975+#define DF_QWER DF(_QWERTY)
 976+// Long press: go to _FN layer, tap: MUTE
 977+#define FN_MUTE LT(_FN, KC_MUTE)
 978+
 979+// Used to set octave to MI_OCT_0
 980+extern midi_config_t midi_config;
 981+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 982+
 983+// Defines names for use in layer keycodes and the keymap
 984+enum layer_names {
 985+    _C_SYSTEM_BASE,  //  MIDI C-system
 986+    _QWERTY,         //  just in case
 987+    _FN
 988+};
 989+
 990+// Defines the keycodes used by our macros in process_record_user
 991+enum custom_keycodes {
 992+
 993+    // MIDI Chord Keycodes - Root notes
 994+    MY_CHORD_MIN = SAFE_RANGE,
 995+
 996+    MI_CH_Cr = MY_CHORD_MIN,
 997+    MI_CH_Csr,
 998+    MI_CH_Dbr = MI_CH_Csr,
 999+    MI_CH_Dr,
1000+    MI_CH_Dsr,
1001+    MI_CH_Ebr = MI_CH_Dsr,
1002+    MI_CH_Er,
1003+    MI_CH_Fr,
1004+    MI_CH_Fsr,
1005+    MI_CH_Gbr = MI_CH_Fsr,
1006+    MI_CH_Gr,
1007+    MI_CH_Gsr,
1008+    MI_CH_Abr = MI_CH_Gsr,
1009+    MI_CH_Ar,
1010+    MI_CH_Asr,
1011+    MI_CH_Bbr = MI_CH_Asr,
1012+    MI_CH_Br,
1013+
1014+    // MIDI Chord Keycodes - Major
1015+
1016+    MI_CH_C,
1017+    MI_CH_Cs,
1018+    MI_CH_Db = MI_CH_Cs,
1019+    MI_CH_D,
1020+    MI_CH_Ds,
1021+    MI_CH_Eb = MI_CH_Ds,
1022+    MI_CH_E,
1023+    MI_CH_F,
1024+    MI_CH_Fs,
1025+    MI_CH_Gb = MI_CH_Fs,
1026+    MI_CH_G,
1027+    MI_CH_Gs,
1028+    MI_CH_Ab = MI_CH_Gs,
1029+    MI_CH_A,
1030+    MI_CH_As,
1031+    MI_CH_Bb = MI_CH_As,
1032+    MI_CH_B,
1033+
1034+    // MIDI Chord Keycodes Minor
1035+
1036+    MI_CH_Cm,
1037+    MI_CH_Csm,
1038+    MI_CH_Dbm = MI_CH_Csm,
1039+    MI_CH_Dm,
1040+    MI_CH_Dsm,
1041+    MI_CH_Ebm = MI_CH_Dsm,
1042+    MI_CH_Em,
1043+    MI_CH_Fm,
1044+    MI_CH_Fsm,
1045+    MI_CH_Gbm = MI_CH_Fsm,
1046+    MI_CH_Gm,
1047+    MI_CH_Gsm,
1048+    MI_CH_Abm = MI_CH_Gsm,
1049+    MI_CH_Am,
1050+    MI_CH_Asm,
1051+    MI_CH_Bbm = MI_CH_Asm,
1052diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md b/keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md
1053new file mode 100644
1054index 0000000000000000000000000000000000000000..ecdae4723d9c1b57d464abda541aaf4ceffe06fb
1055--- /dev/null
1056+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md
1057@@ -0,0 +1 @@
1058+# The default keymap for giabarinaix2
1059diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk b/keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk
1060new file mode 100644
1061index 0000000000000000000000000000000000000000..354223388411f28924c1dad9f65fd409e995b785
1062--- /dev/null
1063+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk
1064@@ -0,0 +1,3 @@
1065+ENCODER_ENABLE = no        # encoder on mute button
1066+
1067+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
1068diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h
1069new file mode 100644
1070index 0000000000000000000000000000000000000000..684287ba98bf374e5c364be836e5ff4263745128
1071--- /dev/null
1072+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h
1073@@ -0,0 +1,26 @@
1074+#pragma once
1075+
1076+#define GIABARINAIX2
1077+#ifdef GIABARINAIX2
1078+#    undef MATRIX_ROW_PINS_RIGHT
1079+#    undef MATRIX_COL_PINS_RIGHT
1080+
1081+#    ifdef RGBLIGHT_ENABLE
1082+#        undef RGBLED_NUM
1083+#        define RGBLED_NUM 120
1084+#        undef RGBLIGHT_LED_MAP
1085+#        define RGBLIGHT_LED_MAP { \
1086+           108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
1087+           107, 106, 105, 104, 103, 102, 101, 100, 99,  98,  97,  96, \
1088+           84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95, \
1089+           83,  82,  81,  80,  79,  78,  77,  76,  75,  74,  73,  72, \
1090+           60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71, \
1091+           \
1092+           11,  10,  9,   8,   7,   6,   5,   4,   3,   2,   1,   0,  \
1093+           12,  13,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23, \
1094+           35,  34,  33,  32,  31,  30,  29,  28,  27,  26,  25,  24, \
1095+           36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47, \
1096+           59,  58,  57,  56,  55,  54,  53,  52,  51,  50,  49,  48  \
1097+           }
1098+#    endif
1099+#endif
1100diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/info.json b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json
1101new file mode 100644
1102index 0000000000000000000000000000000000000000..20a52326dd6c29bc54e1ebd18ef05229ee8b9030
1103--- /dev/null
1104+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json
1105@@ -0,0 +1,146 @@
1106+{
1107+    "keyboard_name": "giabarinaix2",
1108+    "manufacturer": "3araht",
1109+    "url": "https://github.com/3araht",
1110+    "maintainer": "3araht",
1111+    "usb": {
1112+        "vid": "0xFEED",
1113+        "pid": "0xF4B2",
1114+        "device_version": "0.0.1"
1115+    },
1116+    "layouts": {
1117+        "LAYOUT": {
1118+          "layout": [
1119+              {"label": "l00", "x": 0,    "y": 0},
1120+              {"label": "l01", "x": 1,    "y": 0},
1121+              {"label": "l02", "x": 2,    "y": 0},
1122+              {"label": "l03", "x": 3,    "y": 0},
1123+              {"label": "l04", "x": 4,    "y": 0},
1124+              {"label": "l05", "x": 5,    "y": 0},
1125+              {"label": "l06", "x": 6,    "y": 0},
1126+              {"label": "l07", "x": 7,    "y": 0},
1127+              {"label": "l08", "x": 8,    "y": 0},
1128+              {"label": "l09", "x": 9,    "y": 0},
1129+              {"label": "l0a", "x": 10,   "y": 0},
1130+              {"label": "l0b", "x": 11,   "y": 0},
1131+
1132+              {"label": "r00", "x": 14.5, "y": 0},
1133+              {"label": "r01", "x": 15.5, "y": 0},
1134+              {"label": "r02", "x": 16.5, "y": 0},
1135+              {"label": "r03", "x": 17.5, "y": 0},
1136+              {"label": "r04", "x": 18.5, "y": 0},
1137+              {"label": "r05", "x": 19.5, "y": 0},
1138+              {"label": "r06", "x": 20.5, "y": 0},
1139+              {"label": "r07", "x": 21.5, "y": 0},
1140+              {"label": "r08", "x": 22.5, "y": 0},
1141+              {"label": "r09", "x": 23.5, "y": 0},
1142+              {"label": "r0a", "x": 24.5, "y": 0},
1143+              {"label": "r0b", "x": 25.5, "y": 0},
1144+
1145+              {"label": "l10", "x": 0.5,  "y": 1},
1146+              {"label": "l11", "x": 1.5,  "y": 1},
1147+              {"label": "l12", "x": 2.5,  "y": 1},
1148+              {"label": "l13", "x": 3.5,  "y": 1},
1149+              {"label": "l14", "x": 4.5,  "y": 1},
1150+              {"label": "l15", "x": 5.5,  "y": 1},
1151+              {"label": "l16", "x": 6.5,  "y": 1},
1152+              {"label": "l17", "x": 7.5,  "y": 1},
1153+              {"label": "l18", "x": 8.5,  "y": 1},
1154+              {"label": "l19", "x": 9.5,  "y": 1},
1155+              {"label": "l1a", "x": 10.5, "y": 1},
1156+              {"label": "l1b", "x": 11.5, "y": 1},
1157+
1158+              {"label": "r10", "x": 15,   "y": 1},
1159+              {"label": "r11", "x": 16,   "y": 1},
1160+              {"label": "r12", "x": 17,   "y": 1},
1161+              {"label": "r13", "x": 18,   "y": 1},
1162+              {"label": "r14", "x": 19,   "y": 1},
1163+              {"label": "r15", "x": 20,   "y": 1},
1164+              {"label": "r16", "x": 21,   "y": 1},
1165+              {"label": "r17", "x": 22,   "y": 1},
1166+              {"label": "r18", "x": 23,   "y": 1},
1167+              {"label": "r19", "x": 24,   "y": 1},
1168+              {"label": "r1a", "x": 25,   "y": 1},
1169+              {"label": "r1b", "x": 26,   "y": 1},
1170+
1171+              {"label": "l20", "x": 1,    "y": 2},
1172+              {"label": "l21", "x": 2,    "y": 2},
1173+              {"label": "l22", "x": 3,    "y": 2},
1174+              {"label": "l23", "x": 4,    "y": 2},
1175+              {"label": "l24", "x": 5,    "y": 2},
1176+              {"label": "l25", "x": 6,    "y": 2},
1177+              {"label": "l26", "x": 7,    "y": 2},
1178+              {"label": "l27", "x": 8,    "y": 2},
1179+              {"label": "l28", "x": 9,    "y": 2},
1180+              {"label": "l29", "x": 10,   "y": 2},
1181+              {"label": "l2a", "x": 11,   "y": 2},
1182+              {"label": "l2b", "x": 12,   "y": 2},
1183+
1184+              {"label": "r20", "x": 15.5, "y": 2},
1185+              {"label": "r21", "x": 16.5, "y": 2},
1186+              {"label": "r22", "x": 17.5, "y": 2},
1187+              {"label": "r23", "x": 18.5, "y": 2},
1188+              {"label": "r24", "x": 19.5, "y": 2},
1189+              {"label": "r25", "x": 20.5, "y": 2},
1190+              {"label": "r26", "x": 21.5, "y": 2},
1191+              {"label": "r27", "x": 22.5, "y": 2},
1192+              {"label": "r28", "x": 23.5, "y": 2},
1193+              {"label": "r29", "x": 24.5, "y": 2},
1194+              {"label": "r2a", "x": 25.5, "y": 2},
1195+              {"label": "r2b", "x": 26.5, "y": 2},
1196+
1197+              {"label": "l30", "x": 1.5,  "y": 3},
1198+              {"label": "l31", "x": 2.5,  "y": 3},
1199+              {"label": "l32", "x": 3.5,  "y": 3},
1200+              {"label": "l33", "x": 4.5,  "y": 3},
1201+              {"label": "l34", "x": 5.5,  "y": 3},
1202+              {"label": "l35", "x": 6.5,  "y": 3},
1203+              {"label": "l36", "x": 7.5,  "y": 3},
1204+              {"label": "l37", "x": 8.5,  "y": 3},
1205diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c b/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c
1206new file mode 100644
1207index 0000000000000000000000000000000000000000..1e773bd2336d7db10354f9893292eeef6e2be3ff
1208--- /dev/null
1209+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c
1210@@ -0,0 +1,464 @@
1211+/* Copyright 2020 3araht
1212+ *
1213+ * This program is free software: you can redistribute it and/or modify
1214+ * it under the terms of the GNU General Public License as published by
1215+ * the Free Software Foundation, either version 2 of the License, or
1216+ * (at your option) any later version.
1217+ *
1218+ * This program is distributed in the hope that it will be useful,
1219+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1220+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1221+ * GNU General Public License for more details.
1222+ *
1223+ * You should have received a copy of the GNU General Public License
1224+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
1225+ */
1226+#include QMK_KEYBOARD_H
1227+#include "version.h"
1228+
1229+// Alias layout macros that expand groups of keys.
1230+#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__)
1231+
1232+#define DFCBASE DF(_C_SYSTEM_BASE)
1233+#define DF_QWER DF(_QWERTY)
1234+// Long press: go to _FN layer, tap: MUTE
1235+#define FN_MUTE LT(_FN, KC_MUTE)
1236+
1237+// Used to set octave to MI_OCT_0
1238+extern midi_config_t midi_config;
1239+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
1240+
1241+#ifdef RGBLIGHT_ENABLE
1242+/* used to specify there is no LED on the keylocation. */
1243+#    define NO_LED 255
1244+#endif  //  RGBLIGHT_ENABLE
1245+// Defines names for use in layer keycodes and the keymap
1246+enum layer_names {
1247+    _C_SYSTEM_BASE,      //  MIDI C-system
1248+    _C_SYSTEM_BASS2ROW,  //  counter bass system
1249+    _C_SYSTEM_ENTIRELY,  //  single notes for both left and right keybaords.
1250+    _CHROMATONE,
1251+    _QWERTY,             //  just in case
1252+    _FN
1253+};
1254+
1255+// Defines the keycodes used by our macros in process_record_user
1256+enum custom_keycodes {
1257+
1258+    // MIDI Chord Keycodes - Root notes
1259+    MY_CHORD_MIN = SAFE_RANGE,
1260+
1261+    MI_CH_Cr = MY_CHORD_MIN,
1262+    MI_CH_Csr,
1263+    MI_CH_Dbr = MI_CH_Csr,
1264+    MI_CH_Dr,
1265+    MI_CH_Dsr,
1266+    MI_CH_Ebr = MI_CH_Dsr,
1267+    MI_CH_Er,
1268+    MI_CH_Fr,
1269+    MI_CH_Fsr,
1270+    MI_CH_Gbr = MI_CH_Fsr,
1271+    MI_CH_Gr,
1272+    MI_CH_Gsr,
1273+    MI_CH_Abr = MI_CH_Gsr,
1274+    MI_CH_Ar,
1275+    MI_CH_Asr,
1276+    MI_CH_Bbr = MI_CH_Asr,
1277+    MI_CH_Br,
1278+
1279+    // MIDI Chord Keycodes - Major
1280+
1281+    MI_CH_C,
1282+    MI_CH_Cs,
1283+    MI_CH_Db = MI_CH_Cs,
1284+    MI_CH_D,
1285+    MI_CH_Ds,
1286+    MI_CH_Eb = MI_CH_Ds,
1287+    MI_CH_E,
1288+    MI_CH_F,
1289+    MI_CH_Fs,
1290+    MI_CH_Gb = MI_CH_Fs,
1291+    MI_CH_G,
1292+    MI_CH_Gs,
1293+    MI_CH_Ab = MI_CH_Gs,
1294+    MI_CH_A,
1295+    MI_CH_As,
1296+    MI_CH_Bb = MI_CH_As,
1297+    MI_CH_B,
1298+
1299+    // MIDI Chord Keycodes Minor
1300+
1301+    MI_CH_Cm,
1302+    MI_CH_Csm,
1303+    MI_CH_Dbm = MI_CH_Csm,
1304+    MI_CH_Dm,
1305+    MI_CH_Dsm,
1306+    MI_CH_Ebm = MI_CH_Dsm,
1307+    MI_CH_Em,
1308+    MI_CH_Fm,
1309+    MI_CH_Fsm,
1310diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md b/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md
1311new file mode 100644
1312index 0000000000000000000000000000000000000000..89139ec1b3b6056b47c05f02a95c2725bca4f825
1313--- /dev/null
1314+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md
1315@@ -0,0 +1 @@
1316+# A keymap for giabarinaix2 with LEDs.
1317diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk b/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk
1318new file mode 100644
1319index 0000000000000000000000000000000000000000..d8dc6a10e76afd2f2aed15a1efb49f16405f212c
1320--- /dev/null
1321+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk
1322@@ -0,0 +1,3 @@
1323+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
1324+
1325+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
1326diff --git a/keyboards/giabalanai/keymaps/party/keymap.c b/keyboards/giabalanai/keymaps/party/keymap.c
1327new file mode 100644
1328index 0000000000000000000000000000000000000000..5a4361e5ae5098b767dea3b44ce0469e7079a42f
1329--- /dev/null
1330+++ b/keyboards/giabalanai/keymaps/party/keymap.c
1331@@ -0,0 +1,792 @@
1332+/* Copyright 2020 3araht
1333+ *
1334+ * This program is free software: you can redistribute it and/or modify
1335+ * it under the terms of the GNU General Public License as published by
1336+ * the Free Software Foundation, either version 2 of the License, or
1337+ * (at your option) any later version.
1338+ *
1339+ * This program is distributed in the hope that it will be useful,
1340+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1341+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1342+ * GNU General Public License for more details.
1343+ *
1344+ * You should have received a copy of the GNU General Public License
1345+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
1346+ */
1347+#include QMK_KEYBOARD_H
1348+#include "print.h"
1349+#include "version.h"
1350+
1351+// Alias layout macros that expand groups of keys.
1352+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
1353+
1354+#define DF_QWER  DF(_QWERTY)
1355+#define DF_COLE  DF(_COLEMAK)
1356+#define MO_ADJ   MO(_ADJUST)
1357+// Long press: go to _FN layer, tap: MUTE
1358+#define FN_MUTE  LT(_FN, KC_MUTE)
1359+#define SHIF_UP  RSFT_T(KC_UP)
1360+#define ADJ_EIS  LT(_ADJUST,KC_LANG2)
1361+#define MIS_KAN  LT(_MISC,KC_LANG1)
1362+
1363+// Used to set octave to MI_OCT_0
1364+extern midi_config_t midi_config;
1365+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
1366+
1367+// UNISON flags
1368+static bool melody_dyad_high = false;  //  true when +1 octave unison dyad is enabled.
1369+static bool melody_dyad_low  = false;  //  true when -1 octave unison dyad is enabled.
1370+
1371+static bool melody_unison_suppress  = true;  //  true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
1372+
1373+// To record the status of Bass Chord (single or dyad, default: dyad.)
1374+typedef union {
1375+    uint32_t raw;
1376+    struct {
1377+        bool isSingleBass:1;
1378+    };
1379+} user_config_t;
1380+user_config_t user_config;
1381+
1382+#define IS_SINGLE_BASS()   (user_config.isSingleBass)
1383+
1384+#ifdef RGBLIGHT_ENABLE
1385+/* used to specify there is no LED on the keylocation. */
1386+#    define NO_LED 255
1387+#endif  //  RGBLIGHT_ENABLE
1388+
1389+
1390+// Defines names for use in layer keycodes and the keymap
1391+enum layer_names {
1392+    _C_SYSTEM_BASE,      //  MIDI C-system
1393+    _FAKE_B_SYSTEM,      //  MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system.
1394+    _C_SYSTEM_BASS2ROW,  //  counter bass system
1395+    _C_SYSTEM_ENTIRELY,  //  single notes for both left and right keybaords.
1396+    _C_SYSTEM_FREEBASS,  //  C-system Free Bass
1397+    _CHROMATONE,
1398+    _CFLIP_BASS2ROW,     //  180 degree flipped layout on right side keyboard
1399+    _QWERTY,
1400+    _COLEMAK,
1401+    _ADJUST,             //  for Fn keys, etc.
1402+    _FN                  //  for changing layers, octaves, etc.
1403+};
1404+
1405+// Defines the keycodes used by our macros in process_record_user
1406+enum custom_keycodes {
1407+
1408+    // MIDI Chord Keycodes - Root notes
1409+    MY_CHORD_MIN = SAFE_RANGE,
1410+
1411+    MI_CH_Cr = MY_CHORD_MIN,
1412+    MI_CH_Csr,
1413+    MI_CH_Dbr = MI_CH_Csr,
1414+    MI_CH_Dr,
1415+    MI_CH_Dsr,
1416+    MI_CH_Ebr = MI_CH_Dsr,
1417+    MI_CH_Er,
1418+    MI_CH_Fr,
1419+    MI_CH_Fsr,
1420+    MI_CH_Gbr = MI_CH_Fsr,
1421+    MI_CH_Gr,
1422+    MI_CH_Gsr,
1423+    MI_CH_Abr = MI_CH_Gsr,
1424+    MI_CH_Ar,
1425+    MI_CH_Asr,
1426+    MI_CH_Bbr = MI_CH_Asr,
1427+    MI_CH_Br,
1428+
1429+    // MIDI Chord Keycodes - Major
1430+
1431diff --git a/keyboards/giabalanai/keymaps/party/readme.md b/keyboards/giabalanai/keymaps/party/readme.md
1432new file mode 100644
1433index 0000000000000000000000000000000000000000..797fed76f83e52a9f2f140e1d70bf6863771b5d0
1434--- /dev/null
1435+++ b/keyboards/giabalanai/keymaps/party/readme.md
1436@@ -0,0 +1,3 @@
1437+# The fancy LED ver. for giabalanai
1438+# warning: There is little space left for the firmware. You can't do anything further with this firmware.
1439+#          Power consumption might exceed 5 V * 500 mA = 2.5 W or so.
1440diff --git a/keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc b/keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc
1441new file mode 100644
1442index 0000000000000000000000000000000000000000..40ce7148d319865c7e1e2b4b4929dd87154820c3
1443--- /dev/null
1444+++ b/keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc
1445@@ -0,0 +1,57 @@
1446+#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
1447+RGB_MATRIX_EFFECT(my_solid_reactive_with_CnoteIndicator)
1448+RGB_MATRIX_EFFECT(my_party_rocks)
1449+
1450+#    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
1451+
1452+bool my_solid_reactive_with_CnoteIndicator(effect_params_t* params) {
1453+    RGB_MATRIX_USE_LIMITS(led_min, led_max);
1454+
1455+    uint16_t max_tick = 65535 / rgb_matrix_config.speed;
1456+    for (uint8_t i = led_min; i < led_max; i++) {
1457+        RGB_MATRIX_TEST_LED_FLAGS();
1458+        HSV hsv = rgb_matrix_config.hsv;
1459+        switch (i) {
1460+            //  C note indicator
1461+            case 15:
1462+            case 19:
1463+            case 23:
1464+            case 52:
1465+            case 56:
1466+            case 60:
1467+            case 80:  //  left hand side, bass C note when counter bass is chosen.
1468+                // HSV_GOLDENROD
1469+                hsv.h = 30;
1470+                hsv.s = 218;
1471+                hsv.v = 218;
1472+                break;
1473+        }
1474+        uint16_t tick = max_tick;
1475+        // Reverse search to find most recent key hit
1476+        for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) {
1477+            if (g_last_hit_tracker.x[j] == g_led_config.point[i].x && g_last_hit_tracker.y[j] == g_led_config.point[i].y && g_last_hit_tracker.tick[j] < tick) {
1478+                tick = g_last_hit_tracker.tick[j];
1479+                break;
1480+            }
1481+        }
1482+
1483+        uint16_t offset = scale16by8(tick, rgb_matrix_config.speed);
1484+        hsv.h += qsub8(130, offset);
1485+        RGB      rgb    = rgb_matrix_hsv_to_rgb(hsv);
1486+        rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
1487+    }
1488+    return led_max < DRIVER_LED_TOTAL;
1489+}
1490+
1491+bool my_party_rocks(effect_params_t* params) {
1492+    RGB_MATRIX_USE_LIMITS(led_min, led_max);
1493+    HSV hsv = {rand() & 0xFF, rand() & 0xFF, rgb_matrix_config.hsv.v};
1494+    RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
1495+    // rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
1496+    rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
1497+    return led_max < DRIVER_LED_TOTAL;
1498+}
1499+
1500+
1501+#    endif      // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
1502+#endif          // RGB_MATRIX_KEYREACTIVE_ENABLED
1503diff --git a/keyboards/giabalanai/keymaps/party/rules.mk b/keyboards/giabalanai/keymaps/party/rules.mk
1504new file mode 100644
1505index 0000000000000000000000000000000000000000..c05207feebe5e25e4edc3553902b57c00bb14241
1506--- /dev/null
1507+++ b/keyboards/giabalanai/keymaps/party/rules.mk
1508@@ -0,0 +1,6 @@
1509+# RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
1510+CONSOLE_ENABLE =  no        # Console for debug
1511+RGB_MATRIX_ENABLE = yes    # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
1512+RGB_MATRIX_CUSTOM_USER = yes  #
1513+
1514+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
1515diff --git a/keyboards/giabalanai/keymaps/via/config.h b/keyboards/giabalanai/keymaps/via/config.h
1516new file mode 100644
1517index 0000000000000000000000000000000000000000..a3b77a5b4d0b492982a731854db37dc857a24a87
1518--- /dev/null
1519+++ b/keyboards/giabalanai/keymaps/via/config.h
1520@@ -0,0 +1,3 @@
1521+#pragma once
1522+
1523+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
1524diff --git a/keyboards/giabalanai/keymaps/via/keymap.c b/keyboards/giabalanai/keymaps/via/keymap.c
1525new file mode 100644
1526index 0000000000000000000000000000000000000000..774260d052eca477c2ea1909bb3e452e47894282
1527--- /dev/null
1528+++ b/keyboards/giabalanai/keymaps/via/keymap.c
1529@@ -0,0 +1,260 @@
1530+/* Copyright 2020 3araht
1531+ *
1532+ * This program is free software: you can redistribute it and/or modify
1533+ * it under the terms of the GNU General Public License as published by
1534+ * the Free Software Foundation, either version 2 of the License, or
1535+ * (at your option) any later version.
1536+ *
1537+ * This program is distributed in the hope that it will be useful,
1538+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1539+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1540+ * GNU General Public License for more details.
1541+ *
1542+ * You should have received a copy of the GNU General Public License
1543+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
1544+ */
1545+#include QMK_KEYBOARD_H
1546+#include "version.h"
1547+
1548+// Alias layout macros that expand groups of keys.
1549+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
1550+
1551+#define DFCBASE DF(_C_SYSTEM_BASE)
1552+#define DF_QWER DF(_QWERTY)
1553+// Long press: go to _FN layer, tap: MUTE
1554+#define FN_MUTE LT(_FN, KC_MUTE)
1555+
1556+// Used to set octave to MI_OCT_0
1557+extern midi_config_t midi_config;
1558+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
1559+
1560+// Defines names for use in layer keycodes and the keymap
1561+enum layer_names {
1562+    _C_SYSTEM_BASE,  //  MIDI C-system
1563+    _QWERTY,         //  just in case
1564+    _FN
1565+};
1566+
1567+// Defines the keycodes used by our macros in process_record_user
1568+enum custom_keycodes {
1569+
1570+    // MIDI Chord Keycodes - Root notes
1571+    MY_CHORD_MIN = SAFE_RANGE,
1572+
1573+    MI_CH_Cr = MY_CHORD_MIN,
1574+    MI_CH_Csr,
1575+    MI_CH_Dbr = MI_CH_Csr,
1576+    MI_CH_Dr,
1577+    MI_CH_Dsr,
1578+    MI_CH_Ebr = MI_CH_Dsr,
1579+    MI_CH_Er,
1580+    MI_CH_Fr,
1581+    MI_CH_Fsr,
1582+    MI_CH_Gbr = MI_CH_Fsr,
1583+    MI_CH_Gr,
1584+    MI_CH_Gsr,
1585+    MI_CH_Abr = MI_CH_Gsr,
1586+    MI_CH_Ar,
1587+    MI_CH_Asr,
1588+    MI_CH_Bbr = MI_CH_Asr,
1589+    MI_CH_Br,
1590+
1591+    // MIDI Chord Keycodes - Major
1592+
1593+    MI_CH_C,
1594+    MI_CH_Cs,
1595+    MI_CH_Db = MI_CH_Cs,
1596+    MI_CH_D,
1597+    MI_CH_Ds,
1598+    MI_CH_Eb = MI_CH_Ds,
1599+    MI_CH_E,
1600+    MI_CH_F,
1601+    MI_CH_Fs,
1602+    MI_CH_Gb = MI_CH_Fs,
1603+    MI_CH_G,
1604+    MI_CH_Gs,
1605+    MI_CH_Ab = MI_CH_Gs,
1606+    MI_CH_A,
1607+    MI_CH_As,
1608+    MI_CH_Bb = MI_CH_As,
1609+    MI_CH_B,
1610+
1611+    // MIDI Chord Keycodes Minor
1612+
1613+    MI_CH_Cm,
1614+    MI_CH_Csm,
1615+    MI_CH_Dbm = MI_CH_Csm,
1616+    MI_CH_Dm,
1617+    MI_CH_Dsm,
1618+    MI_CH_Ebm = MI_CH_Dsm,
1619+    MI_CH_Em,
1620+    MI_CH_Fm,
1621+    MI_CH_Fsm,
1622+    MI_CH_Gbm = MI_CH_Fsm,
1623+    MI_CH_Gm,
1624+    MI_CH_Gsm,
1625+    MI_CH_Abm = MI_CH_Gsm,
1626+    MI_CH_Am,
1627+    MI_CH_Asm,
1628+    MI_CH_Bbm = MI_CH_Asm,
1629diff --git a/keyboards/giabalanai/keymaps/via/readme.md b/keyboards/giabalanai/keymaps/via/readme.md
1630new file mode 100644
1631index 0000000000000000000000000000000000000000..3c599bfe0e37fd54034efa9a2aa495c17297e7f3
1632--- /dev/null
1633+++ b/keyboards/giabalanai/keymaps/via/readme.md
1634@@ -0,0 +1 @@
1635+# The default VIA keymap for giabalanai
1636diff --git a/keyboards/giabalanai/keymaps/via/rules.mk b/keyboards/giabalanai/keymaps/via/rules.mk
1637new file mode 100644
1638index 0000000000000000000000000000000000000000..da4a83087f41949698540d0f0cd2a4f89a4a74ba
1639--- /dev/null
1640+++ b/keyboards/giabalanai/keymaps/via/rules.mk
1641@@ -0,0 +1,3 @@
1642+VIA_ENABLE = yes
1643+
1644+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
1645diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
1646new file mode 100644
1647index 0000000000000000000000000000000000000000..01905b8dfec3f60400d89f1a867b5a318ba6991a
1648--- /dev/null
1649+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
1650@@ -0,0 +1,27 @@
1651+#pragma once
1652+
1653+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
1654+#define GIABARINAIX2
1655+#ifdef GIABARINAIX2
1656+#    undef MATRIX_ROW_PINS_RIGHT
1657+#    undef MATRIX_COL_PINS_RIGHT
1658+
1659+#    ifdef RGBLIGHT_ENABLE
1660+#        undef RGBLED_NUM
1661+#        define RGBLED_NUM 120
1662+#        undef RGBLIGHT_LED_MAP
1663+#        define RGBLIGHT_LED_MAP { \
1664+           108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
1665+           107, 106, 105, 104, 103, 102, 101, 100, 99,  98,  97,  96, \
1666+           84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95, \
1667+           83,  82,  81,  80,  79,  78,  77,  76,  75,  74,  73,  72, \
1668+           60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71, \
1669+           \
1670+           11,  10,  9,   8,   7,   6,   5,   4,   3,   2,   1,   0,  \
1671+           12,  13,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23, \
1672+           35,  34,  33,  32,  31,  30,  29,  28,  27,  26,  25,  24, \
1673+           36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47, \
1674+           59,  58,  57,  56,  55,  54,  53,  52,  51,  50,  49,  48  \
1675+           }
1676+#    endif
1677+#endif
1678diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json b/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json
1679new file mode 100644
1680index 0000000000000000000000000000000000000000..20a52326dd6c29bc54e1ebd18ef05229ee8b9030
1681--- /dev/null
1682+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json
1683@@ -0,0 +1,146 @@
1684+{
1685+    "keyboard_name": "giabarinaix2",
1686+    "manufacturer": "3araht",
1687+    "url": "https://github.com/3araht",
1688+    "maintainer": "3araht",
1689+    "usb": {
1690+        "vid": "0xFEED",
1691+        "pid": "0xF4B2",
1692+        "device_version": "0.0.1"
1693+    },
1694+    "layouts": {
1695+        "LAYOUT": {
1696+          "layout": [
1697+              {"label": "l00", "x": 0,    "y": 0},
1698+              {"label": "l01", "x": 1,    "y": 0},
1699+              {"label": "l02", "x": 2,    "y": 0},
1700+              {"label": "l03", "x": 3,    "y": 0},
1701+              {"label": "l04", "x": 4,    "y": 0},
1702+              {"label": "l05", "x": 5,    "y": 0},
1703+              {"label": "l06", "x": 6,    "y": 0},
1704+              {"label": "l07", "x": 7,    "y": 0},
1705+              {"label": "l08", "x": 8,    "y": 0},
1706+              {"label": "l09", "x": 9,    "y": 0},
1707+              {"label": "l0a", "x": 10,   "y": 0},
1708+              {"label": "l0b", "x": 11,   "y": 0},
1709+
1710+              {"label": "r00", "x": 14.5, "y": 0},
1711+              {"label": "r01", "x": 15.5, "y": 0},
1712+              {"label": "r02", "x": 16.5, "y": 0},
1713+              {"label": "r03", "x": 17.5, "y": 0},
1714+              {"label": "r04", "x": 18.5, "y": 0},
1715+              {"label": "r05", "x": 19.5, "y": 0},
1716+              {"label": "r06", "x": 20.5, "y": 0},
1717+              {"label": "r07", "x": 21.5, "y": 0},
1718+              {"label": "r08", "x": 22.5, "y": 0},
1719+              {"label": "r09", "x": 23.5, "y": 0},
1720+              {"label": "r0a", "x": 24.5, "y": 0},
1721+              {"label": "r0b", "x": 25.5, "y": 0},
1722+
1723+              {"label": "l10", "x": 0.5,  "y": 1},
1724+              {"label": "l11", "x": 1.5,  "y": 1},
1725+              {"label": "l12", "x": 2.5,  "y": 1},
1726+              {"label": "l13", "x": 3.5,  "y": 1},
1727+              {"label": "l14", "x": 4.5,  "y": 1},
1728+              {"label": "l15", "x": 5.5,  "y": 1},
1729+              {"label": "l16", "x": 6.5,  "y": 1},
1730+              {"label": "l17", "x": 7.5,  "y": 1},
1731+              {"label": "l18", "x": 8.5,  "y": 1},
1732+              {"label": "l19", "x": 9.5,  "y": 1},
1733+              {"label": "l1a", "x": 10.5, "y": 1},
1734+              {"label": "l1b", "x": 11.5, "y": 1},
1735+
1736+              {"label": "r10", "x": 15,   "y": 1},
1737+              {"label": "r11", "x": 16,   "y": 1},
1738+              {"label": "r12", "x": 17,   "y": 1},
1739+              {"label": "r13", "x": 18,   "y": 1},
1740+              {"label": "r14", "x": 19,   "y": 1},
1741+              {"label": "r15", "x": 20,   "y": 1},
1742+              {"label": "r16", "x": 21,   "y": 1},
1743+              {"label": "r17", "x": 22,   "y": 1},
1744+              {"label": "r18", "x": 23,   "y": 1},
1745+              {"label": "r19", "x": 24,   "y": 1},
1746+              {"label": "r1a", "x": 25,   "y": 1},
1747+              {"label": "r1b", "x": 26,   "y": 1},
1748+
1749+              {"label": "l20", "x": 1,    "y": 2},
1750+              {"label": "l21", "x": 2,    "y": 2},
1751+              {"label": "l22", "x": 3,    "y": 2},
1752+              {"label": "l23", "x": 4,    "y": 2},
1753+              {"label": "l24", "x": 5,    "y": 2},
1754+              {"label": "l25", "x": 6,    "y": 2},
1755+              {"label": "l26", "x": 7,    "y": 2},
1756+              {"label": "l27", "x": 8,    "y": 2},
1757+              {"label": "l28", "x": 9,    "y": 2},
1758+              {"label": "l29", "x": 10,   "y": 2},
1759+              {"label": "l2a", "x": 11,   "y": 2},
1760+              {"label": "l2b", "x": 12,   "y": 2},
1761+
1762+              {"label": "r20", "x": 15.5, "y": 2},
1763+              {"label": "r21", "x": 16.5, "y": 2},
1764+              {"label": "r22", "x": 17.5, "y": 2},
1765+              {"label": "r23", "x": 18.5, "y": 2},
1766+              {"label": "r24", "x": 19.5, "y": 2},
1767+              {"label": "r25", "x": 20.5, "y": 2},
1768+              {"label": "r26", "x": 21.5, "y": 2},
1769+              {"label": "r27", "x": 22.5, "y": 2},
1770+              {"label": "r28", "x": 23.5, "y": 2},
1771+              {"label": "r29", "x": 24.5, "y": 2},
1772+              {"label": "r2a", "x": 25.5, "y": 2},
1773+              {"label": "r2b", "x": 26.5, "y": 2},
1774+
1775+              {"label": "l30", "x": 1.5,  "y": 3},
1776+              {"label": "l31", "x": 2.5,  "y": 3},
1777+              {"label": "l32", "x": 3.5,  "y": 3},
1778+              {"label": "l33", "x": 4.5,  "y": 3},
1779+              {"label": "l34", "x": 5.5,  "y": 3},
1780+              {"label": "l35", "x": 6.5,  "y": 3},
1781+              {"label": "l36", "x": 7.5,  "y": 3},
1782+              {"label": "l37", "x": 8.5,  "y": 3},
1783diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c b/keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c
1784new file mode 100644
1785index 0000000000000000000000000000000000000000..afe1faff1b0305cbdad0225c491fd67b2ff9fa87
1786--- /dev/null
1787+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c
1788@@ -0,0 +1,262 @@
1789+/* Copyright 2020 3araht
1790+ *
1791+ * This program is free software: you can redistribute it and/or modify
1792+ * it under the terms of the GNU General Public License as published by
1793+ * the Free Software Foundation, either version 2 of the License, or
1794+ * (at your option) any later version.
1795+ *
1796+ * This program is distributed in the hope that it will be useful,
1797+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1798+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1799+ * GNU General Public License for more details.
1800+ *
1801+ * You should have received a copy of the GNU General Public License
1802+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
1803+ */
1804+#include QMK_KEYBOARD_H
1805+#include "version.h"
1806+
1807+// Alias layout macros that expand groups of keys.
1808+#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__)
1809+
1810+#define DFCBASE DF(_C_SYSTEM_BASE)
1811+#define DF_QWER DF(_QWERTY)
1812+// Long press: go to _FN layer, tap: MUTE
1813+#define FN_MUTE LT(_FN, KC_MUTE)
1814+
1815+// Used to set octave to MI_OCT_0
1816+extern midi_config_t midi_config;
1817+uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
1818+
1819+// Defines names for use in layer keycodes and the keymap
1820+enum layer_names {
1821+    _C_SYSTEM_BASE,  //  MIDI C-system
1822+    _QWERTY,         //  just in case
1823+    _FN
1824+};
1825+
1826+// Defines the keycodes used by our macros in process_record_user
1827+enum custom_keycodes {
1828+
1829+    // MIDI Chord Keycodes - Root notes
1830+    MY_CHORD_MIN = SAFE_RANGE,
1831+
1832+    MI_CH_Cr = MY_CHORD_MIN,
1833+    MI_CH_Csr,
1834+    MI_CH_Dbr = MI_CH_Csr,
1835+    MI_CH_Dr,
1836+    MI_CH_Dsr,
1837+    MI_CH_Ebr = MI_CH_Dsr,
1838+    MI_CH_Er,
1839+    MI_CH_Fr,
1840+    MI_CH_Fsr,
1841+    MI_CH_Gbr = MI_CH_Fsr,
1842+    MI_CH_Gr,
1843+    MI_CH_Gsr,
1844+    MI_CH_Abr = MI_CH_Gsr,
1845+    MI_CH_Ar,
1846+    MI_CH_Asr,
1847+    MI_CH_Bbr = MI_CH_Asr,
1848+    MI_CH_Br,
1849+
1850+    // MIDI Chord Keycodes - Major
1851+
1852+    MI_CH_C,
1853+    MI_CH_Cs,
1854+    MI_CH_Db = MI_CH_Cs,
1855+    MI_CH_D,
1856+    MI_CH_Ds,
1857+    MI_CH_Eb = MI_CH_Ds,
1858+    MI_CH_E,
1859+    MI_CH_F,
1860+    MI_CH_Fs,
1861+    MI_CH_Gb = MI_CH_Fs,
1862+    MI_CH_G,
1863+    MI_CH_Gs,
1864+    MI_CH_Ab = MI_CH_Gs,
1865+    MI_CH_A,
1866+    MI_CH_As,
1867+    MI_CH_Bb = MI_CH_As,
1868+    MI_CH_B,
1869+
1870+    // MIDI Chord Keycodes Minor
1871+
1872+    MI_CH_Cm,
1873+    MI_CH_Csm,
1874+    MI_CH_Dbm = MI_CH_Csm,
1875+    MI_CH_Dm,
1876+    MI_CH_Dsm,
1877+    MI_CH_Ebm = MI_CH_Dsm,
1878+    MI_CH_Em,
1879+    MI_CH_Fm,
1880+    MI_CH_Fsm,
1881+    MI_CH_Gbm = MI_CH_Fsm,
1882+    MI_CH_Gm,
1883+    MI_CH_Gsm,
1884+    MI_CH_Abm = MI_CH_Gsm,
1885+    MI_CH_Am,
1886+    MI_CH_Asm,
1887+    MI_CH_Bbm = MI_CH_Asm,
1888diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md b/keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md
1889new file mode 100644
1890index 0000000000000000000000000000000000000000..04c1613d530aa3cdff9372fb41de9c86dd49a8a6
1891--- /dev/null
1892+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md
1893@@ -0,0 +1 @@
1894+# The default keymap for giabarinaix2, VIA version.
1895diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk b/keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk
1896new file mode 100644
1897index 0000000000000000000000000000000000000000..f4836fd4f203fb8aa2ab2fddb507a3803c79bd4b
1898--- /dev/null
1899+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk
1900@@ -0,0 +1,4 @@
1901+VIA_ENABLE = yes
1902+ENCODER_ENABLE = no        # encoder on mute button
1903+
1904+ENCODER_MAP_ENABLE = yes    # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
1905diff --git a/keyboards/giabalanai/readme.md b/keyboards/giabalanai/readme.md
1906new file mode 100644
1907index 0000000000000000000000000000000000000000..30b1b60cd1b03ebfb04f0c8616ce825b62065760
1908--- /dev/null
1909+++ b/keyboards/giabalanai/readme.md
1910@@ -0,0 +1,24 @@
1911+# giabalanai
1912+
1913+<p align=center>
1914+<img width="700" alt="giabalanai_logo" src="https://github.com/3araht/giabalanai/blob/main/pictures/giabalanai_logo.png">
1915+</p>
1916+
1917+![giabalanai overview](https://github.com/3araht/giabalanai/blob/main/pictures/giabalanai_overview.jpg)
1918+
1919+giabalanai keyboard is a simple-design Chromatic Button Accordion-ish MIDI keyboard (60 bass + C-system 62 keys = 38 notes) that doesn't have bellows nor register switches.  
1920+
1921+* Keyboard Maintainer: [3araht](https://github.com/3araht)
1922+* Hardware Supported: giabalanai keyboard, a split keyboard mainly work as MIDI keyboard.
1923+* Hardware Availability: [Yushakobo](https://yushakobo.jp/shop/consign_giabalanai/) or [BOOTH](https://3araht.booth.pm/). Click [here](https://www.tenso.com/en/static/lp_shop_booth) for BOOTH overseas shipping!
1924+
1925+
1926+Make example for this keyboard (after setting up your build environment):
1927+
1928+    make giabalanai:default
1929+
1930+Flashing example for this keyboard:
1931+
1932+    make giabalanai:default:flash
1933+
1934diff --git a/keyboards/giabalanai/rules.mk b/keyboards/giabalanai/rules.mk
1935new file mode 100644
1936index 0000000000000000000000000000000000000000..b642aa9aa3a4a77c161468b71bd69f2838d9f8ec
1937--- /dev/null
1938+++ b/keyboards/giabalanai/rules.mk
1939@@ -0,0 +1,26 @@
1940+# MCU name
1941+MCU = atmega32u4
1942+
1943+# Bootloader selection
1944+BOOTLOADER = caterina
1945+
1946+# Build Options
1947+#   change yes to no to disable
1948+#
1949+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
1950+MOUSEKEY_ENABLE = no        # Mouse keys
1951+EXTRAKEY_ENABLE = yes       # Audio control and System control
1952+CONSOLE_ENABLE = no         # Console for debug
1953+COMMAND_ENABLE = no         # Commands for debug and configuration
1954+NKRO_ENABLE = no            # Enable N-Key Rollover
1955+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
1956+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
1957+AUDIO_ENABLE = no           # Audio output
1958+MIDI_ENABLE = yes           # MIDI support
1959+ENCODER_ENABLE = yes        # encoder on mute button
1960+SPLIT_KEYBOARD = yes        # Enables split keyboard support
1961+# RGB_MATRIX_ENABLE is not suitable for giabalanai keyboard on the right side (there are dulpicate keys).
1962+RGB_MATRIX_ENABLE = no      # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
1963+RGB_MATRIX_DRIVER = WS2812  # 2021/01/23 added.
1964+
1965+LTO_ENABLE = yes