[Keymap] 40percent/gherkin Midi Layout (#6130)
* Add midi layout for 40percent/gherkin * Add readme for 40percent/gherkin:midi
This commit is contained in:
parent
6bdcbfb25a
commit
7f65844f75
4 changed files with 161 additions and 0 deletions
24
keyboards/40percentclub/gherkin/keymaps/midi/config.h
Normal file
24
keyboards/40percentclub/gherkin/keymaps/midi/config.h
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#undef TAPPING_TERM
|
||||||
|
#define TAPPING_TERM 190
|
||||||
|
|
||||||
|
#define MUSIC_MASK (keycode != KC_NO)
|
||||||
|
#define MIDI_ADVANCED
|
115
keyboards/40percentclub/gherkin/keymaps/midi/keymap.c
Normal file
115
keyboards/40percentclub/gherkin/keymaps/midi/keymap.c
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_number {
|
||||||
|
_IONIAN = 0,
|
||||||
|
_DORIAN,
|
||||||
|
_PHRYGIAN,
|
||||||
|
_LYDIAN,
|
||||||
|
_MIXOLYDIAN,
|
||||||
|
_AEOLIAN,
|
||||||
|
_LOCRIAN,
|
||||||
|
_MENU
|
||||||
|
};
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
IONIAN = SAFE_RANGE,
|
||||||
|
DORIAN,
|
||||||
|
PHRYGIAN,
|
||||||
|
LYDIAN,
|
||||||
|
MIXOLYDIAN,
|
||||||
|
AEOLIAN,
|
||||||
|
LOCRIAN,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MENU MO(_MENU)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_IONIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_F_1, MI_B_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, MI_OCTD, MI_OCTU,
|
||||||
|
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_B_2, MI_E_3, MI_A_3, MI_D_4, MI_TRNSD, MI_TRNSU,
|
||||||
|
MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_B_3, MI_E_4, MI_SUS, MENU
|
||||||
|
),
|
||||||
|
|
||||||
|
[_DORIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
|
||||||
|
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_A_3, MI_D_4, _______, _______,
|
||||||
|
MI_Ds_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_PHRYGIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_Cs_3, MI_G_3, MI_C_4, _______, _______,
|
||||||
|
MI_Cs_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_Cs_4, _______, _______,
|
||||||
|
MI_Ds_1, MI_Gs_1, MI_Cs_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LYDIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_Fs_1, MI_B_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
|
||||||
|
MI_D_1, MI_G_1, MI_C_2, MI_Fs_2, MI_B_2, MI_E_3, MI_A_3, MI_D_4, _______, _______,
|
||||||
|
MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_Fs_3, MI_B_3, MI_E_4, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_MIXOLYDIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_F_1, MI_As_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
|
||||||
|
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_E_3, MI_A_3, MI_D_4, _______, _______,
|
||||||
|
MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_E_4, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_AEOLIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
|
||||||
|
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_D_4, _______, _______,
|
||||||
|
MI_Ds_1, MI_Gs_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOCRIAN] = LAYOUT_ortho_3x10(
|
||||||
|
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_Cs_3, MI_Fs_3, MI_C_4, _______, _______,
|
||||||
|
MI_Cs_1, MI_Fs_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_Cs_4, _______, _______,
|
||||||
|
MI_Ds_1, MI_Gs_1, MI_Cs_2, MI_Fs_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[_MENU] = LAYOUT_ortho_3x10(
|
||||||
|
IONIAN, LYDIAN, LOCRIAN, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
DORIAN, MIXOLYDIAN, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
PHRYGIAN, AEOLIAN, _______, _______, _______, _______, _______, _______, RESET, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case IONIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_IONIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DORIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_DORIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PHRYGIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_PHRYGIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LYDIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_LYDIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MIXOLYDIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_MIXOLYDIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case AEOLIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_AEOLIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LOCRIAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_LOCRIAN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
14
keyboards/40percentclub/gherkin/keymaps/midi/readme.md
Normal file
14
keyboards/40percentclub/gherkin/keymaps/midi/readme.md
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
### Gherkin Midi
|
||||||
|
A gherkin midi layout that should cover most midi note playing needs.
|
||||||
|
|
||||||
|
A 3x8 grid of notes written bottom left to right upwards as notes for the selected mode, with octave and transpose note controls at the top. Menu accesses other mode layouts, persisted to keyboard settings, and a reset for firmware programming.
|
||||||
|
|
||||||
|
Modes are set by pressing Menu and their corresponding note from the C Ionian layout. That is, for Aeolian, press Menu and A 1. For Phrygian, press Menu and E 1.
|
||||||
|
|
||||||
|
#### Keyboard Default Layout
|
||||||
|
![](https://i.imgur.com/VNc0GsI.jpg)
|
||||||
|
|
||||||
|
Keyboard Editor Gist [link](https://gist.github.com/scottsheffield/c57859fe1a85d703f5387bf8ce41028c)
|
||||||
|
|
||||||
|
#### Glamour Shot
|
||||||
|
![](https://i.imgur.com/B3Q4JoU.jpg)
|
8
keyboards/40percentclub/gherkin/keymaps/midi/rules.mk
Normal file
8
keyboards/40percentclub/gherkin/keymaps/midi/rules.mk
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no
|
||||||
|
MIDI_ENABLE = yes
|
Loading…
Reference in a new issue