|
|
@@ -13,14 +13,14 @@ enum keyboard_layers {
|
|
|
|
|
|
// Midi Chords
|
|
|
|
|
|
-enum midi_chord_modes { //ACTION_FUNCTION id
|
|
|
+enum midi_chord_modes { //ACTION_FUNCTION opt
|
|
|
major,
|
|
|
minor,
|
|
|
dom_seventh,
|
|
|
dim_seventh,
|
|
|
};
|
|
|
|
|
|
-enum midi_chord_root { //ACTION_FUNCTION opt
|
|
|
+enum midi_chord_root { //ACTION_FUNCTION id
|
|
|
C,
|
|
|
Cs,
|
|
|
Db = Cs,
|
|
|
@@ -301,8 +301,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TO(3), TO(5), \
|
|
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_NO, KC_NO, KC_NO, KC_INS, KC_DEL, \
|
|
|
KC_CAPS, KC_HOME, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, KC_NO, KC_TRNS, \
|
|
|
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPACE, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, \
|
|
|
- KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS
|
|
|
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPACE, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_TRNS, KC_NO, \
|
|
|
+ KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
|
),
|
|
|
|
|
|
/* 2: Mouse Keys Layer
|
|
|
@@ -324,9 +324,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
|
|
|
RESET, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, \
|
|
|
DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_UP, KC_BTN2, KC_WH_U, KC_NO, KC_NO, KC_NO, \
|
|
|
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_WH_D, KC_BTN3, KC_NO, KC_NO, \
|
|
|
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
|
|
|
- KC_TRNS, KC_NO, KC_NO, KC_POWER, KC_NO, KC_NO, KC_NO, KC_NO
|
|
|
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_WH_D, KC_BTN3, KC_NO, KC_TRNS, \
|
|
|
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, \
|
|
|
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_POWER, KC_TRNS, KC_TRNS, KC_NO, KC_NO
|
|
|
),
|
|
|
|
|
|
/* 3: Midi Base Layer
|
|
|
@@ -799,68 +799,68 @@ const uint16_t PROGMEM fn_actions[] = {
|
|
|
|
|
|
//Major Chords
|
|
|
|
|
|
- [CMajor] = ACTION_FUNCTION_OPT(major, C),
|
|
|
- [CsMajor] = ACTION_FUNCTION_OPT(major, Cs),
|
|
|
- [DMajor] = ACTION_FUNCTION_OPT(major, D),
|
|
|
- [DsMajor] = ACTION_FUNCTION_OPT(major, Ds),
|
|
|
- [EMajor] = ACTION_FUNCTION_OPT(major, E),
|
|
|
- [FMajor] = ACTION_FUNCTION_OPT(major, F),
|
|
|
- [FsMajor] = ACTION_FUNCTION_OPT(major, Fs),
|
|
|
- [GMajor] = ACTION_FUNCTION_OPT(major, G),
|
|
|
- [GsMajor] = ACTION_FUNCTION_OPT(major, Gs),
|
|
|
- [AMajor] = ACTION_FUNCTION_OPT(major, A),
|
|
|
- [AsMajor] = ACTION_FUNCTION_OPT(major, As),
|
|
|
- [BMajor] = ACTION_FUNCTION_OPT(major, B),
|
|
|
+ [CMajor] = ACTION_FUNCTION_OPT(C, major),
|
|
|
+ [CsMajor] = ACTION_FUNCTION_OPT(Cs, major),
|
|
|
+ [DMajor] = ACTION_FUNCTION_OPT(D, major),
|
|
|
+ [DsMajor] = ACTION_FUNCTION_OPT(Ds, major),
|
|
|
+ [EMajor] = ACTION_FUNCTION_OPT(E, major),
|
|
|
+ [FMajor] = ACTION_FUNCTION_OPT(F, major),
|
|
|
+ [FsMajor] = ACTION_FUNCTION_OPT(Fs, major),
|
|
|
+ [GMajor] = ACTION_FUNCTION_OPT(G, major),
|
|
|
+ [GsMajor] = ACTION_FUNCTION_OPT(Gs, major),
|
|
|
+ [AMajor] = ACTION_FUNCTION_OPT(A, major),
|
|
|
+ [AsMajor] = ACTION_FUNCTION_OPT(As, major),
|
|
|
+ [BMajor] = ACTION_FUNCTION_OPT(B, major),
|
|
|
|
|
|
//Minor Chords
|
|
|
|
|
|
- [CMinor] = ACTION_FUNCTION_OPT(minor, C),
|
|
|
- [CsMinor] = ACTION_FUNCTION_OPT(minor, Cs),
|
|
|
- [DMinor] = ACTION_FUNCTION_OPT(minor, D),
|
|
|
- [DsMinor] = ACTION_FUNCTION_OPT(minor, Ds),
|
|
|
- [EMinor] = ACTION_FUNCTION_OPT(minor, E),
|
|
|
- [FMinor] = ACTION_FUNCTION_OPT(minor, F),
|
|
|
- [FsMinor] = ACTION_FUNCTION_OPT(minor, Fs),
|
|
|
- [GMinor] = ACTION_FUNCTION_OPT(minor, G),
|
|
|
- [GsMinor] = ACTION_FUNCTION_OPT(minor, Gs),
|
|
|
- [AMinor] = ACTION_FUNCTION_OPT(minor, A),
|
|
|
- [AsMinor] = ACTION_FUNCTION_OPT(minor, As),
|
|
|
- [BMinor] = ACTION_FUNCTION_OPT(minor, B),
|
|
|
+ [CMinor] = ACTION_FUNCTION_OPT(C, minor),
|
|
|
+ [CsMinor] = ACTION_FUNCTION_OPT(Cs, minor),
|
|
|
+ [DMinor] = ACTION_FUNCTION_OPT(D, minor),
|
|
|
+ [DsMinor] = ACTION_FUNCTION_OPT(Ds, minor),
|
|
|
+ [EMinor] = ACTION_FUNCTION_OPT(E, minor),
|
|
|
+ [FMinor] = ACTION_FUNCTION_OPT(F, minor),
|
|
|
+ [FsMinor] = ACTION_FUNCTION_OPT(Fs, minor),
|
|
|
+ [GMinor] = ACTION_FUNCTION_OPT(G, minor),
|
|
|
+ [GsMinor] = ACTION_FUNCTION_OPT(Gs, minor),
|
|
|
+ [AMinor] = ACTION_FUNCTION_OPT(A, minor),
|
|
|
+ [AsMinor] = ACTION_FUNCTION_OPT(As, minor),
|
|
|
+ [BMinor] = ACTION_FUNCTION_OPT(B, minor),
|
|
|
|
|
|
//Dominant 7th
|
|
|
|
|
|
- [CDom7] = ACTION_FUNCTION_OPT(dom_seventh, C),
|
|
|
- [CsDom7] = ACTION_FUNCTION_OPT(dom_seventh, Cs),
|
|
|
- [DDom7] = ACTION_FUNCTION_OPT(dom_seventh, D),
|
|
|
- [DsDom7] = ACTION_FUNCTION_OPT(dom_seventh, Ds),
|
|
|
- [EDom7] = ACTION_FUNCTION_OPT(dom_seventh, E),
|
|
|
- [FDom7] = ACTION_FUNCTION_OPT(dom_seventh, F),
|
|
|
- [FsDom7] = ACTION_FUNCTION_OPT(dom_seventh, Fs),
|
|
|
- [GDom7] = ACTION_FUNCTION_OPT(dom_seventh, G),
|
|
|
- [GsDom7] = ACTION_FUNCTION_OPT(dom_seventh, Gs),
|
|
|
- [ADom7] = ACTION_FUNCTION_OPT(dom_seventh, A),
|
|
|
- [AsDom7] = ACTION_FUNCTION_OPT(dom_seventh, As),
|
|
|
- [BDom7] = ACTION_FUNCTION_OPT(dom_seventh, B),
|
|
|
+ [CDom7] = ACTION_FUNCTION_OPT(C, dom_seventh),
|
|
|
+ [CsDom7] = ACTION_FUNCTION_OPT(Cs, dom_seventh),
|
|
|
+ [DDom7] = ACTION_FUNCTION_OPT(D, dom_seventh),
|
|
|
+ [DsDom7] = ACTION_FUNCTION_OPT(Ds, dom_seventh),
|
|
|
+ [EDom7] = ACTION_FUNCTION_OPT(E, dom_seventh),
|
|
|
+ [FDom7] = ACTION_FUNCTION_OPT(F, dom_seventh),
|
|
|
+ [FsDom7] = ACTION_FUNCTION_OPT(Fs, dom_seventh),
|
|
|
+ [GDom7] = ACTION_FUNCTION_OPT(G, dom_seventh),
|
|
|
+ [GsDom7] = ACTION_FUNCTION_OPT(Gs, dom_seventh),
|
|
|
+ [ADom7] = ACTION_FUNCTION_OPT(A, dom_seventh),
|
|
|
+ [AsDom7] = ACTION_FUNCTION_OPT(As, dom_seventh),
|
|
|
+ [BDom7] = ACTION_FUNCTION_OPT(B, dom_seventh),
|
|
|
|
|
|
//Diminished 7th
|
|
|
|
|
|
- [CDim7] = ACTION_FUNCTION_OPT(dim_seventh, C),
|
|
|
- [CsDim7] = ACTION_FUNCTION_OPT(dim_seventh, Cs),
|
|
|
- [DDim7] = ACTION_FUNCTION_OPT(dim_seventh, D),
|
|
|
- [DsDim7] = ACTION_FUNCTION_OPT(dim_seventh, Ds),
|
|
|
- [EDim7] = ACTION_FUNCTION_OPT(dim_seventh, E),
|
|
|
- [FDim7] = ACTION_FUNCTION_OPT(dim_seventh, F),
|
|
|
- [FsDim7] = ACTION_FUNCTION_OPT(dim_seventh, Fs),
|
|
|
- [GDim7] = ACTION_FUNCTION_OPT(dim_seventh, G),
|
|
|
- [GsDim7] = ACTION_FUNCTION_OPT(dim_seventh, Gs),
|
|
|
- [ADim7] = ACTION_FUNCTION_OPT(dim_seventh, A),
|
|
|
- [AsDim7] = ACTION_FUNCTION_OPT(dim_seventh, As),
|
|
|
- [BDim7] = ACTION_FUNCTION_OPT(dim_seventh, B),
|
|
|
+ [CDim7] = ACTION_FUNCTION_OPT(C, dim_seventh),
|
|
|
+ [CsDim7] = ACTION_FUNCTION_OPT(Cs, dim_seventh),
|
|
|
+ [DDim7] = ACTION_FUNCTION_OPT(D, dim_seventh),
|
|
|
+ [DsDim7] = ACTION_FUNCTION_OPT(Ds, dim_seventh),
|
|
|
+ [EDim7] = ACTION_FUNCTION_OPT(E, dim_seventh),
|
|
|
+ [FDim7] = ACTION_FUNCTION_OPT(F, dim_seventh),
|
|
|
+ [FsDim7] = ACTION_FUNCTION_OPT(Fs, dim_seventh),
|
|
|
+ [GDim7] = ACTION_FUNCTION_OPT(G, dim_seventh),
|
|
|
+ [GsDim7] = ACTION_FUNCTION_OPT(Gs, dim_seventh),
|
|
|
+ [ADim7] = ACTION_FUNCTION_OPT(A, dim_seventh),
|
|
|
+ [AsDim7] = ACTION_FUNCTION_OPT(As, dim_seventh),
|
|
|
+ [BDim7] = ACTION_FUNCTION_OPT(B, dim_seventh),
|
|
|
};
|
|
|
|
|
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
|
uint16_t root_note = MIDI_INVALID_NOTE;
|
|
|
- switch (opt) {
|
|
|
+ switch (id) {
|
|
|
case C: //Root note C
|
|
|
root_note = MI_C;
|
|
|
break;
|
|
|
@@ -904,7 +904,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
|
|
uint16_t fifth = root_note + 7;
|
|
|
uint16_t minor_seventh = root_note + 10;
|
|
|
uint16_t diminished_seventh = root_note -3;
|
|
|
- switch (id) {
|
|
|
+ switch (opt) {
|
|
|
case major: //Major chord
|
|
|
process_midi(root_note, record);
|
|
|
process_midi(major_third, record);
|