qmk

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.z3bra.org/qmk.git
Log | Files | Refs | Submodules | LICENSE

commit 7f65844f75c30f17804d57d34c0f0ce971226b59
parent 6bdcbfb25ae068d9f5351af0f7c6a03385020661
Author: Scott Sheffield <scottux@gmail.com>
Date:   Mon, 17 Jun 2019 22:40:38 -0400

[Keymap] 40percent/gherkin Midi Layout (#6130)

* Add midi layout for 40percent/gherkin

* Add readme for 40percent/gherkin:midi

Diffstat:
keyboards/40percentclub/gherkin/keymaps/midi/config.h | 24++++++++++++++++++++++++
keyboards/40percentclub/gherkin/keymaps/midi/keymap.c | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
keyboards/40percentclub/gherkin/keymaps/midi/readme.md | 15+++++++++++++++
keyboards/40percentclub/gherkin/keymaps/midi/rules.mk | 8++++++++
4 files changed, 162 insertions(+), 0 deletions(-)

diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/config.h b/keyboards/40percentclub/gherkin/keymaps/midi/config.h @@ -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 diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/keymap.c b/keyboards/40percentclub/gherkin/keymaps/midi/keymap.c @@ -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; +} diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/readme.md b/keyboards/40percentclub/gherkin/keymaps/midi/readme.md @@ -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)+ \ No newline at end of file diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/rules.mk b/keyboards/40percentclub/gherkin/keymaps/midi/rules.mk @@ -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