forked from mirrors/qmk_userspace
		
	[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
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
Keyboard Editor Gist [link](https://gist.github.com/scottsheffield/c57859fe1a85d703f5387bf8ce41028c)
 | 
			
		||||
 | 
			
		||||
#### Glamour Shot
 | 
			
		||||

 | 
			
		||||
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue