]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
[Keymap] 40percent/gherkin Midi Layout (#6130)
authorScott Sheffield <scottux@gmail.com>
Tue, 18 Jun 2019 02:40:38 +0000 (22:40 -0400)
committerDrashna Jaelre <drashna@live.com>
Tue, 18 Jun 2019 02:40:38 +0000 (19:40 -0700)
* Add midi layout for 40percent/gherkin

* Add readme for 40percent/gherkin:midi

keyboards/40percentclub/gherkin/keymaps/midi/config.h [new file with mode: 0644]
keyboards/40percentclub/gherkin/keymaps/midi/keymap.c [new file with mode: 0644]
keyboards/40percentclub/gherkin/keymaps/midi/readme.md [new file with mode: 0644]
keyboards/40percentclub/gherkin/keymaps/midi/rules.mk [new file with mode: 0644]

diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/config.h b/keyboards/40percentclub/gherkin/keymaps/midi/config.h
new file mode 100644 (file)
index 0000000..4a9607e
--- /dev/null
@@ -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
new file mode 100644 (file)
index 0000000..9656524
--- /dev/null
@@ -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
new file mode 100644 (file)
index 0000000..f8fad08
--- /dev/null
@@ -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
new file mode 100644 (file)
index 0000000..bfc6dbb
--- /dev/null
@@ -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