forked from mirrors/qmk_userspace
		
	Normalise MIDI keycodes (#18972)
* `MI_ON`, `MI_OFF`, `MI_TOG` -> `MI_TOGG` * `MI_CH*`, `MI_CHU` -> `MI_CHNU`, `MI_CHD` -> `MI_CHND` * `MI_VEL_*` -> `MI_VL*`, `MI_VELU`, `MI_VELD` * `MI_TRNS_*` -> `MI_TR*`, `MI_TRNSU` -> `MI_TRSU`, `MI_TRNSD` -> `MI_TRSD` * `MI_OCT_*` -> `MI_OC*`, `MI_OCTU`, `MI_OCTD` * Misc controls * Note keycodes * Add legacy keycodes * Regenerate keycodes * Typo
This commit is contained in:
		
					parent
					
						
							
								442e7653cc
							
						
					
				
			
			
				commit
				
					
						8b658dcc9a
					
				
			
		
					 39 changed files with 1799 additions and 1154 deletions
				
			
		
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -80,164 +80,164 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 | 
			
		||||
### Keycodes
 | 
			
		||||
 | 
			
		||||
|Keycode     |Aliases  |Description                      |
 | 
			
		||||
|------------|---------|---------------------------------|
 | 
			
		||||
|`MI_ON`     |         |Turn MIDI on                     |
 | 
			
		||||
|`MI_OFF`    |         |Turn MIDI off                    |
 | 
			
		||||
|`MI_TOG`    |         |Toggle MIDI enabled              |
 | 
			
		||||
|`MI_C`      |         |C octave 0                       |
 | 
			
		||||
|`MI_Cs`     |`MI_Db`  |C♯/D♭ octave 0                   |
 | 
			
		||||
|`MI_D`      |         |D octave 0                       |
 | 
			
		||||
|`MI_Ds`     |`MI_Eb`  |D♯/E♭ octave 0                   |
 | 
			
		||||
|`MI_E`      |         |E octave 0                       |
 | 
			
		||||
|`MI_F`      |         |F octave 0                       |
 | 
			
		||||
|`MI_Fs`     |`MI_Gb`  |F♯/G♭ octave 0                   |
 | 
			
		||||
|`MI_G`      |         |G octave 0                       |
 | 
			
		||||
|`MI_Gs`     |`MI_Gs`  |G♯/A♭ octave 0                   |
 | 
			
		||||
|`MI_A`      |         |A octave 0                       |
 | 
			
		||||
|`MI_As`     |`MI_Bb`  |A♯/B♭ octave 0                   |
 | 
			
		||||
|`MI_B`      |         |B octave 0                       |
 | 
			
		||||
|`MI_C_1`    |         |C octave 1                       |
 | 
			
		||||
|`MI_Cs_1`   |`MI_Db_1`|C♯/D♭ octave 1                   |
 | 
			
		||||
|`MI_D_1`    |         |D octave 1                       |
 | 
			
		||||
|`MI_Ds_1`   |`MI_Eb_1`|D♯/E♭ octave 1                   |
 | 
			
		||||
|`MI_E_1`    |         |E octave 1                       |
 | 
			
		||||
|`MI_F_1`    |         |F octave 1                       |
 | 
			
		||||
|`MI_Fs_1`   |`MI_Gb_1`|F♯/G♭ octave 1                   |
 | 
			
		||||
|`MI_G_1`    |         |G octave 1                       |
 | 
			
		||||
|`MI_Gs_1`   |`MI_Ab_1`|G♯/A♭ octave 1                   |
 | 
			
		||||
|`MI_A_1`    |         |A octave 1                       |
 | 
			
		||||
|`MI_As_1`   |`MI_Bb_1`|A♯/B♭ octave 1                   |
 | 
			
		||||
|`MI_B_1`    |         |B octave 1                       |
 | 
			
		||||
|`MI_C_2`    |         |C octave 2                       |
 | 
			
		||||
|`MI_Cs_2`   |`MI_Db_2`|C♯/D♭ octave 2                   |
 | 
			
		||||
|`MI_D_2`    |         |D octave 2                       |
 | 
			
		||||
|`MI_Ds_2`   |`MI_Eb_2`|D♯/E♭ octave 2                   |
 | 
			
		||||
|`MI_E_2`    |         |E octave 2                       |
 | 
			
		||||
|`MI_F_2`    |         |F octave 2                       |
 | 
			
		||||
|`MI_Fs_2`   |`MI_Gb_2`|F♯/G♭ octave 2                   |
 | 
			
		||||
|`MI_G_2`    |         |G octave 2                       |
 | 
			
		||||
|`MI_Gs_2`   |`MI_Ab_2`|G♯/A♭ octave 2                   |
 | 
			
		||||
|`MI_A_2`    |         |A octave 2                       |
 | 
			
		||||
|`MI_As_2`   |`MI_Bb_2`|A♯/B♭ octave 2                   |
 | 
			
		||||
|`MI_B_2`    |         |B octave 2                       |
 | 
			
		||||
|`MI_C_3`    |         |C octave 3                       |
 | 
			
		||||
|`MI_Cs_3`   |`MI_Db_3`|C♯/D♭ octave 3                   |
 | 
			
		||||
|`MI_D_3`    |         |D octave 3                       |
 | 
			
		||||
|`MI_Ds_3`   |`MI_Eb_3`|D♯/E♭ octave 3                   |
 | 
			
		||||
|`MI_E_3`    |         |E octave 3                       |
 | 
			
		||||
|`MI_F_3`    |         |F octave 3                       |
 | 
			
		||||
|`MI_Fs_3`   |`MI_Gb_3`|F♯/G♭ octave 3                   |
 | 
			
		||||
|`MI_G_3`    |         |G octave 3                       |
 | 
			
		||||
|`MI_Gs_3`   |`MI_Ab_3`|G♯/A♭ octave 3                   |
 | 
			
		||||
|`MI_A_3`    |         |A octave 3                       |
 | 
			
		||||
|`MI_As_3`   |`MI_Bb_3`|A♯/B♭ octave 3                   |
 | 
			
		||||
|`MI_B_3`    |         |B octave 3                       |
 | 
			
		||||
|`MI_C_4`    |         |C octave 4                       |
 | 
			
		||||
|`MI_Cs_4`   |`MI_Db_4`|C♯/D♭ octave 4                   |
 | 
			
		||||
|`MI_D_4`    |         |D octave 4                       |
 | 
			
		||||
|`MI_Ds_4`   |`MI_Eb_4`|D♯/E♭ octave 4                   |
 | 
			
		||||
|`MI_E_4`    |         |E octave 4                       |
 | 
			
		||||
|`MI_F_4`    |         |F octave 4                       |
 | 
			
		||||
|`MI_Fs_4`   |`MI_Gb_4`|F♯/G♭ octave 4                   |
 | 
			
		||||
|`MI_G_4`    |         |G octave 4                       |
 | 
			
		||||
|`MI_Gs_4`   |`MI_Ab_4`|G♯/A♭ octave 4                   |
 | 
			
		||||
|`MI_A_4`    |         |A octave 4                       |
 | 
			
		||||
|`MI_As_4`   |`MI_Bb_4`|A♯/B♭ octave 4                   |
 | 
			
		||||
|`MI_B_4`    |         |B octave 4                       |
 | 
			
		||||
|`MI_C_5`    |         |C octave 5                       |
 | 
			
		||||
|`MI_Cs_5`   |`MI_Db_5`|C♯/D♭ octave 5                   |
 | 
			
		||||
|`MI_D_5`    |         |D octave 5                       |
 | 
			
		||||
|`MI_Ds_5`   |`MI_Eb_5`|D♯/E♭ octave 5                   |
 | 
			
		||||
|`MI_E_5`    |         |E octave 5                       |
 | 
			
		||||
|`MI_F_5`    |         |F octave 5                       |
 | 
			
		||||
|`MI_Fs_5`   |`MI_Gb_5`|F♯/G♭ octave 5                   |
 | 
			
		||||
|`MI_G_5`    |         |G octave 5                       |
 | 
			
		||||
|`MI_Gs_5`   |`MI_Ab_5`|G♯/A♭ octave 5                   |
 | 
			
		||||
|`MI_A_5`    |         |A octave 5                       |
 | 
			
		||||
|`MI_As_5`   |`MI_Bb_5`|A♯/B♭ octave 5                   |
 | 
			
		||||
|`MI_B_5`    |         |B octave 5                       |
 | 
			
		||||
|`MI_OCT_N2` |         |Set octave to -2                 |
 | 
			
		||||
|`MI_OCT_N1` |         |Set octave to -1                 |
 | 
			
		||||
|`MI_OCT_0`  |         |Set octave to 0                  |
 | 
			
		||||
|`MI_OCT_1`  |         |Set octave to 1                  |
 | 
			
		||||
|`MI_OCT_2`  |         |Set octave to 2                  |
 | 
			
		||||
|`MI_OCT_3`  |         |Set octave to 3                  |
 | 
			
		||||
|`MI_OCT_4`  |         |Set octave to 4                  |
 | 
			
		||||
|`MI_OCT_5`  |         |Set octave to 5                  |
 | 
			
		||||
|`MI_OCT_6`  |         |Set octave to 6                  |
 | 
			
		||||
|`MI_OCT_7`  |         |Set octave to 7                  |
 | 
			
		||||
|`MI_OCTD`   |         |Move down an octave              |
 | 
			
		||||
|`MI_OCTU`   |         |Move up an octave                |
 | 
			
		||||
|`MI_TRNS_N6`|         |Set transposition to -6 semitones|
 | 
			
		||||
|`MI_TRNS_N5`|         |Set transposition to -5 semitones|
 | 
			
		||||
|`MI_TRNS_N4`|         |Set transposition to -4 semitones|
 | 
			
		||||
|`MI_TRNS_N3`|         |Set transposition to -3 semitones|
 | 
			
		||||
|`MI_TRNS_N2`|         |Set transposition to -2 semitones|
 | 
			
		||||
|`MI_TRNS_N1`|         |Set transposition to -1 semitone |
 | 
			
		||||
|`MI_TRNS_0` |         |No transposition                 |
 | 
			
		||||
|`MI_TRNS_1` |         |Set transposition to +1 semitone |
 | 
			
		||||
|`MI_TRNS_2` |         |Set transposition to +2 semitones|
 | 
			
		||||
|`MI_TRNS_3` |         |Set transposition to +3 semitones|
 | 
			
		||||
|`MI_TRNS_4` |         |Set transposition to +4 semitones|
 | 
			
		||||
|`MI_TRNS_5` |         |Set transposition to +5 semitones|
 | 
			
		||||
|`MI_TRNS_6` |         |Set transposition to +6 semitones|
 | 
			
		||||
|`MI_TRNSD`  |         |Decrease transposition           |
 | 
			
		||||
|`MI_TRNSU`  |         |Increase transposition           |
 | 
			
		||||
|`MI_VEL_0`  |         |Set velocity to 0                |
 | 
			
		||||
|`MI_VEL_1`  |         |Set velocity to 12               |
 | 
			
		||||
|`MI_VEL_2`  |         |Set velocity to 25               |
 | 
			
		||||
|`MI_VEL_3`  |         |Set velocity to 38               |
 | 
			
		||||
|`MI_VEL_4`  |         |Set velocity to 51               |
 | 
			
		||||
|`MI_VEL_5`  |         |Set velocity to 64               |
 | 
			
		||||
|`MI_VEL_6`  |         |Set velocity to 76               |
 | 
			
		||||
|`MI_VEL_7`  |         |Set velocity to 89               |
 | 
			
		||||
|`MI_VEL_8`  |         |Set velocity to 102              |
 | 
			
		||||
|`MI_VEL_9`  |         |Set velocity to 114              |
 | 
			
		||||
|`MI_VEL_10` |         |Set velocity to 127              |
 | 
			
		||||
|`MI_VELD`   |         |Decrease velocity                |
 | 
			
		||||
|`MI_VELU`   |         |Increase velocity                |
 | 
			
		||||
|`MI_CH1`    |         |Set channel to 1                 |
 | 
			
		||||
|`MI_CH2`    |         |Set channel to 2                 |
 | 
			
		||||
|`MI_CH3`    |         |Set channel to 3                 |
 | 
			
		||||
|`MI_CH4`    |         |Set channel to 4                 |
 | 
			
		||||
|`MI_CH5`    |         |Set channel to 5                 |
 | 
			
		||||
|`MI_CH6`    |         |Set channel to 6                 |
 | 
			
		||||
|`MI_CH7`    |         |Set channel to 7                 |
 | 
			
		||||
|`MI_CH8`    |         |Set channel to 8                 |
 | 
			
		||||
|`MI_CH9`    |         |Set channel to 9                 |
 | 
			
		||||
|`MI_CH10`   |         |Set channel to 10                |
 | 
			
		||||
|`MI_CH11`   |         |Set channel to 11                |
 | 
			
		||||
|`MI_CH12`   |         |Set channel to 12                |
 | 
			
		||||
|`MI_CH13`   |         |Set channel to 13                |
 | 
			
		||||
|`MI_CH14`   |         |Set channel to 14                |
 | 
			
		||||
|`MI_CH15`   |         |Set channel to 15                |
 | 
			
		||||
|`MI_CH16`   |         |Set channel to 16                |
 | 
			
		||||
|`MI_CHD`    |         |Decrease channel                 |
 | 
			
		||||
|`MI_CHU`    |         |Increase channel                 |
 | 
			
		||||
|`MI_ALLOFF` |         |Stop all notes                   |
 | 
			
		||||
|`MI_SUS`    |         |Sustain                          |
 | 
			
		||||
|`MI_PORT`   |         |Portmento                        |
 | 
			
		||||
|`MI_SOST`   |         |Sostenuto                        |
 | 
			
		||||
|`MI_SOFT`   |         |Soft Pedal                       |
 | 
			
		||||
|`MI_LEG`    |         |Legato                           |
 | 
			
		||||
|`MI_MOD`    |         |Modulation                       |
 | 
			
		||||
|`MI_MODSD`  |         |Decrease modulation speed        |
 | 
			
		||||
|`MI_MODSU`  |         |Increase modulation speed        |
 | 
			
		||||
|`MI_BENDD`  |         |Bend pitch down                  |
 | 
			
		||||
|`MI_BENDU`  |         |Bend pitch up                    |
 | 
			
		||||
|Keycode                        |Aliases           |Description                      |
 | 
			
		||||
|-------------------------------|------------------|---------------------------------|
 | 
			
		||||
|`QK_MIDI_ON`                   |`MI_ON`           |Turn MIDI on                     |
 | 
			
		||||
|`QK_MIDI_OFF`                  |`MI_OFF`          |Turn MIDI off                    |
 | 
			
		||||
|`QK_MIDI_TOGGLE`               |`MI_TOGG`         |Toggle MIDI enabled              |
 | 
			
		||||
|`QK_MIDI_NOTE_C_0`             |`MI_C`            |C octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_0`       |`MI_Cs`, `MI_Db`  |C♯/D♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_0`             |`MI_D`            |D octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_0`       |`MI_Ds`, `MI_Eb`  |D♯/E♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_0`             |`MI_E`            |E octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_0`             |`MI_F`            |F octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_0`       |`MI_Fs`, `MI_Gb`  |F♯/G♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_0`             |`MI_G`            |G octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_0`       |`MI_Gs`, `MI_Ab`  |G♯/A♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_0`             |`MI_A`            |A octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_0`       |`MI_As`, `MI_Bb`  |A♯/B♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_0`             |`MI_B`            |B octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_1`             |`MI_C1`           |C octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_1`       |`MI_Cs1`, `MI_Db1`|C♯/D♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_1`             |`MI_D1`           |D octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_1`       |`MI_Ds1`, `MI_Eb1`|D♯/E♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_1`             |`MI_E1`           |E octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_1`             |`MI_F1`           |F octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_1`       |`MI_Fs1`, `MI_Gb1`|F♯/G♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_1`             |`MI_G1`           |G octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_1`       |`MI_Gs1`, `MI_Ab1`|G♯/A♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_1`             |`MI_A1`           |A octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_1`       |`MI_As1`, `MI_Bb1`|A♯/B♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_1`             |`MI_B1`           |B octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_2`             |`MI_C2`           |C octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_2`       |`MI_Cs2`, `MI_Db2`|C♯/D♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_2`             |`MI_D2`           |D octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_2`       |`MI_Ds2`, `MI_Eb2`|D♯/E♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_2`             |`MI_E2`           |E octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_2`             |`MI_F2`           |F octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_2`       |`MI_Fs2`, `MI_Gb2`|F♯/G♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_2`             |`MI_G2`           |G octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_2`       |`MI_Gs2`, `MI_Ab2`|G♯/A♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_2`             |`MI_A2`           |A octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_2`       |`MI_As2`, `MI_Bb2`|A♯/B♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_2`             |`MI_B2`           |B octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_3`             |`MI_C3`           |C octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_3`       |`MI_Cs3`, `MI_Db3`|C♯/D♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_3`             |`MI_D3`           |D octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_3`       |`MI_Ds3`, `MI_Eb3`|D♯/E♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_3`             |`MI_E3`           |E octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_3`             |`MI_F3`           |F octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_3`       |`MI_Fs3`, `MI_Gb3`|F♯/G♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_3`             |`MI_G3`           |G octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_3`       |`MI_Gs3`, `MI_Ab3`|G♯/A♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_3`             |`MI_A3`           |A octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_3`       |`MI_As3`, `MI_Bb3`|A♯/B♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_3`             |`MI_B3`           |B octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_4`             |`MI_C4`           |C octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_4`       |`MI_Cs4`, `MI_Db4`|C♯/D♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_4`             |`MI_D4`           |D octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_4`       |`MI_Ds4`, `MI_Eb4`|D♯/E♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_4`             |`MI_E4`           |E octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_4`             |`MI_F4`           |F octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_4`       |`MI_Fs4`, `MI_Gb4`|F♯/G♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_4`             |`MI_G4`           |G octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_4`       |`MI_Gs4`, `MI_Ab4`|G♯/A♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_4`             |`MI_A4`           |A octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_4`       |`MI_As4`, `MI_Bb4`|A♯/B♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_4`             |`MI_B4`           |B octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_5`             |`MI_C5`           |C octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_5`       |`MI_Cs5`, `MI_Db5`|C♯/D♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_5`             |`MI_D5`           |D octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_5`       |`MI_Ds5`, `MI_Eb5`|D♯/E♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_5`             |`MI_E5`           |E octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_5`             |`MI_F5`           |F octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_5`       |`MI_Fs5`, `MI_Gb5`|F♯/G♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_5`             |`MI_G5`           |G octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_5`       |`MI_Gs5`, `MI_Ab5`|G♯/A♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_5`             |`MI_A5`           |A octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_5`       |`MI_As5`, `MI_Bb5`|A♯/B♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_5`             |`MI_B5`           |B octave 5                       |
 | 
			
		||||
|`QK_MIDI_OCTAVE_N2`            |`MI_OCN2`         |Set octave to -2                 |
 | 
			
		||||
|`QK_MIDI_OCTAVE_N1`            |`MI_OCN1`         |Set octave to -1                 |
 | 
			
		||||
|`QK_MIDI_OCTAVE_0`             |`MI_OC0`          |Set octave to 0                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_1`             |`MI_OC1`          |Set octave to 1                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_2`             |`MI_OC2`          |Set octave to 2                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_3`             |`MI_OC3`          |Set octave to 3                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_4`             |`MI_OC4`          |Set octave to 4                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_5`             |`MI_OC5`          |Set octave to 5                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_6`             |`MI_OC6`          |Set octave to 6                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_7`             |`MI_OC7`          |Set octave to 7                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_DOWN`          |`MI_OCTD`         |Move down an octave              |
 | 
			
		||||
|`QK_MIDI_OCTAVE_UP`            |`MI_OCTU`         |Move up an octave                |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N6`         |`MI_TRN6`         |Set transposition to -6 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N5`         |`MI_TRN5`         |Set transposition to -5 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N4`         |`MI_TRN4`         |Set transposition to -4 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N3`         |`MI_TRN3`         |Set transposition to -3 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N2`         |`MI_TRN2`         |Set transposition to -2 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N1`         |`MI_TRN1`         |Set transposition to -1 semitone |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_0`          |`MI_TR0`          |No transposition                 |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_1`          |`MI_TR1`          |Set transposition to +1 semitone |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_2`          |`MI_TR2`          |Set transposition to +2 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_3`          |`MI_TR3`          |Set transposition to +3 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_4`          |`MI_TR4`          |Set transposition to +4 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_5`          |`MI_TR5`          |Set transposition to +5 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_6`          |`MI_TR6`          |Set transposition to +6 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_DOWN`       |`MI_TRSD`         |Decrease transposition           |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_UP`         |`MI_TRSU`         |Increase transposition           |
 | 
			
		||||
|`QK_MIDI_VELOCITY_0`           |`MI_VL0`          |Set velocity to 0                |
 | 
			
		||||
|`QK_MIDI_VELOCITY_1`           |`MI_VL1`          |Set velocity to 12               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_2`           |`MI_VL2`          |Set velocity to 25               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_3`           |`MI_VL3`          |Set velocity to 38               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_4`           |`MI_VL4`          |Set velocity to 51               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_5`           |`MI_VL5`          |Set velocity to 64               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_6`           |`MI_VL6`          |Set velocity to 76               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_7`           |`MI_VL7`          |Set velocity to 89               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_8`           |`MI_VL8`          |Set velocity to 102              |
 | 
			
		||||
|`QK_MIDI_VELOCITY_9`           |`MI_VL9`          |Set velocity to 114              |
 | 
			
		||||
|`QK_MIDI_VELOCITY_10`          |`MI_VL10`         |Set velocity to 127              |
 | 
			
		||||
|`QK_MIDI_VELOCITY_DOWN`        |`MI_VELD`         |Decrease velocity                |
 | 
			
		||||
|`QK_MIDI_VELOCITY_UP`          |`MI_VELU`         |Increase velocity                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_1`            |`MI_CH1`          |Set channel to 1                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_2`            |`MI_CH2`          |Set channel to 2                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_3`            |`MI_CH3`          |Set channel to 3                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_4`            |`MI_CH4`          |Set channel to 4                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_5`            |`MI_CH5`          |Set channel to 5                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_6`            |`MI_CH6`          |Set channel to 6                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_7`            |`MI_CH7`          |Set channel to 7                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_8`            |`MI_CH8`          |Set channel to 8                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_9`            |`MI_CH9`          |Set channel to 9                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_10`           |`MI_CH10`         |Set channel to 10                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_11`           |`MI_CH11`         |Set channel to 11                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_12`           |`MI_CH12`         |Set channel to 12                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_13`           |`MI_CH13`         |Set channel to 13                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_14`           |`MI_CH14`         |Set channel to 14                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_15`           |`MI_CH15`         |Set channel to 15                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_16`           |`MI_CH16`         |Set channel to 16                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_DOWN`         |`MI_CHND`         |Decrease channel                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_UP`           |`MI_CHNU`         |Increase channel                 |
 | 
			
		||||
|`QK_MIDI_ALL_NOTES_OFF`        |`MI_AOFF`         |Stop all notes                   |
 | 
			
		||||
|`QK_MIDI_SUSTAIN`              |`MI_SUST`         |Sustain                          |
 | 
			
		||||
|`QK_MIDI_PORTAMENTO`           |`MI_PORT`         |Portmento                        |
 | 
			
		||||
|`QK_MIDI_SOSTENUTO`            |`MI_SOST`         |Sostenuto                        |
 | 
			
		||||
|`QK_MIDI_SOFT`                 |`MI_SOFT`         |Soft Pedal                       |
 | 
			
		||||
|`QK_MIDI_LEGATO`               |`MI_LEG`          |Legato                           |
 | 
			
		||||
|`QK_MIDI_MODULATION`           |`MI_MOD`          |Modulation                       |
 | 
			
		||||
|`QK_MIDI_MODULATION_SPEED_DOWN`|`MI_MODD`         |Decrease modulation speed        |
 | 
			
		||||
|`QK_MIDI_MODULATION_SPEED_UP`  |`MI_MODU`         |Increase modulation speed        |
 | 
			
		||||
|`QK_MIDI_PITCH_BEND_DOWN`      |`MI_BNDD`         |Bend pitch down                  |
 | 
			
		||||
|`QK_MIDI_PITCH_BEND_UP`        |`MI_BNDU`         |Bend pitch up                    |
 | 
			
		||||
 | 
			
		||||
### Configuration
 | 
			
		||||
 | 
			
		||||
Certain values are stored in the `midi_config` struct. This configuration is not persisted to EEPROM. By default, these values are:
 | 
			
		||||
 | 
			
		||||
|Configuration      |Value|Comments                 |
 | 
			
		||||
|-------------------|-----|-------------------------|
 | 
			
		||||
|Octave             |`4`  |Corresponds to `MI_OCT_2`|
 | 
			
		||||
|Transposition      |`0`  |                         |
 | 
			
		||||
|Velocity           |`127`|                         |
 | 
			
		||||
|Channel            |`0`  |                         |
 | 
			
		||||
|Modulation Interval|`8`  |                         |
 | 
			
		||||
|Configuration      |Value|Comments               |
 | 
			
		||||
|-------------------|-----|-----------------------|
 | 
			
		||||
|Octave             |`4`  |Corresponds to `MI_OC2`|
 | 
			
		||||
|Transposition      |`0`  |                       |
 | 
			
		||||
|Velocity           |`127`|                       |
 | 
			
		||||
|Channel            |`0`  |                       |
 | 
			
		||||
|Modulation Interval|`8`  |                       |
 | 
			
		||||
 | 
			
		||||
For the above, the `MI_C` keycode will produce a C3 (note number 48), and so on.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										292
									
								
								docs/keycodes.md
									
										
									
									
									
								
							
							
						
						
									
										292
									
								
								docs/keycodes.md
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -442,152 +442,152 @@ See also: [Magic Keycodes](keycodes_magic.md)
 | 
			
		|||
 | 
			
		||||
See also: [MIDI](feature_midi.md)
 | 
			
		||||
 | 
			
		||||
|Key         |Aliases  |Description                      |
 | 
			
		||||
|------------|---------|---------------------------------|
 | 
			
		||||
|`MI_ON`     |         |Turn MIDI on                     |
 | 
			
		||||
|`MI_OFF`    |         |Turn MIDI off                    |
 | 
			
		||||
|`MI_TOG`    |         |Toggle MIDI enabled              |
 | 
			
		||||
|`MI_C`      |         |C octave 0                       |
 | 
			
		||||
|`MI_Cs`     |`MI_Db`  |C♯/D♭ octave 0                   |
 | 
			
		||||
|`MI_D`      |         |D octave 0                       |
 | 
			
		||||
|`MI_Ds`     |`MI_Eb`  |D♯/E♭ octave 0                   |
 | 
			
		||||
|`MI_E`      |         |E octave 0                       |
 | 
			
		||||
|`MI_F`      |         |F octave 0                       |
 | 
			
		||||
|`MI_Fs`     |`MI_Gb`  |F♯/G♭ octave 0                   |
 | 
			
		||||
|`MI_G`      |         |G octave 0                       |
 | 
			
		||||
|`MI_Gs`     |`MI_Gs`  |G♯/A♭ octave 0                   |
 | 
			
		||||
|`MI_A`      |         |A octave 0                       |
 | 
			
		||||
|`MI_As`     |`MI_Bb`  |A♯/B♭ octave 0                   |
 | 
			
		||||
|`MI_B`      |         |B octave 0                       |
 | 
			
		||||
|`MI_C_1`    |         |C octave 1                       |
 | 
			
		||||
|`MI_Cs_1`   |`MI_Db_1`|C♯/D♭ octave 1                   |
 | 
			
		||||
|`MI_D_1`    |         |D octave 1                       |
 | 
			
		||||
|`MI_Ds_1`   |`MI_Eb_1`|D♯/E♭ octave 1                   |
 | 
			
		||||
|`MI_E_1`    |         |E octave 1                       |
 | 
			
		||||
|`MI_F_1`    |         |F octave 1                       |
 | 
			
		||||
|`MI_Fs_1`   |`MI_Gb_1`|F♯/G♭ octave 1                   |
 | 
			
		||||
|`MI_G_1`    |         |G octave 1                       |
 | 
			
		||||
|`MI_Gs_1`   |`MI_Ab_1`|G♯/A♭ octave 1                   |
 | 
			
		||||
|`MI_A_1`    |         |A octave 1                       |
 | 
			
		||||
|`MI_As_1`   |`MI_Bb_1`|A♯/B♭ octave 1                   |
 | 
			
		||||
|`MI_B_1`    |         |B octave 1                       |
 | 
			
		||||
|`MI_C_2`    |         |C octave 2                       |
 | 
			
		||||
|`MI_Cs_2`   |`MI_Db_2`|C♯/D♭ octave 2                   |
 | 
			
		||||
|`MI_D_2`    |         |D octave 2                       |
 | 
			
		||||
|`MI_Ds_2`   |`MI_Eb_2`|D♯/E♭ octave 2                   |
 | 
			
		||||
|`MI_E_2`    |         |E octave 2                       |
 | 
			
		||||
|`MI_F_2`    |         |F octave 2                       |
 | 
			
		||||
|`MI_Fs_2`   |`MI_Gb_2`|F♯/G♭ octave 2                   |
 | 
			
		||||
|`MI_G_2`    |         |G octave 2                       |
 | 
			
		||||
|`MI_Gs_2`   |`MI_Ab_2`|G♯/A♭ octave 2                   |
 | 
			
		||||
|`MI_A_2`    |         |A octave 2                       |
 | 
			
		||||
|`MI_As_2`   |`MI_Bb_2`|A♯/B♭ octave 2                   |
 | 
			
		||||
|`MI_B_2`    |         |B octave 2                       |
 | 
			
		||||
|`MI_C_3`    |         |C octave 3                       |
 | 
			
		||||
|`MI_Cs_3`   |`MI_Db_3`|C♯/D♭ octave 3                   |
 | 
			
		||||
|`MI_D_3`    |         |D octave 3                       |
 | 
			
		||||
|`MI_Ds_3`   |`MI_Eb_3`|D♯/E♭ octave 3                   |
 | 
			
		||||
|`MI_E_3`    |         |E octave 3                       |
 | 
			
		||||
|`MI_F_3`    |         |F octave 3                       |
 | 
			
		||||
|`MI_Fs_3`   |`MI_Gb_3`|F♯/G♭ octave 3                   |
 | 
			
		||||
|`MI_G_3`    |         |G octave 3                       |
 | 
			
		||||
|`MI_Gs_3`   |`MI_Ab_3`|G♯/A♭ octave 3                   |
 | 
			
		||||
|`MI_A_3`    |         |A octave 3                       |
 | 
			
		||||
|`MI_As_3`   |`MI_Bb_3`|A♯/B♭ octave 3                   |
 | 
			
		||||
|`MI_B_3`    |         |B octave 3                       |
 | 
			
		||||
|`MI_C_4`    |         |C octave 4                       |
 | 
			
		||||
|`MI_Cs_4`   |`MI_Db_4`|C♯/D♭ octave 4                   |
 | 
			
		||||
|`MI_D_4`    |         |D octave 4                       |
 | 
			
		||||
|`MI_Ds_4`   |`MI_Eb_4`|D♯/E♭ octave 4                   |
 | 
			
		||||
|`MI_E_4`    |         |E octave 4                       |
 | 
			
		||||
|`MI_F_4`    |         |F octave 4                       |
 | 
			
		||||
|`MI_Fs_4`   |`MI_Gb_4`|F♯/G♭ octave 4                   |
 | 
			
		||||
|`MI_G_4`    |         |G octave 4                       |
 | 
			
		||||
|`MI_Gs_4`   |`MI_Ab_4`|G♯/A♭ octave 4                   |
 | 
			
		||||
|`MI_A_4`    |         |A octave 4                       |
 | 
			
		||||
|`MI_As_4`   |`MI_Bb_4`|A♯/B♭ octave 4                   |
 | 
			
		||||
|`MI_B_4`    |         |B octave 4                       |
 | 
			
		||||
|`MI_C_5`    |         |C octave 5                       |
 | 
			
		||||
|`MI_Cs_5`   |`MI_Db_5`|C♯/D♭ octave 5                   |
 | 
			
		||||
|`MI_D_5`    |         |D octave 5                       |
 | 
			
		||||
|`MI_Ds_5`   |`MI_Eb_5`|D♯/E♭ octave 5                   |
 | 
			
		||||
|`MI_E_5`    |         |E octave 5                       |
 | 
			
		||||
|`MI_F_5`    |         |F octave 5                       |
 | 
			
		||||
|`MI_Fs_5`   |`MI_Gb_5`|F♯/G♭ octave 5                   |
 | 
			
		||||
|`MI_G_5`    |         |G octave 5                       |
 | 
			
		||||
|`MI_Gs_5`   |`MI_Ab_5`|G♯/A♭ octave 5                   |
 | 
			
		||||
|`MI_A_5`    |         |A octave 5                       |
 | 
			
		||||
|`MI_As_5`   |`MI_Bb_5`|A♯/B♭ octave 5                   |
 | 
			
		||||
|`MI_B_5`    |         |B octave 5                       |
 | 
			
		||||
|`MI_OCT_N2` |         |Set octave to -2                 |
 | 
			
		||||
|`MI_OCT_N1` |         |Set octave to -1                 |
 | 
			
		||||
|`MI_OCT_0`  |         |Set octave to 0                  |
 | 
			
		||||
|`MI_OCT_1`  |         |Set octave to 1                  |
 | 
			
		||||
|`MI_OCT_2`  |         |Set octave to 2                  |
 | 
			
		||||
|`MI_OCT_3`  |         |Set octave to 3                  |
 | 
			
		||||
|`MI_OCT_4`  |         |Set octave to 4                  |
 | 
			
		||||
|`MI_OCT_5`  |         |Set octave to 5                  |
 | 
			
		||||
|`MI_OCT_6`  |         |Set octave to 6                  |
 | 
			
		||||
|`MI_OCT_7`  |         |Set octave to 7                  |
 | 
			
		||||
|`MI_OCTD`   |         |Move down an octave              |
 | 
			
		||||
|`MI_OCTU`   |         |Move up an octave                |
 | 
			
		||||
|`MI_TRNS_N6`|         |Set transposition to -6 semitones|
 | 
			
		||||
|`MI_TRNS_N5`|         |Set transposition to -5 semitones|
 | 
			
		||||
|`MI_TRNS_N4`|         |Set transposition to -4 semitones|
 | 
			
		||||
|`MI_TRNS_N3`|         |Set transposition to -3 semitones|
 | 
			
		||||
|`MI_TRNS_N2`|         |Set transposition to -2 semitones|
 | 
			
		||||
|`MI_TRNS_N1`|         |Set transposition to -1 semitone |
 | 
			
		||||
|`MI_TRNS_0` |         |No transposition                 |
 | 
			
		||||
|`MI_TRNS_1` |         |Set transposition to +1 semitone |
 | 
			
		||||
|`MI_TRNS_2` |         |Set transposition to +2 semitones|
 | 
			
		||||
|`MI_TRNS_3` |         |Set transposition to +3 semitones|
 | 
			
		||||
|`MI_TRNS_4` |         |Set transposition to +4 semitones|
 | 
			
		||||
|`MI_TRNS_5` |         |Set transposition to +5 semitones|
 | 
			
		||||
|`MI_TRNS_6` |         |Set transposition to +6 semitones|
 | 
			
		||||
|`MI_TRNSD`  |         |Decrease transposition           |
 | 
			
		||||
|`MI_TRNSU`  |         |Increase transposition           |
 | 
			
		||||
|`MI_VEL_0`  |         |Set velocity to 0                |
 | 
			
		||||
|`MI_VEL_1`  |         |Set velocity to 12               |
 | 
			
		||||
|`MI_VEL_2`  |         |Set velocity to 25               |
 | 
			
		||||
|`MI_VEL_3`  |         |Set velocity to 38               |
 | 
			
		||||
|`MI_VEL_4`  |         |Set velocity to 51               |
 | 
			
		||||
|`MI_VEL_5`  |         |Set velocity to 64               |
 | 
			
		||||
|`MI_VEL_6`  |         |Set velocity to 76               |
 | 
			
		||||
|`MI_VEL_7`  |         |Set velocity to 89               |
 | 
			
		||||
|`MI_VEL_8`  |         |Set velocity to 102              |
 | 
			
		||||
|`MI_VEL_9`  |         |Set velocity to 114              |
 | 
			
		||||
|`MI_VEL_10` |         |Set velocity to 127              |
 | 
			
		||||
|`MI_VELD`   |         |Decrease velocity                |
 | 
			
		||||
|`MI_VELU`   |         |Increase velocity                |
 | 
			
		||||
|`MI_CH1`    |         |Set channel to 1                 |
 | 
			
		||||
|`MI_CH2`    |         |Set channel to 2                 |
 | 
			
		||||
|`MI_CH3`    |         |Set channel to 3                 |
 | 
			
		||||
|`MI_CH4`    |         |Set channel to 4                 |
 | 
			
		||||
|`MI_CH5`    |         |Set channel to 5                 |
 | 
			
		||||
|`MI_CH6`    |         |Set channel to 6                 |
 | 
			
		||||
|`MI_CH7`    |         |Set channel to 7                 |
 | 
			
		||||
|`MI_CH8`    |         |Set channel to 8                 |
 | 
			
		||||
|`MI_CH9`    |         |Set channel to 9                 |
 | 
			
		||||
|`MI_CH10`   |         |Set channel to 10                |
 | 
			
		||||
|`MI_CH11`   |         |Set channel to 11                |
 | 
			
		||||
|`MI_CH12`   |         |Set channel to 12                |
 | 
			
		||||
|`MI_CH13`   |         |Set channel to 13                |
 | 
			
		||||
|`MI_CH14`   |         |Set channel to 14                |
 | 
			
		||||
|`MI_CH15`   |         |Set channel to 15                |
 | 
			
		||||
|`MI_CH16`   |         |Set channel to 16                |
 | 
			
		||||
|`MI_CHD`    |         |Decrease channel                 |
 | 
			
		||||
|`MI_CHU`    |         |Increase channel                 |
 | 
			
		||||
|`MI_ALLOFF` |         |Stop all notes                   |
 | 
			
		||||
|`MI_SUS`    |         |Sustain                          |
 | 
			
		||||
|`MI_PORT`   |         |Portmento                        |
 | 
			
		||||
|`MI_SOST`   |         |Sostenuto                        |
 | 
			
		||||
|`MI_SOFT`   |         |Soft Pedal                       |
 | 
			
		||||
|`MI_LEG`    |         |Legato                           |
 | 
			
		||||
|`MI_MOD`    |         |Modulation                       |
 | 
			
		||||
|`MI_MODSD`  |         |Decrease modulation speed        |
 | 
			
		||||
|`MI_MODSU`  |         |Increase modulation speed        |
 | 
			
		||||
|`MI_BENDD`  |         |Bend pitch down                  |
 | 
			
		||||
|`MI_BENDU`  |         |Bend pitch up                    |
 | 
			
		||||
|Key                            |Aliases           |Description                      |
 | 
			
		||||
|-------------------------------|------------------|---------------------------------|
 | 
			
		||||
|`QK_MIDI_ON`                   |`MI_ON`           |Turn MIDI on                     |
 | 
			
		||||
|`QK_MIDI_OFF`                  |`MI_OFF`          |Turn MIDI off                    |
 | 
			
		||||
|`QK_MIDI_TOGGLE`               |`MI_TOGG`         |Toggle MIDI enabled              |
 | 
			
		||||
|`QK_MIDI_NOTE_C_0`             |`MI_C`            |C octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_0`       |`MI_Cs`, `MI_Db`  |C♯/D♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_0`             |`MI_D`            |D octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_0`       |`MI_Ds`, `MI_Eb`  |D♯/E♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_0`             |`MI_E`            |E octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_0`             |`MI_F`            |F octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_0`       |`MI_Fs`, `MI_Gb`  |F♯/G♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_0`             |`MI_G`            |G octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_0`       |`MI_Gs`, `MI_Ab`  |G♯/A♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_0`             |`MI_A`            |A octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_0`       |`MI_As`, `MI_Bb`  |A♯/B♭ octave 0                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_0`             |`MI_B`            |B octave 0                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_1`             |`MI_C1`           |C octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_1`       |`MI_Cs1`, `MI_Db1`|C♯/D♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_1`             |`MI_D1`           |D octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_1`       |`MI_Ds1`, `MI_Eb1`|D♯/E♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_1`             |`MI_E1`           |E octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_1`             |`MI_F1`           |F octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_1`       |`MI_Fs1`, `MI_Gb1`|F♯/G♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_1`             |`MI_G1`           |G octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_1`       |`MI_Gs1`, `MI_Ab1`|G♯/A♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_1`             |`MI_A1`           |A octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_1`       |`MI_As1`, `MI_Bb1`|A♯/B♭ octave 1                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_1`             |`MI_B1`           |B octave 1                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_2`             |`MI_C2`           |C octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_2`       |`MI_Cs2`, `MI_Db2`|C♯/D♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_2`             |`MI_D2`           |D octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_2`       |`MI_Ds2`, `MI_Eb2`|D♯/E♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_2`             |`MI_E2`           |E octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_2`             |`MI_F2`           |F octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_2`       |`MI_Fs2`, `MI_Gb2`|F♯/G♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_2`             |`MI_G2`           |G octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_2`       |`MI_Gs2`, `MI_Ab2`|G♯/A♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_2`             |`MI_A2`           |A octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_2`       |`MI_As2`, `MI_Bb2`|A♯/B♭ octave 2                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_2`             |`MI_B2`           |B octave 2                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_3`             |`MI_C3`           |C octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_3`       |`MI_Cs3`, `MI_Db3`|C♯/D♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_3`             |`MI_D3`           |D octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_3`       |`MI_Ds3`, `MI_Eb3`|D♯/E♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_3`             |`MI_E3`           |E octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_3`             |`MI_F3`           |F octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_3`       |`MI_Fs3`, `MI_Gb3`|F♯/G♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_3`             |`MI_G3`           |G octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_3`       |`MI_Gs3`, `MI_Ab3`|G♯/A♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_3`             |`MI_A3`           |A octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_3`       |`MI_As3`, `MI_Bb3`|A♯/B♭ octave 3                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_3`             |`MI_B3`           |B octave 3                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_4`             |`MI_C4`           |C octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_4`       |`MI_Cs4`, `MI_Db4`|C♯/D♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_4`             |`MI_D4`           |D octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_4`       |`MI_Ds4`, `MI_Eb4`|D♯/E♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_4`             |`MI_E4`           |E octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_4`             |`MI_F4`           |F octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_4`       |`MI_Fs4`, `MI_Gb4`|F♯/G♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_4`             |`MI_G4`           |G octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_4`       |`MI_Gs4`, `MI_Ab4`|G♯/A♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_4`             |`MI_A4`           |A octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_4`       |`MI_As4`, `MI_Bb4`|A♯/B♭ octave 4                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_4`             |`MI_B4`           |B octave 4                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_5`             |`MI_C5`           |C octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_C_SHARP_5`       |`MI_Cs5`, `MI_Db5`|C♯/D♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_D_5`             |`MI_D5`           |D octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_D_SHARP_5`       |`MI_Ds5`, `MI_Eb5`|D♯/E♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_E_5`             |`MI_E5`           |E octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_5`             |`MI_F5`           |F octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_F_SHARP_5`       |`MI_Fs5`, `MI_Gb5`|F♯/G♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_G_5`             |`MI_G5`           |G octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_G_SHARP_5`       |`MI_Gs5`, `MI_Ab5`|G♯/A♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_A_5`             |`MI_A5`           |A octave 5                       |
 | 
			
		||||
|`QK_MIDI_NOTE_A_SHARP_5`       |`MI_As5`, `MI_Bb5`|A♯/B♭ octave 5                   |
 | 
			
		||||
|`QK_MIDI_NOTE_B_5`             |`MI_B5`           |B octave 5                       |
 | 
			
		||||
|`QK_MIDI_OCTAVE_N2`            |`MI_OCN2`         |Set octave to -2                 |
 | 
			
		||||
|`QK_MIDI_OCTAVE_N1`            |`MI_OCN1`         |Set octave to -1                 |
 | 
			
		||||
|`QK_MIDI_OCTAVE_0`             |`MI_OC0`          |Set octave to 0                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_1`             |`MI_OC1`          |Set octave to 1                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_2`             |`MI_OC2`          |Set octave to 2                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_3`             |`MI_OC3`          |Set octave to 3                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_4`             |`MI_OC4`          |Set octave to 4                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_5`             |`MI_OC5`          |Set octave to 5                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_6`             |`MI_OC6`          |Set octave to 6                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_7`             |`MI_OC7`          |Set octave to 7                  |
 | 
			
		||||
|`QK_MIDI_OCTAVE_DOWN`          |`MI_OCTD`         |Move down an octave              |
 | 
			
		||||
|`QK_MIDI_OCTAVE_UP`            |`MI_OCTU`         |Move up an octave                |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N6`         |`MI_TRN6`         |Set transposition to -6 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N5`         |`MI_TRN5`         |Set transposition to -5 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N4`         |`MI_TRN4`         |Set transposition to -4 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N3`         |`MI_TRN3`         |Set transposition to -3 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N2`         |`MI_TRN2`         |Set transposition to -2 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_N1`         |`MI_TRN1`         |Set transposition to -1 semitone |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_0`          |`MI_TR0`          |No transposition                 |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_1`          |`MI_TR1`          |Set transposition to +1 semitone |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_2`          |`MI_TR2`          |Set transposition to +2 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_3`          |`MI_TR3`          |Set transposition to +3 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_4`          |`MI_TR4`          |Set transposition to +4 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_5`          |`MI_TR5`          |Set transposition to +5 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_6`          |`MI_TR6`          |Set transposition to +6 semitones|
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_DOWN`       |`MI_TRSD`         |Decrease transposition           |
 | 
			
		||||
|`QK_MIDI_TRANSPOSE_UP`         |`MI_TRSU`         |Increase transposition           |
 | 
			
		||||
|`QK_MIDI_VELOCITY_0`           |`MI_VL0`          |Set velocity to 0                |
 | 
			
		||||
|`QK_MIDI_VELOCITY_1`           |`MI_VL1`          |Set velocity to 12               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_2`           |`MI_VL2`          |Set velocity to 25               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_3`           |`MI_VL3`          |Set velocity to 38               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_4`           |`MI_VL4`          |Set velocity to 51               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_5`           |`MI_VL5`          |Set velocity to 64               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_6`           |`MI_VL6`          |Set velocity to 76               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_7`           |`MI_VL7`          |Set velocity to 89               |
 | 
			
		||||
|`QK_MIDI_VELOCITY_8`           |`MI_VL8`          |Set velocity to 102              |
 | 
			
		||||
|`QK_MIDI_VELOCITY_9`           |`MI_VL9`          |Set velocity to 114              |
 | 
			
		||||
|`QK_MIDI_VELOCITY_10`          |`MI_VL10`         |Set velocity to 127              |
 | 
			
		||||
|`QK_MIDI_VELOCITY_DOWN`        |`MI_VELD`         |Decrease velocity                |
 | 
			
		||||
|`QK_MIDI_VELOCITY_UP`          |`MI_VELU`         |Increase velocity                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_1`            |`MI_CH1`          |Set channel to 1                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_2`            |`MI_CH2`          |Set channel to 2                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_3`            |`MI_CH3`          |Set channel to 3                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_4`            |`MI_CH4`          |Set channel to 4                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_5`            |`MI_CH5`          |Set channel to 5                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_6`            |`MI_CH6`          |Set channel to 6                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_7`            |`MI_CH7`          |Set channel to 7                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_8`            |`MI_CH8`          |Set channel to 8                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_9`            |`MI_CH9`          |Set channel to 9                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_10`           |`MI_CH10`         |Set channel to 10                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_11`           |`MI_CH11`         |Set channel to 11                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_12`           |`MI_CH12`         |Set channel to 12                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_13`           |`MI_CH13`         |Set channel to 13                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_14`           |`MI_CH14`         |Set channel to 14                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_15`           |`MI_CH15`         |Set channel to 15                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_16`           |`MI_CH16`         |Set channel to 16                |
 | 
			
		||||
|`QK_MIDI_CHANNEL_DOWN`         |`MI_CHND`         |Decrease channel                 |
 | 
			
		||||
|`QK_MIDI_CHANNEL_UP`           |`MI_CHNU`         |Increase channel                 |
 | 
			
		||||
|`QK_MIDI_ALL_NOTES_OFF`        |`MI_AOFF`         |Stop all notes                   |
 | 
			
		||||
|`QK_MIDI_SUSTAIN`              |`MI_SUST`         |Sustain                          |
 | 
			
		||||
|`QK_MIDI_PORTAMENTO`           |`MI_PORT`         |Portmento                        |
 | 
			
		||||
|`QK_MIDI_SOSTENUTO`            |`MI_SOST`         |Sostenuto                        |
 | 
			
		||||
|`QK_MIDI_SOFT`                 |`MI_SOFT`         |Soft Pedal                       |
 | 
			
		||||
|`QK_MIDI_LEGATO`               |`MI_LEG`          |Legato                           |
 | 
			
		||||
|`QK_MIDI_MODULATION`           |`MI_MOD`          |Modulation                       |
 | 
			
		||||
|`QK_MIDI_MODULATION_SPEED_DOWN`|`MI_MODD`         |Decrease modulation speed        |
 | 
			
		||||
|`QK_MIDI_MODULATION_SPEED_UP`  |`MI_MODU`         |Increase modulation speed        |
 | 
			
		||||
|`QK_MIDI_PITCH_BEND_DOWN`      |`MI_BNDD`         |Bend pitch down                  |
 | 
			
		||||
|`QK_MIDI_PITCH_BEND_UP`        |`MI_BNDU`         |Bend pitch up                    |
 | 
			
		||||
 | 
			
		||||
## Mouse Keys :id=mouse-keys
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,45 +25,45 @@ enum custom_keycodes {
 | 
			
		|||
 | 
			
		||||
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
 | 
			
		||||
    MI_C1,  MI_F1,  MI_B1,  MI_E2,  MI_A2,  MI_D3,  MI_G3,  MI_C4,  MI_OCTD, MI_OCTU,
 | 
			
		||||
    MI_D1,  MI_G1,  MI_C2,  MI_F2,  MI_B2,  MI_E3,  MI_A3,  MI_D4,  MI_TRSD, MI_TRSU,
 | 
			
		||||
    MI_E1,  MI_A1,  MI_D2,  MI_G2,  MI_C3,  MI_F3,  MI_B3,  MI_E4,  MI_SUST, 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, _______, _______
 | 
			
		||||
    MI_C1,  MI_F1,  MI_As1, MI_Ds2, MI_A2,  MI_D3,  MI_G3,  MI_C4,  _______, _______,
 | 
			
		||||
    MI_D1,  MI_G1,  MI_C2,  MI_F2,  MI_As2, MI_Ds3, MI_A3,  MI_D4,  _______, _______,
 | 
			
		||||
    MI_Ds1, MI_A1,  MI_D2,  MI_G2,  MI_C3,  MI_F3,  MI_As3, MI_Ds4, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_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, _______, _______
 | 
			
		||||
    MI_C1,  MI_F1,  MI_As1, MI_Ds2, MI_Gs2, MI_Cs3, MI_G3,  MI_C4,  _______, _______,
 | 
			
		||||
    MI_Cs1, MI_G1,  MI_C2,  MI_F2,  MI_As2, MI_Ds3, MI_Gs3, MI_Cs4, _______, _______,
 | 
			
		||||
    MI_Ds1, MI_Gs1, MI_Cs2, MI_G2,  MI_C3,  MI_F3,  MI_As3, MI_Ds4, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_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,  _______, _______
 | 
			
		||||
    MI_C1,  MI_Fs1, MI_B1,  MI_E2,  MI_A2,  MI_D3,  MI_G3,  MI_C4,  _______, _______,
 | 
			
		||||
    MI_D1,  MI_G1,  MI_C2,  MI_Fs2, MI_B2,  MI_E3,  MI_A3,  MI_D4,  _______, _______,
 | 
			
		||||
    MI_E1,  MI_A1,  MI_D2,  MI_G2,  MI_C3,  MI_Fs3, MI_B3,  MI_E4,  _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_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,  _______, _______
 | 
			
		||||
    MI_C1,  MI_F1,  MI_As1, MI_E2,  MI_A2,  MI_D3,  MI_G3,  MI_C4,  _______, _______,
 | 
			
		||||
    MI_D1,  MI_G1,  MI_C2,  MI_F2,  MI_As2, MI_E3,  MI_A3,  MI_D4,  _______, _______,
 | 
			
		||||
    MI_E1,  MI_A1,  MI_D2,  MI_G2,  MI_C3,  MI_F3,  MI_As3, MI_E4,  _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_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, _______, _______
 | 
			
		||||
    MI_C1,  MI_F1,  MI_As1, MI_Ds2, MI_Gs2, MI_D3,  MI_G3,  MI_C4,  _______, _______,
 | 
			
		||||
    MI_D1,  MI_G1,  MI_C2,  MI_F2,  MI_As2, MI_Ds3, MI_Gs3, MI_D4,  _______, _______,
 | 
			
		||||
    MI_Ds1, MI_Gs1, MI_D2,  MI_G2,  MI_C3,  MI_F3,  MI_As3, MI_Ds4, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_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, _______, _______
 | 
			
		||||
    MI_C1,  MI_F1,  MI_As1, MI_Ds2, MI_Gs2, MI_Cs3, MI_Fs3, MI_C4,  _______, _______,
 | 
			
		||||
    MI_Cs1, MI_Fs1, MI_C2,  MI_F2,  MI_As2, MI_Ds3, MI_Gs3, MI_Cs4, _______, _______,
 | 
			
		||||
    MI_Ds1, MI_Gs1, MI_Cs2, MI_Fs2, MI_C3,  MI_F3,  MI_As3, MI_Ds4, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_MENU] = LAYOUT_ortho_3x10(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,33 +34,33 @@ enum custom_keycodes {
 | 
			
		|||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_OPEN] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
 | 
			
		||||
       MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1,
 | 
			
		||||
         MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP,
 | 
			
		||||
       MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1,
 | 
			
		||||
     MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Cs2, MI_F2, MI_Gs3,
 | 
			
		||||
       MI_E1, MI_A1, MI_G2, MI_Ds2, MI_F3, MI_As2, MI_F1,
 | 
			
		||||
         MI_D2, MI_A2, MI_C3, MI_E3, MI_C2, MI_G1, TG_SWAP,
 | 
			
		||||
       MI_E2, MI_Gs2, MI_B2, MI_D3, MI_Fs3, MI_Cs3, MI_Fs1,
 | 
			
		||||
     MI_D1, MI_B1, MI_G3, MI_A3, MI_Ds3, MI_Fs2, MI_Ds1, MI_C1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_B_5, MI_Gs_5, MI_G_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
 | 
			
		||||
        MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
 | 
			
		||||
     TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4
 | 
			
		||||
     MO_SWAP,    MI_B5, MI_Gs5, MI_G5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_Cs3, MI_A5, MI_Fs5, MI_E5, MI_Ds5,
 | 
			
		||||
        MI_C3, MI_D3, MI_G3, MI_As4, MI_C5, MI_D5,
 | 
			
		||||
     TG_SWAP, MI_B2, MI_E3, MI_Cs4, MI_Fs3, MI_A3, MI_C4, MI_E4,
 | 
			
		||||
       MI_A2, MI_F3, MI_As3, MI_Gs3, MI_B3, MI_D4, MI_Gs4, MI_B4,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_Ds4, MI_Fs4, MI_A4, MI_Cs5, MI_G4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_CLOSE] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3,
 | 
			
		||||
       MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1,
 | 
			
		||||
         MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP,
 | 
			
		||||
       MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1,
 | 
			
		||||
     MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Ds2, MI_Ds3, MI_G3,
 | 
			
		||||
       MI_D1, MI_D2, MI_As2, MI_C3, MI_Cs2, MI_C2, MI_Fs1,
 | 
			
		||||
         MI_G1, MI_G2, MI_B2, MI_D3, MI_F3, MI_Fs2, TG_SWAP,
 | 
			
		||||
       MI_A1, MI_E2, MI_A2, MI_Cs3, MI_E3, MI_Gs2, MI_B1,
 | 
			
		||||
     MI_E1, MI_E2, MI_Fs3, MI_Gs3, MI_B3, MI_F2, MI_Cs1, MI_F1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
 | 
			
		||||
        MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
 | 
			
		||||
     TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4
 | 
			
		||||
     MO_SWAP,    MI_A5, MI_Gs5, MI_Fs5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_C3, MI_G5, MI_As4, MI_C5, MI_Ds5,
 | 
			
		||||
        MI_D3, MI_Cs3, MI_Gs3, MI_As3, MI_C4, MI_D5,
 | 
			
		||||
     TG_SWAP, MI_B2, MI_Fs3, MI_Fs4, MI_G3, MI_B3, MI_D4, MI_G4,
 | 
			
		||||
       MI_A2, MI_F3, MI_E3, MI_A3, MI_Cs4, MI_E4, MI_A4, MI_Cs5,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_E4, MI_Gs4, MI_B4, MI_E5, MI_Ds4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_FN] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			@ -88,8 +88,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,33 +64,33 @@ enum custom_keycodes {
 | 
			
		|||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_OPEN] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
 | 
			
		||||
       MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1,
 | 
			
		||||
         MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP,
 | 
			
		||||
       MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1,
 | 
			
		||||
     MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Cs2, MI_F2, MI_Gs3,
 | 
			
		||||
       MI_E1, MI_A1, MI_G2, MI_Ds2, MI_F3, MI_As2, MI_F1,
 | 
			
		||||
         MI_D2, MI_A2, MI_C3, MI_E3, MI_C2, MI_G1, TG_SWAP,
 | 
			
		||||
       MI_E2, MI_Gs2, MI_B2, MI_D3, MI_Fs3, MI_Cs3, MI_Fs1,
 | 
			
		||||
     MI_D1, MI_B1, MI_G3, MI_A3, MI_Ds3, MI_Fs2, MI_Ds1, MI_C1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_B_5, MI_Gs_5, MI_G_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
 | 
			
		||||
        MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
 | 
			
		||||
     TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4
 | 
			
		||||
     MO_SWAP,    MI_B5, MI_Gs5, MI_G5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_Cs3, MI_A5, MI_Fs5, MI_E5, MI_Ds5,
 | 
			
		||||
        MI_C3, MI_D3, MI_G3, MI_As4, MI_C5, MI_D5,
 | 
			
		||||
     TG_SWAP, MI_B2, MI_E3, MI_Cs4, MI_Fs3, MI_A3, MI_C4, MI_E4,
 | 
			
		||||
       MI_A2, MI_F3, MI_As3, MI_Gs3, MI_B3, MI_D4, MI_Gs4, MI_B4,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_Ds4, MI_Fs4, MI_A4, MI_Cs5, MI_G4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_CLOSE] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3,
 | 
			
		||||
       MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1,
 | 
			
		||||
         MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP,
 | 
			
		||||
       MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1,
 | 
			
		||||
     MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Ds2, MI_Ds3, MI_G3,
 | 
			
		||||
       MI_D1, MI_D2, MI_As2, MI_C3, MI_Cs2, MI_C2, MI_Fs1,
 | 
			
		||||
         MI_G1, MI_G2, MI_B2, MI_D3, MI_F3, MI_Fs2, TG_SWAP,
 | 
			
		||||
       MI_A1, MI_E2, MI_A2, MI_Cs3, MI_E3, MI_Gs2, MI_B1,
 | 
			
		||||
     MI_E1, MI_E2, MI_Fs3, MI_Gs3, MI_B3, MI_F2, MI_Cs1, MI_F1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
 | 
			
		||||
        MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
 | 
			
		||||
     TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4
 | 
			
		||||
     MO_SWAP,    MI_A5, MI_Gs5, MI_Fs5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_C3, MI_G5, MI_As4, MI_C5, MI_Ds5,
 | 
			
		||||
        MI_D3, MI_Cs3, MI_Gs3, MI_As3, MI_C4, MI_D5,
 | 
			
		||||
     TG_SWAP, MI_B2, MI_Fs3, MI_Fs4, MI_G3, MI_B3, MI_D4, MI_G4,
 | 
			
		||||
       MI_A2, MI_F3, MI_E3, MI_A3, MI_Cs4, MI_E4, MI_A4, MI_Cs5,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_E4, MI_Gs4, MI_B4, MI_E5, MI_Ds4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_QWERTY] = LAYOUT_wrapper(
 | 
			
		||||
| 
						 | 
				
			
			@ -166,8 +166,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,33 +64,33 @@ enum custom_keycodes {
 | 
			
		|||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_OPEN] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
 | 
			
		||||
       MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1,
 | 
			
		||||
         MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, MI_B,
 | 
			
		||||
       MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1,
 | 
			
		||||
     MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Cs2, MI_F2, MI_Gs3,
 | 
			
		||||
       MI_E1, MI_A1, MI_G2, MI_Ds2, MI_F3, MI_As2, MI_F1,
 | 
			
		||||
         MI_D2, MI_A2, MI_C3, MI_E3, MI_C2, MI_G1, MI_B,
 | 
			
		||||
       MI_E2, MI_Gs2, MI_B2, MI_D3, MI_Fs3, MI_Cs3, MI_Fs1,
 | 
			
		||||
     MI_D1, MI_B1, MI_G3, MI_A3, MI_Ds3, MI_Fs2, MI_Ds1, MI_C1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_B_5, MI_Gs_5, MI_G_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
 | 
			
		||||
        MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
 | 
			
		||||
     MI_G_2, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4
 | 
			
		||||
     MO_SWAP,    MI_B5, MI_Gs5, MI_G5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_Cs3, MI_A5, MI_Fs5, MI_E5, MI_Ds5,
 | 
			
		||||
        MI_C3, MI_D3, MI_G3, MI_As4, MI_C5, MI_D5,
 | 
			
		||||
     MI_G2, MI_B2, MI_E3, MI_Cs4, MI_Fs3, MI_A3, MI_C4, MI_E4,
 | 
			
		||||
       MI_A2, MI_F3, MI_As3, MI_Gs3, MI_B3, MI_D4, MI_Gs4, MI_B4,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_Ds4, MI_Fs4, MI_A4, MI_Cs5, MI_G4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_CLOSE] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3,
 | 
			
		||||
       MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1,
 | 
			
		||||
         MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, MI_B,
 | 
			
		||||
       MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1,
 | 
			
		||||
     MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Ds2, MI_Ds3, MI_G3,
 | 
			
		||||
       MI_D1, MI_D2, MI_As2, MI_C3, MI_Cs2, MI_C2, MI_Fs1,
 | 
			
		||||
         MI_G1, MI_G2, MI_B2, MI_D3, MI_F3, MI_Fs2, MI_B,
 | 
			
		||||
       MI_A1, MI_E2, MI_A2, MI_Cs3, MI_E3, MI_Gs2, MI_B1,
 | 
			
		||||
     MI_E1, MI_E2, MI_Fs3, MI_Gs3, MI_B3, MI_F2, MI_Cs1, MI_F1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
 | 
			
		||||
        MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
 | 
			
		||||
     MI_G_2, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4
 | 
			
		||||
     MO_SWAP,    MI_A5, MI_Gs5, MI_Fs5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_C3, MI_G5, MI_As4, MI_C5, MI_Ds5,
 | 
			
		||||
        MI_D3, MI_Cs3, MI_Gs3, MI_As3, MI_C4, MI_D5,
 | 
			
		||||
     MI_G2, MI_B2, MI_Fs3, MI_Fs4, MI_G3, MI_B3, MI_D4, MI_G4,
 | 
			
		||||
       MI_A2, MI_F3, MI_E3, MI_A3, MI_Cs4, MI_E4, MI_A4, MI_Cs5,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_E4, MI_Gs4, MI_B4, MI_E5, MI_Ds4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_QWERTY] = LAYOUT_wrapper(
 | 
			
		||||
| 
						 | 
				
			
			@ -166,8 +166,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,33 +35,33 @@ enum custom_keycodes {
 | 
			
		|||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_OPEN] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
 | 
			
		||||
       MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1,
 | 
			
		||||
         MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP,
 | 
			
		||||
       MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1,
 | 
			
		||||
     MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Cs2, MI_F2, MI_Gs3,
 | 
			
		||||
       MI_E1, MI_A1, MI_G2, MI_Ds2, MI_F3, MI_As2, MI_F1,
 | 
			
		||||
         MI_D2, MI_A2, MI_C3, MI_E3, MI_C2, MI_G1, TG_SWAP,
 | 
			
		||||
       MI_E2, MI_Gs2, MI_B2, MI_D3, MI_Fs3, MI_Cs3, MI_Fs1,
 | 
			
		||||
     MI_D1, MI_B1, MI_G3, MI_A3, MI_Ds3, MI_Fs2, MI_Ds1, MI_C1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_B_5, MI_Gs_5, MI_G_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
 | 
			
		||||
        MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
 | 
			
		||||
     TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4
 | 
			
		||||
     MO_SWAP,    MI_B5, MI_Gs5, MI_G5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_Cs3, MI_A5, MI_Fs5, MI_E5, MI_Ds5,
 | 
			
		||||
        MI_C3, MI_D3, MI_G3, MI_As4, MI_C5, MI_D5,
 | 
			
		||||
     TG_SWAP, MI_B2, MI_E3, MI_Cs4, MI_Fs3, MI_A3, MI_C4, MI_E4,
 | 
			
		||||
       MI_A2, MI_F3, MI_As3, MI_Gs3, MI_B3, MI_D4, MI_Gs4, MI_B4,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_Ds4, MI_Fs4, MI_A4, MI_Cs5, MI_G4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_CLOSE] = LAYOUT(
 | 
			
		||||
                  MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3,
 | 
			
		||||
       MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1,
 | 
			
		||||
         MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP,
 | 
			
		||||
       MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1,
 | 
			
		||||
     MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
 | 
			
		||||
                  MI_Gs1, MI_As1, MI_Ds2, MI_Ds3, MI_G3,
 | 
			
		||||
       MI_D1, MI_D2, MI_As2, MI_C3, MI_Cs2, MI_C2, MI_Fs1,
 | 
			
		||||
         MI_G1, MI_G2, MI_B2, MI_D3, MI_F3, MI_Fs2, TG_SWAP,
 | 
			
		||||
       MI_A1, MI_E2, MI_A2, MI_Cs3, MI_E3, MI_Gs2, MI_B1,
 | 
			
		||||
     MI_E1, MI_E2, MI_Fs3, MI_Gs3, MI_B3, MI_F2, MI_Cs1, MI_F1,
 | 
			
		||||
 | 
			
		||||
     MO_SWAP,    MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5,     FN_MUTE,
 | 
			
		||||
         MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
 | 
			
		||||
        MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
 | 
			
		||||
     TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
 | 
			
		||||
       MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
 | 
			
		||||
     MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4
 | 
			
		||||
     MO_SWAP,    MI_A5, MI_Gs5, MI_Fs5, MI_F5,     FN_MUTE,
 | 
			
		||||
         MI_C3, MI_G5, MI_As4, MI_C5, MI_Ds5,
 | 
			
		||||
        MI_D3, MI_Cs3, MI_Gs3, MI_As3, MI_C4, MI_D5,
 | 
			
		||||
     TG_SWAP, MI_B2, MI_Fs3, MI_Fs4, MI_G3, MI_B3, MI_D4, MI_G4,
 | 
			
		||||
       MI_A2, MI_F3, MI_E3, MI_A3, MI_Cs4, MI_E4, MI_A4, MI_Cs5,
 | 
			
		||||
     MI_Gs2, MI_As2, MI_Ds3, MI_F4, MI_E4, MI_Gs4, MI_B4, MI_E5, MI_Ds4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_MISC] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			@ -105,8 +105,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,16 +33,16 @@ enum custom_keycodes {
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    /* Base */
 | 
			
		||||
    [_BASE] = LAYOUT(
 | 
			
		||||
            FN_MUTE,          MI_SUS,
 | 
			
		||||
            MI_BENDU,
 | 
			
		||||
        MI_TRNSD, MI_TRNSU,  MI_C_2, MI_D_2, MI_E_2,  MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            MI_BENDD,           MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
            FN_MUTE,          MI_SUST,
 | 
			
		||||
            MI_BNDU,
 | 
			
		||||
        MI_TRSD,  MI_TRSU,   MI_C2, MI_D2, MI_E2,  MI_Fs2, MI_Ab2, MI_Bb2, MI_C3, MI_D3, MI_E3, MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            MI_BNDD,            MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2, MI_Db3, MI_Eb3, MI_F3,  MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* RESERVE */
 | 
			
		||||
| 
						 | 
				
			
			@ -71,8 +71,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
 | 
			
		||||
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_1
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
    default_layer_set(1UL << _BASE);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -206,7 +206,7 @@ static uint8_t my_tone_status[MY_TONE_COUNT];
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
static bool is_trans_mode = false;     //  By default, shift mode is chosen.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -215,57 +215,57 @@ static uint8_t key_separator_col = _KEY01;  //  (_KEY01 .. _KEY37).     By defau
 | 
			
		|||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    /* Base */
 | 
			
		||||
    [_BASE] = LAYOUT(
 | 
			
		||||
            FN_MUTE,         MI_SUS,
 | 
			
		||||
            MI_BENDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,    MI_C_2, MI_D_2, MI_E_2,  MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            MI_BENDD,           MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
            FN_MUTE,         MI_SUST,
 | 
			
		||||
            MI_BNDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,    MI_C2, MI_D2, MI_E2,  MI_Fs2, MI_Ab2, MI_Bb2, MI_C3, MI_D3, MI_E3, MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            MI_BNDD,            MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2, MI_Db3, MI_Eb3, MI_F3,  MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* 1 octave on the left side is ch2, others are ch1 (normal) */
 | 
			
		||||
    [_SEPALEFTOCT] = LAYOUT(
 | 
			
		||||
            _______,          _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        SHIFT_L, SHIFT_R,     YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2,     MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            _______,             YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2,     MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
        SHIFT_L, SHIFT_R,     YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2,     MI_C3, MI_D3, MI_E3, MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            _______,             YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2,     MI_Db3, MI_Eb3, MI_F3,  MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* Half ch2, half ch1 (normal) */
 | 
			
		||||
    [_SEPAHALF] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3,       MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,    MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3,       MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,    MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* 2 octave on the left side is ch2, others are ch1 (normal) */
 | 
			
		||||
    [_SEPARIGHTOCT] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3,      MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,  YM_G_3, YM_A_3,  YM_B_3,     MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3,      MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,  YM_G_3, YM_A_3,  YM_B_3,     MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* TRANS   This layer must locate 1 layer below _FN layer. */
 | 
			
		||||
    [_TRANS] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        MI_TRNSD, MI_TRNSU,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
        MI_TRSD,  MI_TRSU,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______,               _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* Flip Base    SFIFTUP and SHIFT_L are swapped. */
 | 
			
		||||
    [_FLIPBASE] = LAYOUT(
 | 
			
		||||
            FN_MUTE,          MI_SUS,
 | 
			
		||||
            MI_BENDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,     MI_C_5, MI_Bb_4, MI_Ab_4,  MI_Fs_4, MI_E_4, MI_D_4, MI_C_4, MI_Bb_3, MI_Ab_3, MI_Fs_3, MI_E_3, MI_D_3, MI_C_3,  MI_Bb_2,  MI_Ab_2, MI_Fs_2, MI_E_2, MI_D_2, MI_C_2,
 | 
			
		||||
            MI_BENDD,           MI_B_4, MI_A_4, MI_G_4,  MI_F_4,  MI_Eb_4,  MI_Db_4, MI_B_3, MI_A_3, MI_G_3,  MI_F_3, MI_Eb_3,  MI_Db_3, MI_B_2, MI_A_2, MI_G_2,  MI_F_2,  MI_Eb_2,  MI_Db_2
 | 
			
		||||
            FN_MUTE,          MI_SUST,
 | 
			
		||||
            MI_BNDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,     MI_C5, MI_Bb4, MI_Ab4,  MI_Fs4, MI_E4, MI_D4, MI_C4, MI_Bb3, MI_Ab3, MI_Fs3, MI_E3, MI_D3, MI_C3,  MI_Bb2,  MI_Ab2, MI_Fs2, MI_E2, MI_D2, MI_C2,
 | 
			
		||||
            MI_BNDD,            MI_B4, MI_A4, MI_G4,  MI_F4,  MI_Eb4,  MI_Db4, MI_B3, MI_A3, MI_G3,  MI_F3, MI_Eb3,  MI_Db3, MI_B2, MI_A2, MI_G2,  MI_F2,  MI_Eb2,  MI_Db2
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* Flip Trans   This layer must locate 1 layer above _FLIPBASE layer.  MI_TRNSU and MI_TRNSD are swapped. */
 | 
			
		||||
    /* Flip Trans   This layer must locate 1 layer above _FLIPBASE layer.  MI_TRSU and MI_TRSD are swapped. */
 | 
			
		||||
    [_FLIPTRANS] = LAYOUT(
 | 
			
		||||
            _______,          _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        MI_TRNSU, MI_TRNSD,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
        MI_TRSU,  MI_TRSD,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______,               _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -292,8 +292,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
 | 
			
		||||
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_1
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
    default_layer_set(_LS_BASE);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -206,7 +206,7 @@ static uint8_t my_tone_status[MY_TONE_COUNT];
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
static bool is_trans_mode = false;     //  By default, shift mode is chosen.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -215,57 +215,57 @@ static uint8_t key_separator_col = _KEY01;  //  (_KEY01 .. _KEY37).     By defau
 | 
			
		|||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    /* Base */
 | 
			
		||||
    [_BASE] = LAYOUT(
 | 
			
		||||
            FN_MUTE,         MI_SUS,
 | 
			
		||||
            MI_BENDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,    MI_C_2, MI_D_2, MI_E_2,  MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            MI_BENDD,           MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
            FN_MUTE,         MI_SUST,
 | 
			
		||||
            MI_BNDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,    MI_C2, MI_D2, MI_E2,  MI_Fs2, MI_Ab2, MI_Bb2, MI_C3, MI_D3, MI_E3, MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            MI_BNDD,            MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2, MI_Db3, MI_Eb3, MI_F3,  MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* 1 octave on the left side is ch2, others are ch1 (normal) */
 | 
			
		||||
    [_SEPALEFTOCT] = LAYOUT(
 | 
			
		||||
            _______,          _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        SHIFT_L, SHIFT_R,     YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2,     MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            _______,             YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2,     MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
        SHIFT_L, SHIFT_R,     YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2,     MI_C3, MI_D3, MI_E3, MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            _______,             YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2,     MI_Db3, MI_Eb3, MI_F3,  MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* Half ch2, half ch1 (normal) */
 | 
			
		||||
    [_SEPAHALF] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3,       MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,    MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3,       MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,    MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* 2 octave on the left side is ch2, others are ch1 (normal) */
 | 
			
		||||
    [_SEPARIGHTOCT] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3,      MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,  YM_G_3, YM_A_3,  YM_B_3,     MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
        SHIFT_L, SHIFT_R,      YM_C_2, YM_D_2, YM_E_2,  YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3,      MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            _______,               YM_Db_2, YM_Eb_2, YM_F_2,  YM_G_2,  YM_A_2,  YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3,  YM_G_3, YM_A_3,  YM_B_3,     MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* TRANS   This layer must locate 1 layer below _FN layer. */
 | 
			
		||||
    [_TRANS] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        MI_TRNSD, MI_TRNSU,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
        MI_TRSD,  MI_TRSU,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______,               _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* Flip Base    SFIFTUP and SHIFT_L are swapped. */
 | 
			
		||||
    [_FLIPBASE] = LAYOUT(
 | 
			
		||||
            FN_MUTE,          MI_SUS,
 | 
			
		||||
            MI_BENDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,     MI_C_5, MI_Bb_4, MI_Ab_4,  MI_Fs_4, MI_E_4, MI_D_4, MI_C_4, MI_Bb_3, MI_Ab_3, MI_Fs_3, MI_E_3, MI_D_3, MI_C_3,  MI_Bb_2,  MI_Ab_2, MI_Fs_2, MI_E_2, MI_D_2, MI_C_2,
 | 
			
		||||
            MI_BENDD,           MI_B_4, MI_A_4, MI_G_4,  MI_F_4,  MI_Eb_4,  MI_Db_4, MI_B_3, MI_A_3, MI_G_3,  MI_F_3, MI_Eb_3,  MI_Db_3, MI_B_2, MI_A_2, MI_G_2,  MI_F_2,  MI_Eb_2,  MI_Db_2
 | 
			
		||||
            FN_MUTE,          MI_SUST,
 | 
			
		||||
            MI_BNDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,     MI_C5, MI_Bb4, MI_Ab4,  MI_Fs4, MI_E4, MI_D4, MI_C4, MI_Bb3, MI_Ab3, MI_Fs3, MI_E3, MI_D3, MI_C3,  MI_Bb2,  MI_Ab2, MI_Fs2, MI_E2, MI_D2, MI_C2,
 | 
			
		||||
            MI_BNDD,            MI_B4, MI_A4, MI_G4,  MI_F4,  MI_Eb4,  MI_Db4, MI_B3, MI_A3, MI_G3,  MI_F3, MI_Eb3,  MI_Db3, MI_B2, MI_A2, MI_G2,  MI_F2,  MI_Eb2,  MI_Db2
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* Flip Trans   This layer must locate 1 layer above _FLIPBASE layer.  MI_TRNSU and MI_TRNSD are swapped. */
 | 
			
		||||
    /* Flip Trans   This layer must locate 1 layer above _FLIPBASE layer.  MI_TRSU and MI_TRSD are swapped. */
 | 
			
		||||
    [_FLIPTRANS] = LAYOUT(
 | 
			
		||||
            _______,          _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        MI_TRNSU, MI_TRNSD,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
        MI_TRSU,  MI_TRSD,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______,               _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -293,8 +293,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
 | 
			
		||||
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_1
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
    default_layer_set(_LS_BASE);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,24 +54,24 @@ enum custom_keycodes {
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
static bool is_trans_mode = false;     //  By default, shift mode is chosen.
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    /* Base */
 | 
			
		||||
    [_BASE] = LAYOUT(
 | 
			
		||||
            FN_MUTE,         MI_SUS,
 | 
			
		||||
            MI_BENDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,    MI_C_2, MI_D_2, MI_E_2,  MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4,  MI_D_4,  MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
 | 
			
		||||
            MI_BENDD,           MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3, MI_A_3,  MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4,  MI_G_4,  MI_A_4,  MI_B_4
 | 
			
		||||
            FN_MUTE,         MI_SUST,
 | 
			
		||||
            MI_BNDU,
 | 
			
		||||
        SHIFT_L, SHIFT_R,    MI_C2, MI_D2, MI_E2,  MI_Fs2, MI_Ab2, MI_Bb2, MI_C3, MI_D3, MI_E3, MI_Fs3, MI_Ab3, MI_Bb3, MI_C4,  MI_D4,  MI_E4, MI_Fs4, MI_Ab4, MI_Bb4, MI_C5,
 | 
			
		||||
            MI_BNDD,            MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2, MI_Db3, MI_Eb3, MI_F3,  MI_G3, MI_A3,  MI_B3, MI_Db4, MI_Eb4, MI_F4,  MI_G4,  MI_A4,  MI_B4
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    /* TRANS   This layer must locate 1 layer below _FN layer. */
 | 
			
		||||
    [_TRANS] = LAYOUT(
 | 
			
		||||
            _______,           _______,
 | 
			
		||||
            _______,
 | 
			
		||||
        MI_TRNSD, MI_TRNSU,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
        MI_TRSD,  MI_TRSU,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______,               _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -102,8 +102,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
 | 
			
		||||
// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_1
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
    default_layer_set(_LS_BASE);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,10 +97,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
    // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
 | 
			
		||||
 | 
			
		||||
    [_MIDI] = LAYOUT(
 | 
			
		||||
                 MI_Ds_3, MI_E_3,  MI_F_3,  MI_Fs_3, MI_G_3,
 | 
			
		||||
                 MI_As_2, MI_B_2,  MI_C_3,  MI_Cs_3, MI_D_3,
 | 
			
		||||
                 MI_F_2,  MI_Fs_2, MI_G_2,  MI_Gs_2, TG(_MIDI),
 | 
			
		||||
        _______, MI_C_2,  MI_Cs_2, MI_D_2,  MI_Ds_2, MI_E_2
 | 
			
		||||
                 MI_Ds3, MI_E3,  MI_F3,  MI_Fs3, MI_G3,
 | 
			
		||||
                 MI_As2, MI_B2,  MI_C3,  MI_Cs3, MI_D3,
 | 
			
		||||
                 MI_F2,  MI_Fs2, MI_G2,  MI_Gs2, TG(_MIDI),
 | 
			
		||||
        _______, MI_C2,  MI_Cs2, MI_D2,  MI_Ds2, MI_E2
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    // MOUSE LAYER
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -88,11 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
 | 
			
		||||
  /* Keymap _MI: MIDI layer (Advanced)*/
 | 
			
		||||
  [_MI] = LAYOUT(
 | 
			
		||||
    TO_BASE,MI_VEL_1,MI_VEL_2,MI_VEL_3,MI_VEL_4,MI_VEL_5,MI_VEL_6,MI_VEL_7,MI_VEL_8,MI_VEL_9,MI_VEL_10,  MI_CHD,   MI_CHU, XXXXXXX, XXXXXXX,          XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX,   MI_Cs,   MI_Ds, XXXXXXX,   MI_Fs,   MI_Gs,   MI_As, XXXXXXX, MI_Cs_1,  MI_Ds_1, XXXXXXX,  MI_Fs_1, XXXXXXX,                   XXXXXXX,
 | 
			
		||||
     MI_MOD,    MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,  MI_C_1,  MI_D_1,   MI_E_1,  MI_F_1,   MI_G_1, XXXXXXX,
 | 
			
		||||
     MI_SUS, XXXXXXX, MI_OCTD, MI_OCTU,MI_MODSD,MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD,MI_TRNSU,MI_TRNS_0,  MI_SUS,          XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX,                 MI_ALLOFF, MI_ALLOFF,                   XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
 | 
			
		||||
    TO_BASE,  MI_VL1,  MI_VL2,  MI_VL3,  MI_VL4,  MI_VL5,  MI_VL6,  MI_VL7,  MI_VL8,  MI_VL9,  MI_VL10, MI_CHND,  MI_CHNU, XXXXXXX, XXXXXXX,          XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX,   MI_Cs,   MI_Ds, XXXXXXX,   MI_Fs,   MI_Gs,   MI_As, XXXXXXX, MI_Cs1,  MI_Ds1, XXXXXXX,  MI_Fs1, XXXXXXX,                   XXXXXXX,
 | 
			
		||||
     MI_MOD,    MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,  MI_C1,  MI_D1,   MI_E1,  MI_F1,   MI_G1, XXXXXXX,
 | 
			
		||||
    MI_SUST, XXXXXXX, MI_OCTD, MI_OCTU, MI_MODD, MI_MODU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  MI_TRSD, MI_TRSU,   MI_TR0, MI_SUST,          XXXXXXX,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   MI_AOFF, MI_AOFF,                    XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
 | 
			
		||||
#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
 | 
			
		||||
  /* Keymap _MI: MIDI layer (Basic)*/
 | 
			
		||||
  [_MI] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,10 +19,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
   * `-----------------------------------------------------------------------------------'
 | 
			
		||||
   */
 | 
			
		||||
  [0] = LAYOUT_ortho_4x12(
 | 
			
		||||
      MI_C_4, MI_Cs_4, MI_D_4, MI_Ds_4, MI_E_4, MI_F_4, MI_Fs_4, MI_G_4, MI_Gs_4, MI_A_4, MI_As_4, MI_B_4,
 | 
			
		||||
      MI_C_3, MI_Cs_3, MI_D_3, MI_Ds_3, MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, MI_Gs_3, MI_A_3, MI_As_3, MI_B_3,
 | 
			
		||||
      MI_C_2, MI_Cs_2, MI_D_2, MI_Ds_2, MI_E_2, MI_F_2, MI_Fs_2, MI_G_2, MI_Gs_2, MI_A_2, MI_As_2, MI_B_2,
 | 
			
		||||
      MI_C_1, MI_Cs_1, MI_D_1, MI_Ds_1, MI_E_1, MI_F_1, MI_Fs_1, MI_G_1, MI_Gs_1, MI_A_1, MI_As_1, MI_B_1
 | 
			
		||||
      MI_C4, MI_Cs4, MI_D4, MI_Ds4, MI_E4, MI_F4, MI_Fs4, MI_G4, MI_Gs4, MI_A4, MI_As4, MI_B4,
 | 
			
		||||
      MI_C3, MI_Cs3, MI_D3, MI_Ds3, MI_E3, MI_F3, MI_Fs3, MI_G3, MI_Gs3, MI_A3, MI_As3, MI_B3,
 | 
			
		||||
      MI_C2, MI_Cs2, MI_D2, MI_Ds2, MI_E2, MI_F2, MI_Fs2, MI_G2, MI_Gs2, MI_A2, MI_As2, MI_B2,
 | 
			
		||||
      MI_C1, MI_Cs1, MI_D1, MI_Ds1, MI_E1, MI_F1, MI_Fs1, MI_G1, MI_Gs1, MI_A1, MI_As1, MI_B1
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,11 +45,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
   * `------------------------------------------------------------------------'
 | 
			
		||||
   */
 | 
			
		||||
  [_ML] = LAYOUT_60_ansi(
 | 
			
		||||
    TG(_ML), MI_VEL_1, MI_VEL_2, MI_VEL_3,  MI_VEL_4, MI_VEL_5, MI_VEL_6, MI_VEL_7, MI_VEL_8, MI_VEL_9, MI_VEL_10, XXXXXXX,   XXXXXXX, XXXXXXX,
 | 
			
		||||
    MI_CHU,  XXXXXXX,  MI_Cs,    MI_Ds,     XXXXXXX,  MI_Fs,    MI_Gs,    MI_As,    XXXXXXX,  MI_Cs_1,  MI_Ds_1,   XXXXXXX,   XXXXXXX, XXXXXXX,
 | 
			
		||||
    MI_MOD,  MI_C,     MI_D,     MI_E,      MI_F,     MI_G,     MI_A,     MI_B,     MI_C_1,   MI_D_1,   MI_E_1,    MI_F_1,             _______,
 | 
			
		||||
    MI_SUS,            MI_OCTD,  MI_OCTU,   MI_MODSD, MI_MODSU, XXXXXXX,  XXXXXXX,  XXXXXXX,  MI_TRNSD, MI_TRNSU,  MI_TRNS_0,          MI_SUS,
 | 
			
		||||
    _______, _______,  _______,                       MI_ALLOFF,                                        _______,   _______,   _______, _______
 | 
			
		||||
    TG(_ML), MI_VL1,   MI_VL2,   MI_VL3,    MI_VL4,   MI_VL5,   MI_VL6,   MI_VL7,   MI_VL8,   MI_VL9,   MI_VL10,   XXXXXXX,   XXXXXXX, XXXXXXX,
 | 
			
		||||
    MI_CHU,  XXXXXXX,  MI_Cs,    MI_Ds,     XXXXXXX,  MI_Fs,    MI_Gs,    MI_As,    XXXXXXX,  MI_Cs1,  MI_Ds1,   XXXXXXX,   XXXXXXX, XXXXXXX,
 | 
			
		||||
    MI_MOD,  MI_C,     MI_D,     MI_E,      MI_F,     MI_G,     MI_A,     MI_B,     MI_C1,   MI_D1,   MI_E1,    MI_F1,             _______,
 | 
			
		||||
    MI_SUST,           MI_OCTD,  MI_OCTU,   MI_MODD,  MI_MODU,  XXXXXXX,  XXXXXXX,  XXXXXXX,  MI_TRSD,  MI_TRSU,   MI_TR0,             MI_SUST,
 | 
			
		||||
    _______, _______,  _______,                       MI_AOFF,                                          _______,   _______,   _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
  #elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
 | 
			
		||||
  /* Keymap _ML: MIDI Layer (Advanced)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@
 | 
			
		|||
#define ADJ_EIS  LT(_ADJUST,KC_LNG2)
 | 
			
		||||
#define MIS_KAN  LT(_MISC,KC_LNG1)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -205,10 +205,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* fake B-system */
 | 
			
		||||
| 
						 | 
				
			
			@ -219,10 +219,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
    MI_Ab_2,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Gb_3, MI_A_3, MI_C_4,  MI_Eb_4, MI_Gb_4, MI_A_4, MI_C_5,  MI_Eb_5, MI_Gb_5,     _______,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3, MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4, MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5
 | 
			
		||||
    MI_Ab2,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Gb3, MI_A3, MI_C4,  MI_Eb4, MI_Gb4, MI_A4, MI_C5,  MI_Eb5, MI_Gb5,     _______,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3, MI_Bb3, MI_Db4, MI_E4,  MI_G4, MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3, MI_Ab3, MI_B3,  MI_D4,  MI_F4, MI_Ab4, MI_B4,  MI_D5,  MI_F5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* BASS2row */
 | 
			
		||||
| 
						 | 
				
			
			@ -233,38 +233,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_Dbm,    MI_CH_Abm,    MI_CH_Ebm,    MI_CH_Bbm,    MI_CH_Fm,    MI_CH_Cm,    MI_CH_Gm,    MI_CH_Dm,    MI_CH_Am,    MI_CH_Em,    MI_CH_Bm,    MI_CH_Fsm,
 | 
			
		||||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    _______,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    _______,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* C-system entirely */
 | 
			
		||||
  [_C_SYSTEM_ENTIRELY] = LAYOUT(
 | 
			
		||||
    MI_BENDU, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2,
 | 
			
		||||
      MI_BENDD, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D_1,  MI_F_1,  MI_Ab_1, MI_B_1,  MI_D_2,  MI_F_2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2, MI_E_2,  MI_G_2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2, MI_Fs_2, MI_A_2,
 | 
			
		||||
    MI_BNDU, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2,
 | 
			
		||||
      MI_BNDD, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D1,  MI_F1,  MI_Ab1, MI_B1,  MI_D2,  MI_F2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2, MI_E2,  MI_G2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2, MI_Fs2, MI_A2,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* Chromatone */
 | 
			
		||||
  [_CHROMATONE] = LAYOUT(
 | 
			
		||||
    MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,
 | 
			
		||||
      MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,
 | 
			
		||||
        MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,  MI_Db_2,
 | 
			
		||||
          MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,  MI_D_2,
 | 
			
		||||
            MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,  MI_Db_2, MI_Eb_2,
 | 
			
		||||
    MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,
 | 
			
		||||
      MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1, MI_C2,
 | 
			
		||||
        MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,  MI_Db2,
 | 
			
		||||
          MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1, MI_C2,  MI_D2,
 | 
			
		||||
            MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,  MI_Db2, MI_Eb2,
 | 
			
		||||
 | 
			
		||||
    MI_C_2,
 | 
			
		||||
      MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3,  MI_A_3,  MI_B_3,    FN_MUTE,
 | 
			
		||||
    MI_C_2,  MI_D_2,  MI_E_2,  MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3,  MI_D_3,  MI_E_3,  MI_Gb_3, MI_Ab_3, MI_Bb_3, MI_C_4,
 | 
			
		||||
      MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3,  MI_A_3,  MI_B_3
 | 
			
		||||
    MI_C2,
 | 
			
		||||
      MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3, MI_Eb3, MI_F3,  MI_G3,  MI_A3,  MI_B3,    FN_MUTE,
 | 
			
		||||
    MI_C2,  MI_D2,  MI_E2,  MI_Gb2, MI_Ab2, MI_Bb2, MI_C3,  MI_D3,  MI_E3,  MI_Gb3, MI_Ab3, MI_Bb3, MI_C4,
 | 
			
		||||
      MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3, MI_Eb3, MI_F3,  MI_G3,  MI_A3,  MI_B3
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_CFLIP_BASS2ROW] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			@ -274,10 +274,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_Dbm,    MI_CH_Abm,    MI_CH_Ebm,    MI_CH_Bbm,    MI_CH_Fm,    MI_CH_Cm,    MI_CH_Gm,    MI_CH_Dm,    MI_CH_Am,    MI_CH_Em,    MI_CH_Bm,    MI_CH_Fsm,
 | 
			
		||||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
    MI_G_5,
 | 
			
		||||
      MI_F_5,  MI_D_5,  MI_B_4,  MI_Ab_4, MI_F_4,  MI_D_4,  MI_B_3,  MI_Ab_3, MI_F_3,  MI_D_3,  MI_B_2,  MI_Ab_2,   FN_MUTE,
 | 
			
		||||
    MI_Fs_5, MI_Eb_5, MI_C_5,  MI_A_4,  MI_Fs_4, MI_Eb_4, MI_C_4,  MI_A_3,  MI_Fs_3, MI_Eb_3, MI_C_3,  MI_A_2,  MI_Fs_2,
 | 
			
		||||
      MI_E_5,  MI_Db_5, MI_Bb_4, MI_G_4,  MI_E_4,  MI_Db_4, MI_Bb_3, MI_G_3,  MI_E_3,  MI_Db_3, MI_Bb_2, MI_G_2
 | 
			
		||||
    MI_G5,
 | 
			
		||||
      MI_F5,  MI_D5,  MI_B4,  MI_Ab4, MI_F4,  MI_D4,  MI_B3,  MI_Ab3, MI_F3,  MI_D3,  MI_B2,  MI_Ab2,   FN_MUTE,
 | 
			
		||||
    MI_Fs5, MI_Eb5, MI_C5,  MI_A4,  MI_Fs4, MI_Eb4, MI_C4,  MI_A3,  MI_Fs3, MI_Eb3, MI_C3,  MI_A2,  MI_Fs2,
 | 
			
		||||
      MI_E5,  MI_Db5, MI_Bb4, MI_G4,  MI_E4,  MI_Db4, MI_Bb3, MI_G3,  MI_E3,  MI_Db3, MI_Bb2, MI_G2
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +332,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    XXXXXXX,
 | 
			
		||||
      MI_OCT_N2, MI_OCT_N1, MI_OCT_0, MI_OCT_1, MI_OCT_2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______,
 | 
			
		||||
      MI_OCN2, MI_OCN1, MI_OC0,  MI_OC1,  MI_OC2,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______,
 | 
			
		||||
    CSYSTEM, BSYSTEM,  CNTBASC,  CSYSALL,  CHRTONE,  CFLIP2B, XXXXXXX, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG,
 | 
			
		||||
      XXXXXXX,   TGLBASS,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH
 | 
			
		||||
  )
 | 
			
		||||
| 
						 | 
				
			
			@ -428,8 +428,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		|||
#endif  //  RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -438,7 +438,7 @@ void eeconfig_init_user(void) {
 | 
			
		|||
    midi_init();
 | 
			
		||||
    my_init();
 | 
			
		||||
 | 
			
		||||
    // Used to set octave to MI_OCT_0
 | 
			
		||||
    // Used to set octave to 0
 | 
			
		||||
    midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
    // UNISON flags
 | 
			
		||||
| 
						 | 
				
			
			@ -646,7 +646,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, IS_SINGLE_BASS());
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
            switch_keylight_color4bass(record, keylocation);
 | 
			
		||||
| 
						 | 
				
			
			@ -654,7 +654,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -663,7 +663,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -672,7 +672,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -681,7 +681,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@
 | 
			
		|||
#define ADJ_EIS  LT(_ADJUST,KC_LNG2)
 | 
			
		||||
#define MIS_KAN  LT(_MISC,KC_LNG1)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -206,10 +206,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* fake B-system */
 | 
			
		||||
| 
						 | 
				
			
			@ -220,10 +220,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
    MI_Ab_2,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Gb_3, MI_A_3, MI_C_4,  MI_Eb_4, MI_Gb_4, MI_A_4, MI_C_5,  MI_Eb_5, MI_Gb_5,     _______,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3, MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4, MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5
 | 
			
		||||
    MI_Ab2,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Gb3, MI_A3, MI_C4,  MI_Eb4, MI_Gb4, MI_A4, MI_C5,  MI_Eb5, MI_Gb5,     _______,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3, MI_Bb3, MI_Db4, MI_E4,  MI_G4, MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3, MI_Ab3, MI_B3,  MI_D4,  MI_F4, MI_Ab4, MI_B4,  MI_D5,  MI_F5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* BASS2row */
 | 
			
		||||
| 
						 | 
				
			
			@ -234,52 +234,52 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_Dbm,    MI_CH_Abm,    MI_CH_Ebm,    MI_CH_Bbm,    MI_CH_Fm,    MI_CH_Cm,    MI_CH_Gm,    MI_CH_Dm,    MI_CH_Am,    MI_CH_Em,    MI_CH_Bm,    MI_CH_Fsm,
 | 
			
		||||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    _______,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    _______,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* C-system entirely */
 | 
			
		||||
  [_C_SYSTEM_ENTIRELY] = LAYOUT(
 | 
			
		||||
    MI_BENDU, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2,
 | 
			
		||||
      MI_BENDD, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D_1,  MI_F_1,  MI_Ab_1, MI_B_1,  MI_D_2,  MI_F_2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2, MI_E_2,  MI_G_2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2, MI_Fs_2, MI_A_2,
 | 
			
		||||
    MI_BNDU, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2,
 | 
			
		||||
      MI_BNDD, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D1,  MI_F1,  MI_Ab1, MI_B1,  MI_D2,  MI_F2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2, MI_E2,  MI_G2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2, MI_Fs2, MI_A2,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* C-system free bass */
 | 
			
		||||
  [_C_SYSTEM_FREEBASS] = LAYOUT(
 | 
			
		||||
    MI_Db_3,  MI_Bb_2,  MI_G_2,   MI_E_2,   MI_Db_2,  MI_Bb_1, MI_G_1,   MI_E_1,  MI_Db_1,  MI_Bb,  MI_G,  MI_E,
 | 
			
		||||
      MI_C_3,   MI_A_2,   MI_Fs_2,  MI_Eb_2,  MI_C_2,   MI_A_1,  MI_Fs_1,  MI_Eb_1,  MI_C_1,  MI_A,   MI_Fs, MI_Eb,
 | 
			
		||||
        MI_B_2,   MI_Ab_2,  MI_F_2,   MI_D_2,   MI_B_1,  MI_Ab_1,   MI_F_1,  MI_D_1,   MI_B,    MI_Ab,  MI_F,  MI_D,
 | 
			
		||||
          MI_Bb_2, MI_G_2,   MI_E_2,   MI_Db_2,  MI_Bb_1, MI_G_1,    MI_E_1,  MI_Db_1,   MI_Bb,  MI_G,   MI_E,  MI_Db,
 | 
			
		||||
            MI_A_2,  MI_Fs_2,  MI_Eb_2,  MI_C_2,   MI_A_1,  MI_Fs_1,   MI_Eb_1,  MI_C_1,   MI_A,   MI_Fs,  MI_Eb, MI_C,
 | 
			
		||||
    MI_Db3,  MI_Bb2,  MI_G2,   MI_E2,   MI_Db2,  MI_Bb1, MI_G1,   MI_E1,  MI_Db1,  MI_Bb,  MI_G,  MI_E,
 | 
			
		||||
      MI_C3,   MI_A2,   MI_Fs2,  MI_Eb2,  MI_C2,   MI_A1,  MI_Fs1,  MI_Eb1,  MI_C1,  MI_A,   MI_Fs, MI_Eb,
 | 
			
		||||
        MI_B2,   MI_Ab2,  MI_F2,   MI_D2,   MI_B1,  MI_Ab1,   MI_F1,  MI_D1,   MI_B,    MI_Ab,  MI_F,  MI_D,
 | 
			
		||||
          MI_Bb2, MI_G2,   MI_E2,   MI_Db2,  MI_Bb1, MI_G1,    MI_E1,  MI_Db1,   MI_Bb,  MI_G,   MI_E,  MI_Db,
 | 
			
		||||
            MI_A2,  MI_Fs2,  MI_Eb2,  MI_C2,   MI_A1,  MI_Fs1,   MI_Eb1,  MI_C1,   MI_A,   MI_Fs,  MI_Eb, MI_C,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* Chromatone */
 | 
			
		||||
  [_CHROMATONE] = LAYOUT(
 | 
			
		||||
    MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,
 | 
			
		||||
      MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,
 | 
			
		||||
        MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,  MI_Db_2,
 | 
			
		||||
          MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,  MI_D_2,
 | 
			
		||||
            MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,  MI_Db_2, MI_Eb_2,
 | 
			
		||||
    MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,
 | 
			
		||||
      MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1, MI_C2,
 | 
			
		||||
        MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,  MI_Db2,
 | 
			
		||||
          MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1, MI_C2,  MI_D2,
 | 
			
		||||
            MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,  MI_Db2, MI_Eb2,
 | 
			
		||||
 | 
			
		||||
    MI_C_2,
 | 
			
		||||
      MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3,  MI_A_3,  MI_B_3,    FN_MUTE,
 | 
			
		||||
    MI_C_2,  MI_D_2,  MI_E_2,  MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3,  MI_D_3,  MI_E_3,  MI_Gb_3, MI_Ab_3, MI_Bb_3, MI_C_4,
 | 
			
		||||
      MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3,  MI_A_3,  MI_B_3
 | 
			
		||||
    MI_C2,
 | 
			
		||||
      MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3, MI_Eb3, MI_F3,  MI_G3,  MI_A3,  MI_B3,    FN_MUTE,
 | 
			
		||||
    MI_C2,  MI_D2,  MI_E2,  MI_Gb2, MI_Ab2, MI_Bb2, MI_C3,  MI_D3,  MI_E3,  MI_Gb3, MI_Ab3, MI_Bb3, MI_C4,
 | 
			
		||||
      MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3, MI_Eb3, MI_F3,  MI_G3,  MI_A3,  MI_B3
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_CFLIP_BASS2ROW] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			@ -289,10 +289,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_Dbm,    MI_CH_Abm,    MI_CH_Ebm,    MI_CH_Bbm,    MI_CH_Fm,    MI_CH_Cm,    MI_CH_Gm,    MI_CH_Dm,    MI_CH_Am,    MI_CH_Em,    MI_CH_Bm,    MI_CH_Fsm,
 | 
			
		||||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
    MI_G_5,
 | 
			
		||||
      MI_F_5,  MI_D_5,  MI_B_4,  MI_Ab_4, MI_F_4,  MI_D_4,  MI_B_3,  MI_Ab_3, MI_F_3,  MI_D_3,  MI_B_2,  MI_Ab_2,   FN_MUTE,
 | 
			
		||||
    MI_Fs_5, MI_Eb_5, MI_C_5,  MI_A_4,  MI_Fs_4, MI_Eb_4, MI_C_4,  MI_A_3,  MI_Fs_3, MI_Eb_3, MI_C_3,  MI_A_2,  MI_Fs_2,
 | 
			
		||||
      MI_E_5,  MI_Db_5, MI_Bb_4, MI_G_4,  MI_E_4,  MI_Db_4, MI_Bb_3, MI_G_3,  MI_E_3,  MI_Db_3, MI_Bb_2, MI_G_2
 | 
			
		||||
    MI_G5,
 | 
			
		||||
      MI_F5,  MI_D5,  MI_B4,  MI_Ab4, MI_F4,  MI_D4,  MI_B3,  MI_Ab3, MI_F3,  MI_D3,  MI_B2,  MI_Ab2,   FN_MUTE,
 | 
			
		||||
    MI_Fs5, MI_Eb5, MI_C5,  MI_A4,  MI_Fs4, MI_Eb4, MI_C4,  MI_A3,  MI_Fs3, MI_Eb3, MI_C3,  MI_A2,  MI_Fs2,
 | 
			
		||||
      MI_E5,  MI_Db5, MI_Bb4, MI_G4,  MI_E4,  MI_Db4, MI_Bb3, MI_G3,  MI_E3,  MI_Db3, MI_Bb2, MI_G2
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -347,7 +347,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    XXXXXXX,
 | 
			
		||||
      MI_OCT_N2, MI_OCT_N1, MI_OCT_0, MI_OCT_1, MI_OCT_2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______,
 | 
			
		||||
      MI_OCN2, MI_OCN1, MI_OC0,  MI_OC1,  MI_OC2,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______,
 | 
			
		||||
    CSYSTEM, BSYSTEM,  CNTBASC,  CSYSALL,  CHRTONE,  CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG,
 | 
			
		||||
      XXXXXXX,   TGLBASS,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH
 | 
			
		||||
  )
 | 
			
		||||
| 
						 | 
				
			
			@ -442,8 +442,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		|||
#endif  //  RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -452,7 +452,7 @@ void eeconfig_init_user(void) {
 | 
			
		|||
    midi_init();
 | 
			
		||||
    my_init();
 | 
			
		||||
 | 
			
		||||
    // Used to set octave to MI_OCT_0
 | 
			
		||||
    // Used to set octave to 0
 | 
			
		||||
    midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
    // UNISON flags
 | 
			
		||||
| 
						 | 
				
			
			@ -661,7 +661,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, IS_SINGLE_BASS());
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
            switch_keylight_color4bass(record, keylocation);
 | 
			
		||||
| 
						 | 
				
			
			@ -669,7 +669,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -678,7 +678,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -687,7 +687,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -696,7 +696,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -156,10 +156,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -200,8 +200,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    //  Set otave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			@ -227,30 +227,30 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -156,11 +156,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Db_2,      MI_E_2,       MI_G_2,       MI_Bb_2,      MI_Db_3,     MI_E_3,      MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,
 | 
			
		||||
      MI_Eb_2,      MI_Fs_2,      MI_A_2,       MI_C_3,       MI_Eb_3,     MI_Fs_3,     MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,
 | 
			
		||||
        MI_F_2,       MI_Ab_2,      MI_B_2,       MI_D_3,       MI_F_3,      MI_Ab_3,     MI_B_3,      MI_D_4,      MI_F_4,      MI_Ab_4,     MI_B_4,      MI_D_5,
 | 
			
		||||
          MI_G_2,       MI_Bb_2,      MI_Db_3,      MI_E_3,       MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,     MI_Db_5,     MI_E_5,
 | 
			
		||||
            MI_A_2,       MI_C_3,       MI_Eb_3,      MI_Fs_3,      MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,      MI_Eb_5,     FN_MUTE
 | 
			
		||||
    MI_Db2,      MI_E2,       MI_G2,       MI_Bb2,      MI_Db3,     MI_E3,      MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,
 | 
			
		||||
      MI_Eb2,      MI_Fs2,      MI_A2,       MI_C3,       MI_Eb3,     MI_Fs3,     MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,
 | 
			
		||||
        MI_F2,       MI_Ab2,      MI_B2,       MI_D3,       MI_F3,      MI_Ab3,     MI_B3,      MI_D4,      MI_F4,      MI_Ab4,     MI_B4,      MI_D5,
 | 
			
		||||
          MI_G2,       MI_Bb2,      MI_Db3,      MI_E3,       MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,     MI_Db5,     MI_E5,
 | 
			
		||||
            MI_A2,       MI_C3,       MI_Eb3,      MI_Fs3,      MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,      MI_Eb5,     FN_MUTE
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -203,8 +203,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    //  Set otave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			@ -230,30 +230,30 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -168,11 +168,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Db_2,      MI_E_2,       MI_G_2,       MI_Bb_2,      MI_Db_3,     MI_E_3,      MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,
 | 
			
		||||
      MI_Eb_2,      MI_Fs_2,      MI_A_2,       MI_C_3,       MI_Eb_3,     MI_Fs_3,     MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,
 | 
			
		||||
        MI_F_2,       MI_Ab_2,      MI_B_2,       MI_D_3,       MI_F_3,      MI_Ab_3,     MI_B_3,      MI_D_4,      MI_F_4,      MI_Ab_4,     MI_B_4,      MI_D_5,
 | 
			
		||||
          MI_G_2,       MI_Bb_2,      MI_Db_3,      MI_E_3,       MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,     MI_Db_5,     MI_E_5,
 | 
			
		||||
            MI_A_2,       MI_C_3,       MI_Eb_3,      MI_Fs_3,      MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,      MI_Eb_5,     FN_MUTE
 | 
			
		||||
    MI_Db2,      MI_E2,       MI_G2,       MI_Bb2,      MI_Db3,     MI_E3,      MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,
 | 
			
		||||
      MI_Eb2,      MI_Fs2,      MI_A2,       MI_C3,       MI_Eb3,     MI_Fs3,     MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,
 | 
			
		||||
        MI_F2,       MI_Ab2,      MI_B2,       MI_D3,       MI_F3,      MI_Ab3,     MI_B3,      MI_D4,      MI_F4,      MI_Ab4,     MI_B4,      MI_D5,
 | 
			
		||||
          MI_G2,       MI_Bb2,      MI_Db3,      MI_E3,       MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,     MI_Db5,     MI_E5,
 | 
			
		||||
            MI_A2,       MI_C3,       MI_Eb3,      MI_Fs3,      MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,      MI_Eb5,     FN_MUTE
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* BASS2row */
 | 
			
		||||
| 
						 | 
				
			
			@ -184,41 +184,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    MI_Db_2,      MI_E_2,       MI_G_2,       MI_Bb_2,      MI_Db_3,     MI_E_3,      MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,
 | 
			
		||||
      MI_Eb_2,      MI_Fs_2,      MI_A_2,       MI_C_3,       MI_Eb_3,     MI_Fs_3,     MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,
 | 
			
		||||
        MI_F_2,       MI_Ab_2,      MI_B_2,       MI_D_3,       MI_F_3,      MI_Ab_3,     MI_B_3,      MI_D_4,      MI_F_4,      MI_Ab_4,     MI_B_4,      MI_D_5,
 | 
			
		||||
          MI_G_2,       MI_Bb_2,      MI_Db_3,      MI_E_3,       MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,     MI_Db_5,     MI_E_5,
 | 
			
		||||
            MI_A_2,       MI_C_3,       MI_Eb_3,      MI_Fs_3,      MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,      MI_Eb_5,     FN_MUTE
 | 
			
		||||
    MI_Db2,      MI_E2,       MI_G2,       MI_Bb2,      MI_Db3,     MI_E3,      MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,
 | 
			
		||||
      MI_Eb2,      MI_Fs2,      MI_A2,       MI_C3,       MI_Eb3,     MI_Fs3,     MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,
 | 
			
		||||
        MI_F2,       MI_Ab2,      MI_B2,       MI_D3,       MI_F3,      MI_Ab3,     MI_B3,      MI_D4,      MI_F4,      MI_Ab4,     MI_B4,      MI_D5,
 | 
			
		||||
          MI_G2,       MI_Bb2,      MI_Db3,      MI_E3,       MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,     MI_Db5,     MI_E5,
 | 
			
		||||
            MI_A2,       MI_C3,       MI_Eb3,      MI_Fs3,      MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,      MI_Eb5,     FN_MUTE
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* C-system entirely */
 | 
			
		||||
  [_C_SYSTEM_ENTIRELY] = LAYOUT_giabarinaix2(
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2,
 | 
			
		||||
      XXXXXXX, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D_1,  MI_F_1,  MI_Ab_1, MI_B_1,  MI_D_2,  MI_F_2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2, MI_E_2,  MI_G_2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2, MI_Fs_2, MI_A_2,
 | 
			
		||||
    XXXXXXX, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2,
 | 
			
		||||
      XXXXXXX, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D1,  MI_F1,  MI_Ab1, MI_B1,  MI_D2,  MI_F2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2, MI_E2,  MI_G2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2, MI_Fs2, MI_A2,
 | 
			
		||||
 | 
			
		||||
    MI_E_2,  MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,   MI_G_4, MI_Bb_4, MI_Db_5,
 | 
			
		||||
      MI_Fs_2, MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4,  MI_A_4, MI_C_5,  MI_Eb_5,
 | 
			
		||||
        MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,
 | 
			
		||||
          MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
            MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5,  FN_MUTE
 | 
			
		||||
    MI_E2,  MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,   MI_G4, MI_Bb4, MI_Db5,
 | 
			
		||||
      MI_Fs2, MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4,  MI_A4, MI_C5,  MI_Eb5,
 | 
			
		||||
        MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,
 | 
			
		||||
          MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
            MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5,  FN_MUTE
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* Chromatone */
 | 
			
		||||
  [_CHROMATONE] = LAYOUT_giabarinaix2(
 | 
			
		||||
    XXXXXXX, XXXXXXX, MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1,  MI_Eb_1,  MI_F_1,   MI_G_1,
 | 
			
		||||
        XXXXXXX,  MI_C,    MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1,
 | 
			
		||||
             XXXXXXX, MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1,  MI_Eb_1,  MI_F_1,   MI_G_1,   MI_A_1,
 | 
			
		||||
                  MI_C,    MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1,
 | 
			
		||||
                      MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1,  MI_Eb_1,  MI_F_1,   MI_G_1,   MI_A_1,  MI_B_1,
 | 
			
		||||
    XXXXXXX, XXXXXXX, MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1,  MI_Eb1,  MI_F1,   MI_G1,
 | 
			
		||||
        XXXXXXX,  MI_C,    MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1,
 | 
			
		||||
             XXXXXXX, MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1,  MI_Eb1,  MI_F1,   MI_G1,   MI_A1,
 | 
			
		||||
                  MI_C,    MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1,
 | 
			
		||||
                      MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1,  MI_Eb1,  MI_F1,   MI_G1,   MI_A1,  MI_B1,
 | 
			
		||||
 | 
			
		||||
    MI_A_1,  MI_B_1, MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3,  MI_Eb_3,  MI_F_3,   MI_G_3,
 | 
			
		||||
         MI_Bb_1, MI_C_2,  MI_D_2,  MI_E_2,  MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3,  MI_D_3,  MI_E_3,  MI_Gb_3, MI_Ab_3,
 | 
			
		||||
             MI_B_1, MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3,  MI_Eb_3,  MI_F_3,   MI_G_3,   MI_A_3,
 | 
			
		||||
                  MI_C_2,  MI_D_2,  MI_E_2,  MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3,  MI_D_3,  MI_E_3,  MI_Gb_3, MI_Ab_3, MI_Bb_3,
 | 
			
		||||
                     MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3,  MI_Eb_3,  MI_F_3,   MI_G_3,   MI_A_3,  FN_MUTE
 | 
			
		||||
    MI_A1,  MI_B1, MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3,  MI_Eb3,  MI_F3,   MI_G3,
 | 
			
		||||
         MI_Bb1, MI_C2,  MI_D2,  MI_E2,  MI_Gb2, MI_Ab2, MI_Bb2, MI_C3,  MI_D3,  MI_E3,  MI_Gb3, MI_Ab3,
 | 
			
		||||
             MI_B1, MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3,  MI_Eb3,  MI_F3,   MI_G3,   MI_A3,
 | 
			
		||||
                  MI_C2,  MI_D2,  MI_E2,  MI_Gb2, MI_Ab2, MI_Bb2, MI_C3,  MI_D3,  MI_E3,  MI_Gb3, MI_Ab3, MI_Bb3,
 | 
			
		||||
                     MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3,  MI_Eb3,  MI_F3,   MI_G3,   MI_A3,  FN_MUTE
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -291,8 +291,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		|||
 | 
			
		||||
#endif  //  RGBLIGHT_ENABLE
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    //  Set otave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			@ -404,14 +404,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
            switch_keylight_color4bass(record, keylocation);
 | 
			
		||||
#endif
 | 
			
		||||
            break;
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -419,7 +419,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
#endif
 | 
			
		||||
            break;
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -427,7 +427,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
#endif
 | 
			
		||||
            break;
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -435,7 +435,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
#endif
 | 
			
		||||
            break;
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@
 | 
			
		|||
#define ADJ_EIS  LT(_ADJUST,KC_LNG2)
 | 
			
		||||
#define MIS_KAN  LT(_MISC,KC_LNG1)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -206,10 +206,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* fake B-system */
 | 
			
		||||
| 
						 | 
				
			
			@ -220,10 +220,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
            _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
 | 
			
		||||
    MI_Ab_2,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Gb_3, MI_A_3, MI_C_4,  MI_Eb_4, MI_Gb_4, MI_A_4, MI_C_5,  MI_Eb_5, MI_Gb_5,     _______,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3, MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4, MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5
 | 
			
		||||
    MI_Ab2,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Gb3, MI_A3, MI_C4,  MI_Eb4, MI_Gb4, MI_A4, MI_C5,  MI_Eb5, MI_Gb5,     _______,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3, MI_Bb3, MI_Db4, MI_E4,  MI_G4, MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3, MI_Ab3, MI_B3,  MI_D4,  MI_F4, MI_Ab4, MI_B4,  MI_D5,  MI_F5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* BASS2row */
 | 
			
		||||
| 
						 | 
				
			
			@ -234,52 +234,52 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_Dbm,    MI_CH_Abm,    MI_CH_Ebm,    MI_CH_Bbm,    MI_CH_Fm,    MI_CH_Cm,    MI_CH_Gm,    MI_CH_Dm,    MI_CH_Am,    MI_CH_Em,    MI_CH_Bm,    MI_CH_Fsm,
 | 
			
		||||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    _______,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    _______,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* C-system entirely */
 | 
			
		||||
  [_C_SYSTEM_ENTIRELY] = LAYOUT(
 | 
			
		||||
    MI_BENDU, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2,
 | 
			
		||||
      MI_BENDD, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D_1,  MI_F_1,  MI_Ab_1, MI_B_1,  MI_D_2,  MI_F_2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db_1, MI_E_1,  MI_G_1,  MI_Bb_1, MI_Db_2, MI_E_2,  MI_G_2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C_1,  MI_Eb_1, MI_Fs_1, MI_A_1,  MI_C_2,  MI_Eb_2, MI_Fs_2, MI_A_2,
 | 
			
		||||
    MI_BNDU, XXXXXXX, XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2,
 | 
			
		||||
      MI_BNDD, XXXXXXX, MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2,
 | 
			
		||||
        XXXXXXX, XXXXXXX, MI_D,    MI_F,    MI_Ab,   MI_B,    MI_D1,  MI_F1,  MI_Ab1, MI_B1,  MI_D2,  MI_F2,
 | 
			
		||||
          XXXXXXX, MI_Db,   MI_E,    MI_G,    MI_Bb,   MI_Db1, MI_E1,  MI_G1,  MI_Bb1, MI_Db2, MI_E2,  MI_G2,
 | 
			
		||||
            MI_C,    MI_Eb,   MI_Fs,   MI_A,    MI_C1,  MI_Eb1, MI_Fs1, MI_A1,  MI_C2,  MI_Eb2, MI_Fs2, MI_A2,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* C-system free bass */
 | 
			
		||||
  [_C_SYSTEM_FREEBASS] = LAYOUT(
 | 
			
		||||
    MI_Db_3,  MI_Bb_2,  MI_G_2,   MI_E_2,   MI_Db_2,  MI_Bb_1, MI_G_1,   MI_E_1,  MI_Db_1,  MI_Bb,  MI_G,  MI_E,
 | 
			
		||||
      MI_C_3,   MI_A_2,   MI_Fs_2,  MI_Eb_2,  MI_C_2,   MI_A_1,  MI_Fs_1,  MI_Eb_1,  MI_C_1,  MI_A,   MI_Fs, MI_Eb,
 | 
			
		||||
        MI_B_2,   MI_Ab_2,  MI_F_2,   MI_D_2,   MI_B_1,  MI_Ab_1,   MI_F_1,  MI_D_1,   MI_B,    MI_Ab,  MI_F,  MI_D,
 | 
			
		||||
          MI_Bb_2, MI_G_2,   MI_E_2,   MI_Db_2,  MI_Bb_1, MI_G_1,    MI_E_1,  MI_Db_1,   MI_Bb,  MI_G,   MI_E,  MI_Db,
 | 
			
		||||
            MI_A_2,  MI_Fs_2,  MI_Eb_2,  MI_C_2,   MI_A_1,  MI_Fs_1,   MI_Eb_1,  MI_C_1,   MI_A,   MI_Fs,  MI_Eb, MI_C,
 | 
			
		||||
    MI_Db3,  MI_Bb2,  MI_G2,   MI_E2,   MI_Db2,  MI_Bb1, MI_G1,   MI_E1,  MI_Db1,  MI_Bb,  MI_G,  MI_E,
 | 
			
		||||
      MI_C3,   MI_A2,   MI_Fs2,  MI_Eb2,  MI_C2,   MI_A1,  MI_Fs1,  MI_Eb1,  MI_C1,  MI_A,   MI_Fs, MI_Eb,
 | 
			
		||||
        MI_B2,   MI_Ab2,  MI_F2,   MI_D2,   MI_B1,  MI_Ab1,   MI_F1,  MI_D1,   MI_B,    MI_Ab,  MI_F,  MI_D,
 | 
			
		||||
          MI_Bb2, MI_G2,   MI_E2,   MI_Db2,  MI_Bb1, MI_G1,    MI_E1,  MI_Db1,   MI_Bb,  MI_G,   MI_E,  MI_Db,
 | 
			
		||||
            MI_A2,  MI_Fs2,  MI_Eb2,  MI_C2,   MI_A1,  MI_Fs1,   MI_Eb1,  MI_C1,   MI_A,   MI_Fs,  MI_Eb, MI_C,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* Chromatone */
 | 
			
		||||
  [_CHROMATONE] = LAYOUT(
 | 
			
		||||
    MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,
 | 
			
		||||
      MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,
 | 
			
		||||
        MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,  MI_Db_2,
 | 
			
		||||
          MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C_1,  MI_D_1,  MI_E_1,  MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,  MI_D_2,
 | 
			
		||||
            MI_F,    MI_G,    MI_A,    MI_B,    MI_Db_1, MI_Eb_1, MI_F_1,  MI_G_1,  MI_A_1,  MI_B_1,  MI_Db_2, MI_Eb_2,
 | 
			
		||||
    MI_Db,   MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,
 | 
			
		||||
      MI_D,    MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1, MI_C2,
 | 
			
		||||
        MI_Eb,   MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,  MI_Db2,
 | 
			
		||||
          MI_E,    MI_Fs,   MI_Ab,   MI_Bb,   MI_C1,  MI_D1,  MI_E1,  MI_Fs1, MI_Ab1, MI_Bb1, MI_C2,  MI_D2,
 | 
			
		||||
            MI_F,    MI_G,    MI_A,    MI_B,    MI_Db1, MI_Eb1, MI_F1,  MI_G1,  MI_A1,  MI_B1,  MI_Db2, MI_Eb2,
 | 
			
		||||
 | 
			
		||||
    MI_C_2,
 | 
			
		||||
      MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3,  MI_A_3,  MI_B_3,    FN_MUTE,
 | 
			
		||||
    MI_C_2,  MI_D_2,  MI_E_2,  MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3,  MI_D_3,  MI_E_3,  MI_Gb_3, MI_Ab_3, MI_Bb_3, MI_C_4,
 | 
			
		||||
      MI_Db_2, MI_Eb_2, MI_F_2,  MI_G_2,  MI_A_2,  MI_B_2,  MI_Db_3, MI_Eb_3, MI_F_3,  MI_G_3,  MI_A_3,  MI_B_3
 | 
			
		||||
    MI_C2,
 | 
			
		||||
      MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3, MI_Eb3, MI_F3,  MI_G3,  MI_A3,  MI_B3,    FN_MUTE,
 | 
			
		||||
    MI_C2,  MI_D2,  MI_E2,  MI_Gb2, MI_Ab2, MI_Bb2, MI_C3,  MI_D3,  MI_E3,  MI_Gb3, MI_Ab3, MI_Bb3, MI_C4,
 | 
			
		||||
      MI_Db2, MI_Eb2, MI_F2,  MI_G2,  MI_A2,  MI_B2,  MI_Db3, MI_Eb3, MI_F3,  MI_G3,  MI_A3,  MI_B3
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_CFLIP_BASS2ROW] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			@ -289,10 +289,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_Dbm,    MI_CH_Abm,    MI_CH_Ebm,    MI_CH_Bbm,    MI_CH_Fm,    MI_CH_Cm,    MI_CH_Gm,    MI_CH_Dm,    MI_CH_Am,    MI_CH_Em,    MI_CH_Bm,    MI_CH_Fsm,
 | 
			
		||||
            MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
 | 
			
		||||
    MI_G_5,
 | 
			
		||||
      MI_F_5,  MI_D_5,  MI_B_4,  MI_Ab_4, MI_F_4,  MI_D_4,  MI_B_3,  MI_Ab_3, MI_F_3,  MI_D_3,  MI_B_2,  MI_Ab_2,   FN_MUTE,
 | 
			
		||||
    MI_Fs_5, MI_Eb_5, MI_C_5,  MI_A_4,  MI_Fs_4, MI_Eb_4, MI_C_4,  MI_A_3,  MI_Fs_3, MI_Eb_3, MI_C_3,  MI_A_2,  MI_Fs_2,
 | 
			
		||||
      MI_E_5,  MI_Db_5, MI_Bb_4, MI_G_4,  MI_E_4,  MI_Db_4, MI_Bb_3, MI_G_3,  MI_E_3,  MI_Db_3, MI_Bb_2, MI_G_2
 | 
			
		||||
    MI_G5,
 | 
			
		||||
      MI_F5,  MI_D5,  MI_B4,  MI_Ab4, MI_F4,  MI_D4,  MI_B3,  MI_Ab3, MI_F3,  MI_D3,  MI_B2,  MI_Ab2,   FN_MUTE,
 | 
			
		||||
    MI_Fs5, MI_Eb5, MI_C5,  MI_A4,  MI_Fs4, MI_Eb4, MI_C4,  MI_A3,  MI_Fs3, MI_Eb3, MI_C3,  MI_A2,  MI_Fs2,
 | 
			
		||||
      MI_E5,  MI_Db5, MI_Bb4, MI_G4,  MI_E4,  MI_Db4, MI_Bb3, MI_G3,  MI_E3,  MI_Db3, MI_Bb2, MI_G2
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -347,7 +347,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
 | 
			
		||||
    XXXXXXX,
 | 
			
		||||
      MI_OCT_N2, MI_OCT_N1, MI_OCT_0, MI_OCT_1, MI_OCT_2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______,
 | 
			
		||||
      MI_OCN2, MI_OCN1, MI_OC0,  MI_OC1,  MI_OC2,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______,
 | 
			
		||||
    CSYSTEM, BSYSTEM,  CNTBASC,  CSYSALL,  CHRTONE,  CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, RGB_MOD, RGB_TOG,
 | 
			
		||||
      XXXXXXX,   TGLBASS,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH
 | 
			
		||||
  )
 | 
			
		||||
| 
						 | 
				
			
			@ -442,8 +442,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		|||
#endif  //  RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
void my_init(void){
 | 
			
		||||
    //  Set octave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -452,7 +452,7 @@ void eeconfig_init_user(void) {
 | 
			
		|||
    midi_init();
 | 
			
		||||
    my_init();
 | 
			
		||||
 | 
			
		||||
    // Used to set octave to MI_OCT_0
 | 
			
		||||
    // Used to set octave to 0
 | 
			
		||||
    midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
    // UNISON flags
 | 
			
		||||
| 
						 | 
				
			
			@ -710,7 +710,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, IS_SINGLE_BASS());
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
            keylight_manager(record, HSV_GOLDENROD, keylocation);
 | 
			
		||||
| 
						 | 
				
			
			@ -718,7 +718,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -727,7 +727,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -736,7 +736,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -745,7 +745,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -156,10 +156,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Fs_2,
 | 
			
		||||
      MI_Ab_2, MI_B_2,  MI_D_3,  MI_F_3,  MI_Ab_3, MI_B_3,  MI_D_4,  MI_F_4,  MI_Ab_4, MI_B_4,  MI_D_5,  MI_F_5,    FN_MUTE,
 | 
			
		||||
    MI_G_2,  MI_Bb_2, MI_Db_3, MI_E_3,  MI_G_3,  MI_Bb_3, MI_Db_4, MI_E_4,  MI_G_4,  MI_Bb_4, MI_Db_5, MI_E_5,  MI_G_5,
 | 
			
		||||
      MI_A_2,  MI_C_3,  MI_Eb_3, MI_Fs_3, MI_A_3,  MI_C_4,  MI_Eb_4, MI_Fs_4, MI_A_4,  MI_C_5,  MI_Eb_5, MI_Fs_5
 | 
			
		||||
    MI_Fs2,
 | 
			
		||||
      MI_Ab2, MI_B2,  MI_D3,  MI_F3,  MI_Ab3, MI_B3,  MI_D4,  MI_F4,  MI_Ab4, MI_B4,  MI_D5,  MI_F5,    FN_MUTE,
 | 
			
		||||
    MI_G2,  MI_Bb2, MI_Db3, MI_E3,  MI_G3,  MI_Bb3, MI_Db4, MI_E4,  MI_G4,  MI_Bb4, MI_Db5, MI_E5,  MI_G5,
 | 
			
		||||
      MI_A2,  MI_C3,  MI_Eb3, MI_Fs3, MI_A3,  MI_C4,  MI_Eb4, MI_Fs4, MI_A4,  MI_C5,  MI_Eb5, MI_Fs5
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -200,8 +200,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    //  Set otave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			@ -228,30 +228,30 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@
 | 
			
		|||
// Long press: go to _FN layer, tap: MUTE
 | 
			
		||||
#define FN_MUTE LT(_FN, KC_MUTE)
 | 
			
		||||
 | 
			
		||||
// Used to set octave to MI_OCT_0
 | 
			
		||||
// Used to set octave to 0
 | 
			
		||||
extern midi_config_t midi_config;
 | 
			
		||||
uint8_t midi_bass_ch = 0, midi_chord_ch = 0;  // By default, all use the same channel.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -156,11 +156,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
          MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
 | 
			
		||||
            MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
 | 
			
		||||
 | 
			
		||||
    MI_Db_2,      MI_E_2,       MI_G_2,       MI_Bb_2,      MI_Db_3,     MI_E_3,      MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,
 | 
			
		||||
      MI_Eb_2,      MI_Fs_2,      MI_A_2,       MI_C_3,       MI_Eb_3,     MI_Fs_3,     MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,
 | 
			
		||||
        MI_F_2,       MI_Ab_2,      MI_B_2,       MI_D_3,       MI_F_3,      MI_Ab_3,     MI_B_3,      MI_D_4,      MI_F_4,      MI_Ab_4,     MI_B_4,      MI_D_5,
 | 
			
		||||
          MI_G_2,       MI_Bb_2,      MI_Db_3,      MI_E_3,       MI_G_3,      MI_Bb_3,     MI_Db_4,     MI_E_4,      MI_G_4,      MI_Bb_4,     MI_Db_5,     MI_E_5,
 | 
			
		||||
            MI_A_2,       MI_C_3,       MI_Eb_3,      MI_Fs_3,      MI_A_3,      MI_C_4,      MI_Eb_4,     MI_Fs_4,     MI_A_4,      MI_C_5,      MI_Eb_5,     FN_MUTE
 | 
			
		||||
    MI_Db2,      MI_E2,       MI_G2,       MI_Bb2,      MI_Db3,     MI_E3,      MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,
 | 
			
		||||
      MI_Eb2,      MI_Fs2,      MI_A2,       MI_C3,       MI_Eb3,     MI_Fs3,     MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,
 | 
			
		||||
        MI_F2,       MI_Ab2,      MI_B2,       MI_D3,       MI_F3,      MI_Ab3,     MI_B3,      MI_D4,      MI_F4,      MI_Ab4,     MI_B4,      MI_D5,
 | 
			
		||||
          MI_G2,       MI_Bb2,      MI_Db3,      MI_E3,       MI_G3,      MI_Bb3,     MI_Db4,     MI_E4,      MI_G4,      MI_Bb4,     MI_Db5,     MI_E5,
 | 
			
		||||
            MI_A2,       MI_C3,       MI_Eb3,      MI_Fs3,      MI_A3,      MI_C4,      MI_Eb4,     MI_Fs4,     MI_A4,      MI_C5,      MI_Eb5,     FN_MUTE
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  /* QWERTY */
 | 
			
		||||
| 
						 | 
				
			
			@ -203,8 +203,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
    //  Set otave to MI_OCT_0
 | 
			
		||||
    midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    //  Set octave to 0
 | 
			
		||||
    midi_config.octave = QK_MIDI_OCTAVE_0 - MIDI_OCTAVE_MIN;
 | 
			
		||||
 | 
			
		||||
    // avoid using 127 since it is used as a special number in some sound sources.
 | 
			
		||||
    midi_config.velocity = MIDI_INITIAL_VELOCITY;
 | 
			
		||||
| 
						 | 
				
			
			@ -230,30 +230,30 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
        // MIDI Chord Keycodes, on the left side.
 | 
			
		||||
        case MI_CH_Cr ... MI_CH_Br:  // Root Notes
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C_1;
 | 
			
		||||
            root_note = keycode - MI_CH_Cr + MI_C1;
 | 
			
		||||
            my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_C ... MI_CH_B:  // Major Chords
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_C + MI_C2;
 | 
			
		||||
            // Root, Major Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_Cm ... MI_CH_Bm:  // Minor Chord
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_Cm + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Fifth Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDom7 ... MI_CH_BDom7:  // Dominant 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDom7 + MI_C2;
 | 
			
		||||
            // Major Third, Major Fifth, and Minor Seventh Notes
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MI_CH_CDim7 ... MI_CH_BDim7:                // Diminished 7th Chord
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C_2;
 | 
			
		||||
            root_note = keycode - MI_CH_CDim7 + MI_C2;
 | 
			
		||||
            // Root, Minor Third, and Diminished 5th Note
 | 
			
		||||
            my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,10 +91,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
[_MIDI] = LAYOUT( \
 | 
			
		||||
  QWERTY,   MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C_1,  MI_C_2,  MI_C_3,  QWERTY, \
 | 
			
		||||
  MI_A_3,   MI_As_3, MI_B_3,  MI_C_3,  MI_Cs_3, MI_D_3,  MI_Ds_3, MI_E_3,  MI_F_3,  MI_Fs_3, MI_G_3,  MI_Gs_3, \
 | 
			
		||||
  MI_A_2,   MI_As_2, MI_B_2,  MI_C_2,  MI_Cs_2, MI_D_2,  MI_Ds_2, MI_E_2,  MI_F_2,  MI_Fs_2, MI_G_2,  MI_Gs_2, \
 | 
			
		||||
  MI_A_1,   MI_As_1, MI_B_1,  MI_C_1,  MI_Cs_1, MI_D_1,  MI_Ds_1, MI_E_1,  MI_F_1,  MI_Fs_1, MI_G_1,  MI_Gs_1, \
 | 
			
		||||
  QWERTY,   MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C1,   MI_C2,   MI_C3,   QWERTY, \
 | 
			
		||||
  MI_A3,    MI_As3,  MI_B3,   MI_C3,   MI_Cs3,  MI_D3,   MI_Ds3,  MI_E3,   MI_F3,   MI_Fs3,  MI_G3,   MI_Gs3, \
 | 
			
		||||
  MI_A2,    MI_As2,  MI_B2,   MI_C2,   MI_Cs2,  MI_D2,   MI_Ds2,  MI_E2,   MI_F2,   MI_Fs2,  MI_G2,   MI_Gs2, \
 | 
			
		||||
  MI_A1,    MI_As1,  MI_B1,   MI_C1,   MI_Cs1,  MI_D1,   MI_Ds1,  MI_E1,   MI_F1,   MI_Fs1,  MI_G1,   MI_Gs1, \
 | 
			
		||||
  MI_A,     MI_As,   MI_B,    MI_C,    MI_Cs,   MI_D,    MI_Ds,   MI_E,    MI_F,    MI_Fs,   MI_G,    MI_Gs \
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
[_ADJUST] = LAYOUT_planck_mit(
 | 
			
		||||
    QK_BOOT, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    KC_CAPS, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, QWERTY,  DVORAK,  COLEMAK, WORKMAN, MIDI,
 | 
			
		||||
    _______, MI_ON,   MI_OFF,  MI_TOG,  MU_ON,   MU_OFF,  MU_TOG,  MU_MOD,  AU_ON,   AU_OFF,  _______, _______,
 | 
			
		||||
    _______, MI_ON,   MI_OFF,  MI_TOGG, MU_ON,   MU_OFF,  MU_TOG,  MU_MOD,  AU_ON,   AU_OFF,  _______, _______,
 | 
			
		||||
    RGB_TOG, _______, _______, _______, _______,     _______,      _______, _______, _______, _______, _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -123,8 +123,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
[_MIDI] = LAYOUT_planck_mit(
 | 
			
		||||
    MI_Cs,   MI_Ds,   _______, MI_Fs,   MI_Gs,   MI_As,   _______, MI_Cs,   MI_Ds,   _______, MI_Fs,   MI_Gs,
 | 
			
		||||
    MI_C,    MI_D,    MI_E,    MI_F,    MI_G,    MI_A,    MI_B,    MI_C,    MI_D,    MI_E,    MI_F,    MI_G,
 | 
			
		||||
    MI_BENDU,MI_OCTU, MI_TRNSU,MI_VELU, _______, _______, _______, _______, _______, MI_ON,   MI_CHU,  MI_TOG,
 | 
			
		||||
    MI_BENDD,MI_OCTD, MI_TRNSD,MI_VELD, MYNAV,       MI_SUS,       MYNUM, _______,   MI_OFF,  MI_CHD,  MI_ALLOFF
 | 
			
		||||
    MI_BNDU, MI_OCTU, MI_TRSU, MI_VELU, _______, _______, _______, _______, _______, MI_ON,   MI_CHNU, MI_TOG,
 | 
			
		||||
    MI_BNDD, MI_OCTD, MI_TRSD, MI_VELD, MYNAV,       MI_SUST,      MYNUM, _______,   MI_OFF,  MI_CHND, MI_AOFF
 | 
			
		||||
)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -114,9 +114,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
     * |---------------------------------------------------------------------------------------|
 | 
			
		||||
     */
 | 
			
		||||
  [6] = LAYOUT(
 | 
			
		||||
    MI_C_1,  MI_E_1,  MI_G_1,   MI_B_1,   MI_D_2,  MI_F_2, MI_A_2, MI_C_3, MI_E_3, MI_G_3, KC_NO,
 | 
			
		||||
    MI_D_1,  MI_F_1,  MI_A_1,   MI_C_2,   MI_E_2,  MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_A_3, TG(6),
 | 
			
		||||
    MI_OCTD, MI_OCTU, MI_TRNSD, MI_TRNSU,          KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO
 | 
			
		||||
    MI_C1,   MI_E1,   MI_G1,    MI_B1,    MI_D2,   MI_F2,  MI_A2,  MI_C3,  MI_E3,  MI_G3,  KC_NO,
 | 
			
		||||
    MI_D1,   MI_F1,   MI_A1,    MI_C2,    MI_E2,   MI_G2,  MI_B2,  MI_D3,  MI_F3,  MI_A3,  TG(6),
 | 
			
		||||
    MI_OCTD, MI_OCTU, MI_TRSD,  MI_TRSU,           KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO
 | 
			
		||||
  )
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
  AU_TOG,  XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DB_TOGG, QK_BOOT,
 | 
			
		||||
  CK_TOGG, CK_DOWN, CK_UP,   XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
  MU_TOG,  MUV_DE,  MUV_IN,  XXXXXXX, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP,
 | 
			
		||||
  MI_TOG,  RGB_M_P, RGB_M_B, RGB_M_R,RGB_M_SW,RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_SPI, KC_LSFT,
 | 
			
		||||
  MI_TOGG, RGB_M_P, RGB_M_B, RGB_M_R,RGB_M_SW,RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_SPI, KC_LSFT,
 | 
			
		||||
  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,      RGB_TOG,     _______, XXXXXXX,RGB_RMOD, RGB_SPD, RGB_MOD
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
  AU_TOG,  XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DB_TOGG, QK_BOOT,
 | 
			
		||||
  CK_TOGG, CK_DOWN, CK_UP,   XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
  MU_TOG,  MUV_DE,  MUV_IN,  XXXXXXX, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP,
 | 
			
		||||
  MI_TOG,  RGB_M_P, RGB_M_B, RGB_M_R,RGB_M_SW,RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_SPI, KC_LSFT,
 | 
			
		||||
  MI_TOGG, RGB_M_P, RGB_M_B, RGB_M_R,RGB_M_SW,RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_SPI, KC_LSFT,
 | 
			
		||||
  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     _______,          _______,      XXXXXXX,RGB_RMOD, RGB_SPD, RGB_MOD
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,11 +86,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 *            `----------------------------------'           '------''---------------------------'
 | 
			
		||||
 */
 | 
			
		||||
[_MIDI] = LAYOUT(
 | 
			
		||||
  MI_ALLOFF, MI_OCT_0, MI_OCT_1, MI_OCT_2, MI_OCT_3, MI_OCT_4,                      MI_OCT_5, MI_OCT_6, MI_OCT_7, _______, _______, MI_TOG,
 | 
			
		||||
  _______,   MI_Gs,    MI_As,    _______,  MI_Cs_1,  MI_Ds_1,                       _______,  MI_Fs_1,  MI_Gs_1,  MI_As_1, _______, _______,
 | 
			
		||||
  _______,   MI_A,     MI_B,     MI_C_1,   MI_D_1,   MI_E_1,                        MI_F_1,   MI_G_1,   MI_A_1,   MI_B_1,  MI_C_2,  KC_WORKMAN,
 | 
			
		||||
  _______,   _______,  _______,  _______,  MI_TRNSD, MI_TRNSU, _______,    _______, MI_BENDD, MI_BENDU, _______,  _______, _______, _______,
 | 
			
		||||
                       _______,  _______,  _______,  MI_SUS,   MI_OCTD,    MI_OCTU, _______,  _______,  _______,  _______
 | 
			
		||||
  MI_AOFF,   MI_OC0,   MI_OC1,   MI_OC2,   MI_OC3,   MI_OC4,                        MI_OC5,   MI_OC6,   MI_OC7,   _______, _______, MI_TOGG,
 | 
			
		||||
  _______,   MI_Gs,    MI_As,    _______,  MI_Cs1,   MI_Ds1,                        _______,  MI_Fs1,   MI_Gs1,   MI_As1,  _______, _______,
 | 
			
		||||
  _______,   MI_A,     MI_B,     MI_C1,    MI_D1,    MI_E1,                         MI_F1,    MI_G1,    MI_A1,    MI_B1,   MI_C2,  KC_WORKMAN,
 | 
			
		||||
  _______,   _______,  _______,  _______,  MI_TRSD,  MI_TRSU,  _______,    _______, MI_BNDD,  MI_BNDU,  _______,  _______, _______, _______,
 | 
			
		||||
                       _______,  _______,  _______,  MI_SUST,  MI_OCTD,    MI_OCTU, _______,  _______,  _______,  _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
/* LOWER
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_NATURAL] = LAYOUT(
 | 
			
		||||
        MI_C, MI_BENDD,   MI_BENDU,  MI_G,
 | 
			
		||||
        MI_C, MI_BNDD,    MI_BNDU,   MI_G,
 | 
			
		||||
        MI_D, MIDI_CC80,  MIDI_CC81, MI_A,
 | 
			
		||||
        MI_E, MIDI_CC82,  MIDI_CC83, MI_B,
 | 
			
		||||
        MI_F, MI_OCTD,    MI_OCTU,   MI_C,
 | 
			
		||||
| 
						 | 
				
			
			@ -137,12 +137,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
        MI_Cs, KC_TRNS,  KC_TRNS,  MI_Gs,
 | 
			
		||||
        MI_Ds, KC_TRNS,  KC_TRNS,  MI_As,
 | 
			
		||||
        MI_F , KC_TRNS,  KC_TRNS,  MI_C ,
 | 
			
		||||
        MI_Fs, MI_TRNSD, MI_TRNSU, MI_Cs,
 | 
			
		||||
        MI_Fs, MI_TRSD,  MI_TRSU,  MI_Cs,
 | 
			
		||||
               KC_TRNS,  KC_TRNS),
 | 
			
		||||
    [_FLAT] = LAYOUT(
 | 
			
		||||
        MI_B , KC_TRNS,  KC_TRNS,  MI_Gb,
 | 
			
		||||
        MI_Db, KC_TRNS,  KC_TRNS,  MI_Ab,
 | 
			
		||||
        MI_Eb, KC_TRNS,  KC_TRNS,  MI_Bb,
 | 
			
		||||
        MI_E , MI_TRNSD, MI_TRNSU, MI_B,
 | 
			
		||||
        MI_E , MI_TRSD,  MI_TRSU,  MI_B,
 | 
			
		||||
               KC_TRNS,  KC_TRNS),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,9 +22,9 @@ enum layers {
 | 
			
		|||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_NATURAL] = LAYOUT(
 | 
			
		||||
        MI_C, MI_BENDD, MI_BENDU, MI_G,
 | 
			
		||||
        MI_C, MI_BNDD,  MI_BNDU,  MI_G,
 | 
			
		||||
        MI_D, MI_VELD,  MI_VELU,  MI_A,
 | 
			
		||||
        MI_E, MI_TRNSD, MI_TRNSU, MI_B,
 | 
			
		||||
        MI_E, MI_TRSD,  MI_TRSU,  MI_B,
 | 
			
		||||
        MI_F, MI_OCTD,  MI_OCTU,  MI_C,
 | 
			
		||||
             MO(_SHARP), MO(_FLAT)),
 | 
			
		||||
    [_SHARP] = LAYOUT(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -346,150 +346,150 @@ enum qk_keycode_defines {
 | 
			
		|||
    MAGIC_SWAP_ESCAPE_CAPSLOCK = 0x7020,
 | 
			
		||||
    MAGIC_UNSWAP_ESCAPE_CAPSLOCK = 0x7021,
 | 
			
		||||
    MAGIC_TOGGLE_ESCAPE_CAPSLOCK = 0x7022,
 | 
			
		||||
    MI_ON = 0x7100,
 | 
			
		||||
    MI_OFF = 0x7101,
 | 
			
		||||
    MI_TOG = 0x7102,
 | 
			
		||||
    MI_C = 0x7110,
 | 
			
		||||
    MI_Cs = 0x7111,
 | 
			
		||||
    MI_D = 0x7112,
 | 
			
		||||
    MI_Ds = 0x7113,
 | 
			
		||||
    MI_E = 0x7114,
 | 
			
		||||
    MI_F = 0x7115,
 | 
			
		||||
    MI_Fs = 0x7116,
 | 
			
		||||
    MI_G = 0x7117,
 | 
			
		||||
    MI_Gs = 0x7118,
 | 
			
		||||
    MI_A = 0x7119,
 | 
			
		||||
    MI_As = 0x711A,
 | 
			
		||||
    MI_B = 0x711B,
 | 
			
		||||
    MI_C_1 = 0x7120,
 | 
			
		||||
    MI_Cs_1 = 0x7121,
 | 
			
		||||
    MI_D_1 = 0x7122,
 | 
			
		||||
    MI_Ds_1 = 0x7123,
 | 
			
		||||
    MI_E_1 = 0x7124,
 | 
			
		||||
    MI_F_1 = 0x7125,
 | 
			
		||||
    MI_Fs_1 = 0x7126,
 | 
			
		||||
    MI_G_1 = 0x7127,
 | 
			
		||||
    MI_Gs_1 = 0x7128,
 | 
			
		||||
    MI_A_1 = 0x7129,
 | 
			
		||||
    MI_As_1 = 0x712A,
 | 
			
		||||
    MI_B_1 = 0x712B,
 | 
			
		||||
    MI_C_2 = 0x7130,
 | 
			
		||||
    MI_Cs_2 = 0x7131,
 | 
			
		||||
    MI_D_2 = 0x7132,
 | 
			
		||||
    MI_Ds_2 = 0x7133,
 | 
			
		||||
    MI_E_2 = 0x7134,
 | 
			
		||||
    MI_F_2 = 0x7135,
 | 
			
		||||
    MI_Fs_2 = 0x7136,
 | 
			
		||||
    MI_G_2 = 0x7137,
 | 
			
		||||
    MI_Gs_2 = 0x7138,
 | 
			
		||||
    MI_A_2 = 0x7139,
 | 
			
		||||
    MI_As_2 = 0x713A,
 | 
			
		||||
    MI_B_2 = 0x713B,
 | 
			
		||||
    MI_C_3 = 0x7140,
 | 
			
		||||
    MI_Cs_3 = 0x7141,
 | 
			
		||||
    MI_D_3 = 0x7142,
 | 
			
		||||
    MI_Ds_3 = 0x7143,
 | 
			
		||||
    MI_E_3 = 0x7144,
 | 
			
		||||
    MI_F_3 = 0x7145,
 | 
			
		||||
    MI_Fs_3 = 0x7146,
 | 
			
		||||
    MI_G_3 = 0x7147,
 | 
			
		||||
    MI_Gs_3 = 0x7148,
 | 
			
		||||
    MI_A_3 = 0x7149,
 | 
			
		||||
    MI_As_3 = 0x714A,
 | 
			
		||||
    MI_B_3 = 0x714B,
 | 
			
		||||
    MI_C_4 = 0x7150,
 | 
			
		||||
    MI_Cs_4 = 0x7151,
 | 
			
		||||
    MI_D_4 = 0x7152,
 | 
			
		||||
    MI_Ds_4 = 0x7153,
 | 
			
		||||
    MI_E_4 = 0x7154,
 | 
			
		||||
    MI_F_4 = 0x7155,
 | 
			
		||||
    MI_Fs_4 = 0x7156,
 | 
			
		||||
    MI_G_4 = 0x7157,
 | 
			
		||||
    MI_Gs_4 = 0x7158,
 | 
			
		||||
    MI_A_4 = 0x7159,
 | 
			
		||||
    MI_As_4 = 0x715A,
 | 
			
		||||
    MI_B_4 = 0x715B,
 | 
			
		||||
    MI_C_5 = 0x7160,
 | 
			
		||||
    MI_Cs_5 = 0x7161,
 | 
			
		||||
    MI_D_5 = 0x7162,
 | 
			
		||||
    MI_Ds_5 = 0x7163,
 | 
			
		||||
    MI_E_5 = 0x7164,
 | 
			
		||||
    MI_F_5 = 0x7165,
 | 
			
		||||
    MI_Fs_5 = 0x7166,
 | 
			
		||||
    MI_G_5 = 0x7167,
 | 
			
		||||
    MI_Gs_5 = 0x7168,
 | 
			
		||||
    MI_A_5 = 0x7169,
 | 
			
		||||
    MI_As_5 = 0x716A,
 | 
			
		||||
    MI_B_5 = 0x716B,
 | 
			
		||||
    MI_OCT_N2 = 0x7170,
 | 
			
		||||
    MI_OCT_N1 = 0x7171,
 | 
			
		||||
    MI_OCT_0 = 0x7172,
 | 
			
		||||
    MI_OCT_1 = 0x7173,
 | 
			
		||||
    MI_OCT_2 = 0x7174,
 | 
			
		||||
    MI_OCT_3 = 0x7175,
 | 
			
		||||
    MI_OCT_4 = 0x7176,
 | 
			
		||||
    MI_OCT_5 = 0x7177,
 | 
			
		||||
    MI_OCT_6 = 0x7178,
 | 
			
		||||
    MI_OCT_7 = 0x7179,
 | 
			
		||||
    MI_OCTD = 0x717A,
 | 
			
		||||
    MI_OCTU = 0x717B,
 | 
			
		||||
    MI_TRNS_N6 = 0x7180,
 | 
			
		||||
    MI_TRNS_N5 = 0x7181,
 | 
			
		||||
    MI_TRNS_N4 = 0x7182,
 | 
			
		||||
    MI_TRNS_N3 = 0x7183,
 | 
			
		||||
    MI_TRNS_N2 = 0x7184,
 | 
			
		||||
    MI_TRNS_N1 = 0x7185,
 | 
			
		||||
    MI_TRNS_0 = 0x7186,
 | 
			
		||||
    MI_TRNS_1 = 0x7187,
 | 
			
		||||
    MI_TRNS_2 = 0x7188,
 | 
			
		||||
    MI_TRNS_3 = 0x7189,
 | 
			
		||||
    MI_TRNS_4 = 0x718A,
 | 
			
		||||
    MI_TRNS_5 = 0x718B,
 | 
			
		||||
    MI_TRNS_6 = 0x718C,
 | 
			
		||||
    MI_TRNSD = 0x718D,
 | 
			
		||||
    MI_TRNSU = 0x718E,
 | 
			
		||||
    MI_VEL_0 = 0x7190,
 | 
			
		||||
    MI_VEL_1 = 0x7191,
 | 
			
		||||
    MI_VEL_2 = 0x7192,
 | 
			
		||||
    MI_VEL_3 = 0x7193,
 | 
			
		||||
    MI_VEL_4 = 0x7194,
 | 
			
		||||
    MI_VEL_5 = 0x7195,
 | 
			
		||||
    MI_VEL_6 = 0x7196,
 | 
			
		||||
    MI_VEL_7 = 0x7197,
 | 
			
		||||
    MI_VEL_8 = 0x7198,
 | 
			
		||||
    MI_VEL_9 = 0x7199,
 | 
			
		||||
    MI_VEL_10 = 0x719A,
 | 
			
		||||
    MI_VELD = 0x719B,
 | 
			
		||||
    MI_VELU = 0x719C,
 | 
			
		||||
    MI_CH1 = 0x71A0,
 | 
			
		||||
    MI_CH2 = 0x71A1,
 | 
			
		||||
    MI_CH3 = 0x71A2,
 | 
			
		||||
    MI_CH4 = 0x71A3,
 | 
			
		||||
    MI_CH5 = 0x71A4,
 | 
			
		||||
    MI_CH6 = 0x71A5,
 | 
			
		||||
    MI_CH7 = 0x71A6,
 | 
			
		||||
    MI_CH8 = 0x71A7,
 | 
			
		||||
    MI_CH9 = 0x71A8,
 | 
			
		||||
    MI_CH10 = 0x71A9,
 | 
			
		||||
    MI_CH11 = 0x71AA,
 | 
			
		||||
    MI_CH12 = 0x71AB,
 | 
			
		||||
    MI_CH13 = 0x71AC,
 | 
			
		||||
    MI_CH14 = 0x71AD,
 | 
			
		||||
    MI_CH15 = 0x71AE,
 | 
			
		||||
    MI_CH16 = 0x71AF,
 | 
			
		||||
    MI_CHD = 0x71B0,
 | 
			
		||||
    MI_CHU = 0x71B1,
 | 
			
		||||
    MI_ALLOFF = 0x71C0,
 | 
			
		||||
    MI_SUS = 0x71C1,
 | 
			
		||||
    MI_PORT = 0x71C2,
 | 
			
		||||
    MI_SOST = 0x71C3,
 | 
			
		||||
    MI_SOFT = 0x71C4,
 | 
			
		||||
    MI_LEG = 0x71C5,
 | 
			
		||||
    MI_MOD = 0x71C6,
 | 
			
		||||
    MI_MODSD = 0x71C7,
 | 
			
		||||
    MI_MODSU = 0x71C8,
 | 
			
		||||
    MI_BENDD = 0x71C9,
 | 
			
		||||
    MI_BENDU = 0x71CA,
 | 
			
		||||
    QK_MIDI_ON = 0x7100,
 | 
			
		||||
    QK_MIDI_OFF = 0x7101,
 | 
			
		||||
    QK_MIDI_TOGGLE = 0x7102,
 | 
			
		||||
    QK_MIDI_NOTE_C_0 = 0x7110,
 | 
			
		||||
    QK_MIDI_NOTE_C_SHARP_0 = 0x7111,
 | 
			
		||||
    QK_MIDI_NOTE_D_0 = 0x7112,
 | 
			
		||||
    QK_MIDI_NOTE_D_SHARP_0 = 0x7113,
 | 
			
		||||
    QK_MIDI_NOTE_E_0 = 0x7114,
 | 
			
		||||
    QK_MIDI_NOTE_F_0 = 0x7115,
 | 
			
		||||
    QK_MIDI_NOTE_F_SHARP_0 = 0x7116,
 | 
			
		||||
    QK_MIDI_NOTE_G_0 = 0x7117,
 | 
			
		||||
    QK_MIDI_NOTE_G_SHARP_0 = 0x7118,
 | 
			
		||||
    QK_MIDI_NOTE_A_0 = 0x7119,
 | 
			
		||||
    QK_MIDI_NOTE_A_SHARP_0 = 0x711A,
 | 
			
		||||
    QK_MIDI_NOTE_B_0 = 0x711B,
 | 
			
		||||
    QK_MIDI_NOTE_C_1 = 0x7120,
 | 
			
		||||
    QK_MIDI_NOTE_C_SHARP_1 = 0x7121,
 | 
			
		||||
    QK_MIDI_NOTE_D_1 = 0x7122,
 | 
			
		||||
    QK_MIDI_NOTE_D_SHARP_1 = 0x7123,
 | 
			
		||||
    QK_MIDI_NOTE_E_1 = 0x7124,
 | 
			
		||||
    QK_MIDI_NOTE_F_1 = 0x7125,
 | 
			
		||||
    QK_MIDI_NOTE_F_SHARP_1 = 0x7126,
 | 
			
		||||
    QK_MIDI_NOTE_G_1 = 0x7127,
 | 
			
		||||
    QK_MIDI_NOTE_G_SHARP_1 = 0x7128,
 | 
			
		||||
    QK_MIDI_NOTE_A_1 = 0x7129,
 | 
			
		||||
    QK_MIDI_NOTE_A_SHARP_1 = 0x712A,
 | 
			
		||||
    QK_MIDI_NOTE_B_1 = 0x712B,
 | 
			
		||||
    QK_MIDI_NOTE_C_2 = 0x7130,
 | 
			
		||||
    QK_MIDI_NOTE_C_SHARP_2 = 0x7131,
 | 
			
		||||
    QK_MIDI_NOTE_D_2 = 0x7132,
 | 
			
		||||
    QK_MIDI_NOTE_D_SHARP_2 = 0x7133,
 | 
			
		||||
    QK_MIDI_NOTE_E_2 = 0x7134,
 | 
			
		||||
    QK_MIDI_NOTE_F_2 = 0x7135,
 | 
			
		||||
    QK_MIDI_NOTE_F_SHARP_2 = 0x7136,
 | 
			
		||||
    QK_MIDI_NOTE_G_2 = 0x7137,
 | 
			
		||||
    QK_MIDI_NOTE_G_SHARP_2 = 0x7138,
 | 
			
		||||
    QK_MIDI_NOTE_A_2 = 0x7139,
 | 
			
		||||
    QK_MIDI_NOTE_A_SHARP_2 = 0x713A,
 | 
			
		||||
    QK_MIDI_NOTE_B_2 = 0x713B,
 | 
			
		||||
    QK_MIDI_NOTE_C_3 = 0x7140,
 | 
			
		||||
    QK_MIDI_NOTE_C_SHARP_3 = 0x7141,
 | 
			
		||||
    QK_MIDI_NOTE_D_3 = 0x7142,
 | 
			
		||||
    QK_MIDI_NOTE_D_SHARP_3 = 0x7143,
 | 
			
		||||
    QK_MIDI_NOTE_E_3 = 0x7144,
 | 
			
		||||
    QK_MIDI_NOTE_F_3 = 0x7145,
 | 
			
		||||
    QK_MIDI_NOTE_F_SHARP_3 = 0x7146,
 | 
			
		||||
    QK_MIDI_NOTE_G_3 = 0x7147,
 | 
			
		||||
    QK_MIDI_NOTE_G_SHARP_3 = 0x7148,
 | 
			
		||||
    QK_MIDI_NOTE_A_3 = 0x7149,
 | 
			
		||||
    QK_MIDI_NOTE_A_SHARP_3 = 0x714A,
 | 
			
		||||
    QK_MIDI_NOTE_B_3 = 0x714B,
 | 
			
		||||
    QK_MIDI_NOTE_C_4 = 0x7150,
 | 
			
		||||
    QK_MIDI_NOTE_C_SHARP_4 = 0x7151,
 | 
			
		||||
    QK_MIDI_NOTE_D_4 = 0x7152,
 | 
			
		||||
    QK_MIDI_NOTE_D_SHARP_4 = 0x7153,
 | 
			
		||||
    QK_MIDI_NOTE_E_4 = 0x7154,
 | 
			
		||||
    QK_MIDI_NOTE_F_4 = 0x7155,
 | 
			
		||||
    QK_MIDI_NOTE_F_SHARP_4 = 0x7156,
 | 
			
		||||
    QK_MIDI_NOTE_G_4 = 0x7157,
 | 
			
		||||
    QK_MIDI_NOTE_G_SHARP_4 = 0x7158,
 | 
			
		||||
    QK_MIDI_NOTE_A_4 = 0x7159,
 | 
			
		||||
    QK_MIDI_NOTE_A_SHARP_4 = 0x715A,
 | 
			
		||||
    QK_MIDI_NOTE_B_4 = 0x715B,
 | 
			
		||||
    QK_MIDI_NOTE_C_5 = 0x7160,
 | 
			
		||||
    QK_MIDI_NOTE_C_SHARP_5 = 0x7161,
 | 
			
		||||
    QK_MIDI_NOTE_D_5 = 0x7162,
 | 
			
		||||
    QK_MIDI_NOTE_D_SHARP_5 = 0x7163,
 | 
			
		||||
    QK_MIDI_NOTE_E_5 = 0x7164,
 | 
			
		||||
    QK_MIDI_NOTE_F_5 = 0x7165,
 | 
			
		||||
    QK_MIDI_NOTE_F_SHARP_5 = 0x7166,
 | 
			
		||||
    QK_MIDI_NOTE_G_5 = 0x7167,
 | 
			
		||||
    QK_MIDI_NOTE_G_SHARP_5 = 0x7168,
 | 
			
		||||
    QK_MIDI_NOTE_A_5 = 0x7169,
 | 
			
		||||
    QK_MIDI_NOTE_A_SHARP_5 = 0x716A,
 | 
			
		||||
    QK_MIDI_NOTE_B_5 = 0x716B,
 | 
			
		||||
    QK_MIDI_OCTAVE_N2 = 0x7170,
 | 
			
		||||
    QK_MIDI_OCTAVE_N1 = 0x7171,
 | 
			
		||||
    QK_MIDI_OCTAVE_0 = 0x7172,
 | 
			
		||||
    QK_MIDI_OCTAVE_1 = 0x7173,
 | 
			
		||||
    QK_MIDI_OCTAVE_2 = 0x7174,
 | 
			
		||||
    QK_MIDI_OCTAVE_3 = 0x7175,
 | 
			
		||||
    QK_MIDI_OCTAVE_4 = 0x7176,
 | 
			
		||||
    QK_MIDI_OCTAVE_5 = 0x7177,
 | 
			
		||||
    QK_MIDI_OCTAVE_6 = 0x7178,
 | 
			
		||||
    QK_MIDI_OCTAVE_7 = 0x7179,
 | 
			
		||||
    QK_MIDI_OCTAVE_DOWN = 0x717A,
 | 
			
		||||
    QK_MIDI_OCTAVE_UP = 0x717B,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_N6 = 0x7180,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_N5 = 0x7181,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_N4 = 0x7182,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_N3 = 0x7183,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_N2 = 0x7184,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_N1 = 0x7185,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_0 = 0x7186,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_1 = 0x7187,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_2 = 0x7188,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_3 = 0x7189,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_4 = 0x718A,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_5 = 0x718B,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_6 = 0x718C,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_DOWN = 0x718D,
 | 
			
		||||
    QK_MIDI_TRANSPOSE_UP = 0x718E,
 | 
			
		||||
    QK_MIDI_VELOCITY_0 = 0x7190,
 | 
			
		||||
    QK_MIDI_VELOCITY_1 = 0x7191,
 | 
			
		||||
    QK_MIDI_VELOCITY_2 = 0x7192,
 | 
			
		||||
    QK_MIDI_VELOCITY_3 = 0x7193,
 | 
			
		||||
    QK_MIDI_VELOCITY_4 = 0x7194,
 | 
			
		||||
    QK_MIDI_VELOCITY_5 = 0x7195,
 | 
			
		||||
    QK_MIDI_VELOCITY_6 = 0x7196,
 | 
			
		||||
    QK_MIDI_VELOCITY_7 = 0x7197,
 | 
			
		||||
    QK_MIDI_VELOCITY_8 = 0x7198,
 | 
			
		||||
    QK_MIDI_VELOCITY_9 = 0x7199,
 | 
			
		||||
    QK_MIDI_VELOCITY_10 = 0x719A,
 | 
			
		||||
    QK_MIDI_VELOCITY_DOWN = 0x719B,
 | 
			
		||||
    QK_MIDI_VELOCITY_UP = 0x719C,
 | 
			
		||||
    QK_MIDI_CHANNEL_1 = 0x71A0,
 | 
			
		||||
    QK_MIDI_CHANNEL_2 = 0x71A1,
 | 
			
		||||
    QK_MIDI_CHANNEL_3 = 0x71A2,
 | 
			
		||||
    QK_MIDI_CHANNEL_4 = 0x71A3,
 | 
			
		||||
    QK_MIDI_CHANNEL_5 = 0x71A4,
 | 
			
		||||
    QK_MIDI_CHANNEL_6 = 0x71A5,
 | 
			
		||||
    QK_MIDI_CHANNEL_7 = 0x71A6,
 | 
			
		||||
    QK_MIDI_CHANNEL_8 = 0x71A7,
 | 
			
		||||
    QK_MIDI_CHANNEL_9 = 0x71A8,
 | 
			
		||||
    QK_MIDI_CHANNEL_10 = 0x71A9,
 | 
			
		||||
    QK_MIDI_CHANNEL_11 = 0x71AA,
 | 
			
		||||
    QK_MIDI_CHANNEL_12 = 0x71AB,
 | 
			
		||||
    QK_MIDI_CHANNEL_13 = 0x71AC,
 | 
			
		||||
    QK_MIDI_CHANNEL_14 = 0x71AD,
 | 
			
		||||
    QK_MIDI_CHANNEL_15 = 0x71AE,
 | 
			
		||||
    QK_MIDI_CHANNEL_16 = 0x71AF,
 | 
			
		||||
    QK_MIDI_CHANNEL_DOWN = 0x71B0,
 | 
			
		||||
    QK_MIDI_CHANNEL_UP = 0x71B1,
 | 
			
		||||
    QK_MIDI_ALL_NOTES_OFF = 0x71C0,
 | 
			
		||||
    QK_MIDI_SUSTAIN = 0x71C1,
 | 
			
		||||
    QK_MIDI_PORTAMENTO = 0x71C2,
 | 
			
		||||
    QK_MIDI_SOSTENUTO = 0x71C3,
 | 
			
		||||
    QK_MIDI_SOFT = 0x71C4,
 | 
			
		||||
    QK_MIDI_LEGATO = 0x71C5,
 | 
			
		||||
    QK_MIDI_MODULATION = 0x71C6,
 | 
			
		||||
    QK_MIDI_MODULATION_SPEED_DOWN = 0x71C7,
 | 
			
		||||
    QK_MIDI_MODULATION_SPEED_UP = 0x71C8,
 | 
			
		||||
    QK_MIDI_PITCH_BEND_DOWN = 0x71C9,
 | 
			
		||||
    QK_MIDI_PITCH_BEND_UP = 0x71CA,
 | 
			
		||||
    SQ_ON = 0x7200,
 | 
			
		||||
    SQ_OFF = 0x7201,
 | 
			
		||||
    SQ_TOG = 0x7202,
 | 
			
		||||
| 
						 | 
				
			
			@ -898,36 +898,180 @@ enum qk_keycode_defines {
 | 
			
		|||
    EC_SWAP    = MAGIC_SWAP_ESCAPE_CAPSLOCK,
 | 
			
		||||
    EC_NORM    = MAGIC_UNSWAP_ESCAPE_CAPSLOCK,
 | 
			
		||||
    EC_TOGG    = MAGIC_TOGGLE_ESCAPE_CAPSLOCK,
 | 
			
		||||
    MI_Db      = MI_Cs,
 | 
			
		||||
    MI_Eb      = MI_Ds,
 | 
			
		||||
    MI_Gb      = MI_Fs,
 | 
			
		||||
    MI_Ab      = MI_Gs,
 | 
			
		||||
    MI_Bb      = MI_As,
 | 
			
		||||
    MI_Db_1    = MI_Cs_1,
 | 
			
		||||
    MI_Eb_1    = MI_Ds_1,
 | 
			
		||||
    MI_Gb_1    = MI_Fs_1,
 | 
			
		||||
    MI_Ab_1    = MI_Gs_1,
 | 
			
		||||
    MI_Bb_1    = MI_As_1,
 | 
			
		||||
    MI_Db_2    = MI_Cs_2,
 | 
			
		||||
    MI_Eb_2    = MI_Ds_2,
 | 
			
		||||
    MI_Gb_2    = MI_Fs_2,
 | 
			
		||||
    MI_Ab_2    = MI_Gs_2,
 | 
			
		||||
    MI_Bb_2    = MI_As_2,
 | 
			
		||||
    MI_Db_3    = MI_Cs_3,
 | 
			
		||||
    MI_Eb_3    = MI_Ds_3,
 | 
			
		||||
    MI_Gb_3    = MI_Fs_3,
 | 
			
		||||
    MI_Ab_3    = MI_Gs_3,
 | 
			
		||||
    MI_Bb_3    = MI_As_3,
 | 
			
		||||
    MI_Db_4    = MI_Cs_4,
 | 
			
		||||
    MI_Eb_4    = MI_Ds_4,
 | 
			
		||||
    MI_Gb_4    = MI_Fs_4,
 | 
			
		||||
    MI_Ab_4    = MI_Gs_4,
 | 
			
		||||
    MI_Bb_4    = MI_As_4,
 | 
			
		||||
    MI_Db_5    = MI_Cs_5,
 | 
			
		||||
    MI_Eb_5    = MI_Ds_5,
 | 
			
		||||
    MI_Gb_5    = MI_Fs_5,
 | 
			
		||||
    MI_Ab_5    = MI_Gs_5,
 | 
			
		||||
    MI_Bb_5    = MI_As_5,
 | 
			
		||||
    MI_ON      = QK_MIDI_ON,
 | 
			
		||||
    MI_OFF     = QK_MIDI_OFF,
 | 
			
		||||
    MI_TOGG    = QK_MIDI_TOGGLE,
 | 
			
		||||
    MI_C       = QK_MIDI_NOTE_C_0,
 | 
			
		||||
    MI_Cs      = QK_MIDI_NOTE_C_SHARP_0,
 | 
			
		||||
    MI_Db      = QK_MIDI_NOTE_C_SHARP_0,
 | 
			
		||||
    MI_D       = QK_MIDI_NOTE_D_0,
 | 
			
		||||
    MI_Ds      = QK_MIDI_NOTE_D_SHARP_0,
 | 
			
		||||
    MI_Eb      = QK_MIDI_NOTE_D_SHARP_0,
 | 
			
		||||
    MI_E       = QK_MIDI_NOTE_E_0,
 | 
			
		||||
    MI_F       = QK_MIDI_NOTE_F_0,
 | 
			
		||||
    MI_Fs      = QK_MIDI_NOTE_F_SHARP_0,
 | 
			
		||||
    MI_Gb      = QK_MIDI_NOTE_F_SHARP_0,
 | 
			
		||||
    MI_G       = QK_MIDI_NOTE_G_0,
 | 
			
		||||
    MI_Gs      = QK_MIDI_NOTE_G_SHARP_0,
 | 
			
		||||
    MI_Ab      = QK_MIDI_NOTE_G_SHARP_0,
 | 
			
		||||
    MI_A       = QK_MIDI_NOTE_A_0,
 | 
			
		||||
    MI_As      = QK_MIDI_NOTE_A_SHARP_0,
 | 
			
		||||
    MI_Bb      = QK_MIDI_NOTE_A_SHARP_0,
 | 
			
		||||
    MI_B       = QK_MIDI_NOTE_B_0,
 | 
			
		||||
    MI_C1      = QK_MIDI_NOTE_C_1,
 | 
			
		||||
    MI_Cs1     = QK_MIDI_NOTE_C_SHARP_1,
 | 
			
		||||
    MI_Db1     = QK_MIDI_NOTE_C_SHARP_1,
 | 
			
		||||
    MI_D1      = QK_MIDI_NOTE_D_1,
 | 
			
		||||
    MI_Ds1     = QK_MIDI_NOTE_D_SHARP_1,
 | 
			
		||||
    MI_Eb1     = QK_MIDI_NOTE_D_SHARP_1,
 | 
			
		||||
    MI_E1      = QK_MIDI_NOTE_E_1,
 | 
			
		||||
    MI_F1      = QK_MIDI_NOTE_F_1,
 | 
			
		||||
    MI_Fs1     = QK_MIDI_NOTE_F_SHARP_1,
 | 
			
		||||
    MI_Gb1     = QK_MIDI_NOTE_F_SHARP_1,
 | 
			
		||||
    MI_G1      = QK_MIDI_NOTE_G_1,
 | 
			
		||||
    MI_Gs1     = QK_MIDI_NOTE_G_SHARP_1,
 | 
			
		||||
    MI_Ab1     = QK_MIDI_NOTE_G_SHARP_1,
 | 
			
		||||
    MI_A1      = QK_MIDI_NOTE_A_1,
 | 
			
		||||
    MI_As1     = QK_MIDI_NOTE_A_SHARP_1,
 | 
			
		||||
    MI_Bb1     = QK_MIDI_NOTE_A_SHARP_1,
 | 
			
		||||
    MI_B1      = QK_MIDI_NOTE_B_1,
 | 
			
		||||
    MI_C2      = QK_MIDI_NOTE_C_2,
 | 
			
		||||
    MI_Cs2     = QK_MIDI_NOTE_C_SHARP_2,
 | 
			
		||||
    MI_Db2     = QK_MIDI_NOTE_C_SHARP_2,
 | 
			
		||||
    MI_D2      = QK_MIDI_NOTE_D_2,
 | 
			
		||||
    MI_Ds2     = QK_MIDI_NOTE_D_SHARP_2,
 | 
			
		||||
    MI_Eb2     = QK_MIDI_NOTE_D_SHARP_2,
 | 
			
		||||
    MI_E2      = QK_MIDI_NOTE_E_2,
 | 
			
		||||
    MI_F2      = QK_MIDI_NOTE_F_2,
 | 
			
		||||
    MI_Fs2     = QK_MIDI_NOTE_F_SHARP_2,
 | 
			
		||||
    MI_Gb2     = QK_MIDI_NOTE_F_SHARP_2,
 | 
			
		||||
    MI_G2      = QK_MIDI_NOTE_G_2,
 | 
			
		||||
    MI_Gs2     = QK_MIDI_NOTE_G_SHARP_2,
 | 
			
		||||
    MI_Ab2     = QK_MIDI_NOTE_G_SHARP_2,
 | 
			
		||||
    MI_A2      = QK_MIDI_NOTE_A_2,
 | 
			
		||||
    MI_As2     = QK_MIDI_NOTE_A_SHARP_2,
 | 
			
		||||
    MI_Bb2     = QK_MIDI_NOTE_A_SHARP_2,
 | 
			
		||||
    MI_B2      = QK_MIDI_NOTE_B_2,
 | 
			
		||||
    MI_C3      = QK_MIDI_NOTE_C_3,
 | 
			
		||||
    MI_Cs3     = QK_MIDI_NOTE_C_SHARP_3,
 | 
			
		||||
    MI_Db3     = QK_MIDI_NOTE_C_SHARP_3,
 | 
			
		||||
    MI_D3      = QK_MIDI_NOTE_D_3,
 | 
			
		||||
    MI_Ds3     = QK_MIDI_NOTE_D_SHARP_3,
 | 
			
		||||
    MI_Eb3     = QK_MIDI_NOTE_D_SHARP_3,
 | 
			
		||||
    MI_E3      = QK_MIDI_NOTE_E_3,
 | 
			
		||||
    MI_F3      = QK_MIDI_NOTE_F_3,
 | 
			
		||||
    MI_Fs3     = QK_MIDI_NOTE_F_SHARP_3,
 | 
			
		||||
    MI_Gb3     = QK_MIDI_NOTE_F_SHARP_3,
 | 
			
		||||
    MI_G3      = QK_MIDI_NOTE_G_3,
 | 
			
		||||
    MI_Gs3     = QK_MIDI_NOTE_G_SHARP_3,
 | 
			
		||||
    MI_Ab3     = QK_MIDI_NOTE_G_SHARP_3,
 | 
			
		||||
    MI_A3      = QK_MIDI_NOTE_A_3,
 | 
			
		||||
    MI_As3     = QK_MIDI_NOTE_A_SHARP_3,
 | 
			
		||||
    MI_Bb3     = QK_MIDI_NOTE_A_SHARP_3,
 | 
			
		||||
    MI_B3      = QK_MIDI_NOTE_B_3,
 | 
			
		||||
    MI_C4      = QK_MIDI_NOTE_C_4,
 | 
			
		||||
    MI_Cs4     = QK_MIDI_NOTE_C_SHARP_4,
 | 
			
		||||
    MI_Db4     = QK_MIDI_NOTE_C_SHARP_4,
 | 
			
		||||
    MI_D4      = QK_MIDI_NOTE_D_4,
 | 
			
		||||
    MI_Ds4     = QK_MIDI_NOTE_D_SHARP_4,
 | 
			
		||||
    MI_Eb4     = QK_MIDI_NOTE_D_SHARP_4,
 | 
			
		||||
    MI_E4      = QK_MIDI_NOTE_E_4,
 | 
			
		||||
    MI_F4      = QK_MIDI_NOTE_F_4,
 | 
			
		||||
    MI_Fs4     = QK_MIDI_NOTE_F_SHARP_4,
 | 
			
		||||
    MI_Gb4     = QK_MIDI_NOTE_F_SHARP_4,
 | 
			
		||||
    MI_G4      = QK_MIDI_NOTE_G_4,
 | 
			
		||||
    MI_Gs4     = QK_MIDI_NOTE_G_SHARP_4,
 | 
			
		||||
    MI_Ab4     = QK_MIDI_NOTE_G_SHARP_4,
 | 
			
		||||
    MI_A4      = QK_MIDI_NOTE_A_4,
 | 
			
		||||
    MI_As4     = QK_MIDI_NOTE_A_SHARP_4,
 | 
			
		||||
    MI_Bb4     = QK_MIDI_NOTE_A_SHARP_4,
 | 
			
		||||
    MI_B4      = QK_MIDI_NOTE_B_4,
 | 
			
		||||
    MI_C5      = QK_MIDI_NOTE_C_5,
 | 
			
		||||
    MI_Cs5     = QK_MIDI_NOTE_C_SHARP_5,
 | 
			
		||||
    MI_Db5     = QK_MIDI_NOTE_C_SHARP_5,
 | 
			
		||||
    MI_D5      = QK_MIDI_NOTE_D_5,
 | 
			
		||||
    MI_Ds5     = QK_MIDI_NOTE_D_SHARP_5,
 | 
			
		||||
    MI_Eb5     = QK_MIDI_NOTE_D_SHARP_5,
 | 
			
		||||
    MI_E5      = QK_MIDI_NOTE_E_5,
 | 
			
		||||
    MI_F5      = QK_MIDI_NOTE_F_5,
 | 
			
		||||
    MI_Fs5     = QK_MIDI_NOTE_F_SHARP_5,
 | 
			
		||||
    MI_Gb5     = QK_MIDI_NOTE_F_SHARP_5,
 | 
			
		||||
    MI_G5      = QK_MIDI_NOTE_G_5,
 | 
			
		||||
    MI_Gs5     = QK_MIDI_NOTE_G_SHARP_5,
 | 
			
		||||
    MI_Ab5     = QK_MIDI_NOTE_G_SHARP_5,
 | 
			
		||||
    MI_A5      = QK_MIDI_NOTE_A_5,
 | 
			
		||||
    MI_As5     = QK_MIDI_NOTE_A_SHARP_5,
 | 
			
		||||
    MI_Bb5     = QK_MIDI_NOTE_A_SHARP_5,
 | 
			
		||||
    MI_B5      = QK_MIDI_NOTE_B_5,
 | 
			
		||||
    MI_OCN2    = QK_MIDI_OCTAVE_N2,
 | 
			
		||||
    MI_OCN1    = QK_MIDI_OCTAVE_N1,
 | 
			
		||||
    MI_OC0     = QK_MIDI_OCTAVE_0,
 | 
			
		||||
    MI_OC1     = QK_MIDI_OCTAVE_1,
 | 
			
		||||
    MI_OC2     = QK_MIDI_OCTAVE_2,
 | 
			
		||||
    MI_OC3     = QK_MIDI_OCTAVE_3,
 | 
			
		||||
    MI_OC4     = QK_MIDI_OCTAVE_4,
 | 
			
		||||
    MI_OC5     = QK_MIDI_OCTAVE_5,
 | 
			
		||||
    MI_OC6     = QK_MIDI_OCTAVE_6,
 | 
			
		||||
    MI_OC7     = QK_MIDI_OCTAVE_7,
 | 
			
		||||
    MI_OCTD    = QK_MIDI_OCTAVE_DOWN,
 | 
			
		||||
    MI_OCTU    = QK_MIDI_OCTAVE_UP,
 | 
			
		||||
    MI_TRN6    = QK_MIDI_TRANSPOSE_N6,
 | 
			
		||||
    MI_TRN5    = QK_MIDI_TRANSPOSE_N5,
 | 
			
		||||
    MI_TRN4    = QK_MIDI_TRANSPOSE_N4,
 | 
			
		||||
    MI_TRN3    = QK_MIDI_TRANSPOSE_N3,
 | 
			
		||||
    MI_TRN2    = QK_MIDI_TRANSPOSE_N2,
 | 
			
		||||
    MI_TRN1    = QK_MIDI_TRANSPOSE_N1,
 | 
			
		||||
    MI_TR0     = QK_MIDI_TRANSPOSE_0,
 | 
			
		||||
    MI_TR1     = QK_MIDI_TRANSPOSE_1,
 | 
			
		||||
    MI_TR2     = QK_MIDI_TRANSPOSE_2,
 | 
			
		||||
    MI_TR3     = QK_MIDI_TRANSPOSE_3,
 | 
			
		||||
    MI_TR4     = QK_MIDI_TRANSPOSE_4,
 | 
			
		||||
    MI_TR5     = QK_MIDI_TRANSPOSE_5,
 | 
			
		||||
    MI_TR6     = QK_MIDI_TRANSPOSE_6,
 | 
			
		||||
    MI_TRSD    = QK_MIDI_TRANSPOSE_DOWN,
 | 
			
		||||
    MI_TRSU    = QK_MIDI_TRANSPOSE_UP,
 | 
			
		||||
    MI_VL0     = QK_MIDI_VELOCITY_0,
 | 
			
		||||
    MI_VL1     = QK_MIDI_VELOCITY_1,
 | 
			
		||||
    MI_VL2     = QK_MIDI_VELOCITY_2,
 | 
			
		||||
    MI_VL3     = QK_MIDI_VELOCITY_3,
 | 
			
		||||
    MI_VL4     = QK_MIDI_VELOCITY_4,
 | 
			
		||||
    MI_VL5     = QK_MIDI_VELOCITY_5,
 | 
			
		||||
    MI_VL6     = QK_MIDI_VELOCITY_6,
 | 
			
		||||
    MI_VL7     = QK_MIDI_VELOCITY_7,
 | 
			
		||||
    MI_VL8     = QK_MIDI_VELOCITY_8,
 | 
			
		||||
    MI_VL9     = QK_MIDI_VELOCITY_9,
 | 
			
		||||
    MI_VL10    = QK_MIDI_VELOCITY_10,
 | 
			
		||||
    MI_VELD    = QK_MIDI_VELOCITY_DOWN,
 | 
			
		||||
    MI_VELU    = QK_MIDI_VELOCITY_UP,
 | 
			
		||||
    MI_CH1     = QK_MIDI_CHANNEL_1,
 | 
			
		||||
    MI_CH2     = QK_MIDI_CHANNEL_2,
 | 
			
		||||
    MI_CH3     = QK_MIDI_CHANNEL_3,
 | 
			
		||||
    MI_CH4     = QK_MIDI_CHANNEL_4,
 | 
			
		||||
    MI_CH5     = QK_MIDI_CHANNEL_5,
 | 
			
		||||
    MI_CH6     = QK_MIDI_CHANNEL_6,
 | 
			
		||||
    MI_CH7     = QK_MIDI_CHANNEL_7,
 | 
			
		||||
    MI_CH8     = QK_MIDI_CHANNEL_8,
 | 
			
		||||
    MI_CH9     = QK_MIDI_CHANNEL_9,
 | 
			
		||||
    MI_CH10    = QK_MIDI_CHANNEL_10,
 | 
			
		||||
    MI_CH11    = QK_MIDI_CHANNEL_11,
 | 
			
		||||
    MI_CH12    = QK_MIDI_CHANNEL_12,
 | 
			
		||||
    MI_CH13    = QK_MIDI_CHANNEL_13,
 | 
			
		||||
    MI_CH14    = QK_MIDI_CHANNEL_14,
 | 
			
		||||
    MI_CH15    = QK_MIDI_CHANNEL_15,
 | 
			
		||||
    MI_CH16    = QK_MIDI_CHANNEL_16,
 | 
			
		||||
    MI_CHND    = QK_MIDI_CHANNEL_DOWN,
 | 
			
		||||
    MI_CHNU    = QK_MIDI_CHANNEL_UP,
 | 
			
		||||
    MI_AOFF    = QK_MIDI_ALL_NOTES_OFF,
 | 
			
		||||
    MI_SUST    = QK_MIDI_SUSTAIN,
 | 
			
		||||
    MI_PORT    = QK_MIDI_PORTAMENTO,
 | 
			
		||||
    MI_SOST    = QK_MIDI_SOSTENUTO,
 | 
			
		||||
    MI_SOFT    = QK_MIDI_SOFT,
 | 
			
		||||
    MI_LEG     = QK_MIDI_LEGATO,
 | 
			
		||||
    MI_MOD     = QK_MIDI_MODULATION,
 | 
			
		||||
    MI_MODD    = QK_MIDI_MODULATION_SPEED_DOWN,
 | 
			
		||||
    MI_MODU    = QK_MIDI_MODULATION_SPEED_UP,
 | 
			
		||||
    MI_BNDD    = QK_MIDI_PITCH_BEND_DOWN,
 | 
			
		||||
    MI_BNDU    = QK_MIDI_PITCH_BEND_UP,
 | 
			
		||||
    JS_0       = QK_JOYSTICK_BUTTON_0,
 | 
			
		||||
    JS_1       = QK_JOYSTICK_BUTTON_1,
 | 
			
		||||
    JS_2       = QK_JOYSTICK_BUTTON_2,
 | 
			
		||||
| 
						 | 
				
			
			@ -1151,7 +1295,7 @@ enum qk_keycode_defines {
 | 
			
		|||
#define IS_MODIFIERS_KEYCODE(code) ((code) >= KC_LEFT_CTRL && (code) <= KC_RIGHT_GUI)
 | 
			
		||||
#define IS_SWAP_HANDS_KEYCODE(code) ((code) >= SH_TG && (code) <= SH_OS)
 | 
			
		||||
#define IS_MAGIC_KEYCODE(code) ((code) >= MAGIC_SWAP_CONTROL_CAPSLOCK && (code) <= MAGIC_TOGGLE_ESCAPE_CAPSLOCK)
 | 
			
		||||
#define IS_MIDI_KEYCODE(code) ((code) >= MI_ON && (code) <= MI_BENDU)
 | 
			
		||||
#define IS_MIDI_KEYCODE(code) ((code) >= QK_MIDI_ON && (code) <= QK_MIDI_PITCH_BEND_UP)
 | 
			
		||||
#define IS_SEQUENCER_KEYCODE(code) ((code) >= SQ_ON && (code) <= SQ_SCLR)
 | 
			
		||||
#define IS_JOYSTICK_KEYCODE(code) ((code) >= QK_JOYSTICK_BUTTON_0 && (code) <= QK_JOYSTICK_BUTTON_31)
 | 
			
		||||
#define IS_PROGRAMMABLE_BUTTON_KEYCODE(code) ((code) >= QK_PROGRAMMABLE_BUTTON_1 && (code) <= QK_PROGRAMMABLE_BUTTON_32)
 | 
			
		||||
| 
						 | 
				
			
			@ -1161,4 +1305,3 @@ enum qk_keycode_defines {
 | 
			
		|||
#define IS_BACKLIGHT_KEYCODE(code) ((code) >= QK_BACKLIGHT_ON && (code) <= QK_BACKLIGHT_TOGGLE_BREATHING)
 | 
			
		||||
#define IS_RGB_KEYCODE(code) ((code) >= RGB_TOG && (code) <= RGB_MODE_TWINKLE)
 | 
			
		||||
#define IS_QUANTUM_KEYCODE(code) ((code) >= QK_BOOTLOADER && (code) <= QK_AUTOCORRECT_TOGGLE)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ inline uint8_t compute_velocity(uint8_t setting) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void midi_init(void) {
 | 
			
		||||
    midi_config.octave              = MI_OCT_2 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    midi_config.octave              = QK_MIDI_OCTAVE_2 - MIDI_OCTAVE_MIN;
 | 
			
		||||
    midi_config.transpose           = 0;
 | 
			
		||||
    midi_config.velocity            = 127;
 | 
			
		||||
    midi_config.channel             = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,13 +103,13 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                dprintf("midi octave %d\n", midi_config.octave);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_OCTD:
 | 
			
		||||
        case QK_MIDI_OCTAVE_DOWN:
 | 
			
		||||
            if (record->event.pressed && midi_config.octave > 0) {
 | 
			
		||||
                midi_config.octave--;
 | 
			
		||||
                dprintf("midi octave %d\n", midi_config.octave);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_OCTU:
 | 
			
		||||
        case QK_MIDI_OCTAVE_UP:
 | 
			
		||||
            if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) {
 | 
			
		||||
                midi_config.octave++;
 | 
			
		||||
                dprintf("midi octave %d\n", midi_config.octave);
 | 
			
		||||
| 
						 | 
				
			
			@ -117,18 +117,18 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            return false;
 | 
			
		||||
        case MIDI_TRANSPOSE_MIN ... MIDI_TRANSPOSE_MAX:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_config.transpose = keycode - MI_TRNS_0;
 | 
			
		||||
                midi_config.transpose = keycode - QK_MIDI_TRANSPOSE_0;
 | 
			
		||||
                dprintf("midi transpose %d\n", midi_config.transpose);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_TRNSD:
 | 
			
		||||
            if (record->event.pressed && midi_config.transpose > (MIDI_TRANSPOSE_MIN - MI_TRNS_0)) {
 | 
			
		||||
        case QK_MIDI_TRANSPOSE_DOWN:
 | 
			
		||||
            if (record->event.pressed && midi_config.transpose > (MIDI_TRANSPOSE_MIN - QK_MIDI_TRANSPOSE_0)) {
 | 
			
		||||
                midi_config.transpose--;
 | 
			
		||||
                dprintf("midi transpose %d\n", midi_config.transpose);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_TRNSU:
 | 
			
		||||
            if (record->event.pressed && midi_config.transpose < (MIDI_TRANSPOSE_MAX - MI_TRNS_0)) {
 | 
			
		||||
        case QK_MIDI_TRANSPOSE_UP:
 | 
			
		||||
            if (record->event.pressed && midi_config.transpose < (MIDI_TRANSPOSE_MAX - QK_MIDI_TRANSPOSE_0)) {
 | 
			
		||||
                const bool positive = midi_config.transpose > 0;
 | 
			
		||||
                midi_config.transpose++;
 | 
			
		||||
                if (positive && midi_config.transpose < 0) midi_config.transpose--;
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                dprintf("midi velocity %d\n", midi_config.velocity);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_VELD:
 | 
			
		||||
        case QK_MIDI_VELOCITY_DOWN:
 | 
			
		||||
            if (record->event.pressed && midi_config.velocity > 0) {
 | 
			
		||||
                if (midi_config.velocity == 127) {
 | 
			
		||||
                    midi_config.velocity -= 10;
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +154,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                dprintf("midi velocity %d\n", midi_config.velocity);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_VELU:
 | 
			
		||||
        case QK_MIDI_VELOCITY_UP:
 | 
			
		||||
            if (record->event.pressed && midi_config.velocity < 127) {
 | 
			
		||||
                if (midi_config.velocity < 115) {
 | 
			
		||||
                    midi_config.velocity += 13;
 | 
			
		||||
| 
						 | 
				
			
			@ -170,48 +170,48 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                dprintf("midi channel %d\n", midi_config.channel);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_CHD:
 | 
			
		||||
        case QK_MIDI_CHANNEL_DOWN:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_config.channel--;
 | 
			
		||||
                dprintf("midi channel %d\n", midi_config.channel);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_CHU:
 | 
			
		||||
        case QK_MIDI_CHANNEL_UP:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_config.channel++;
 | 
			
		||||
                dprintf("midi channel %d\n", midi_config.channel);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_ALLOFF:
 | 
			
		||||
        case QK_MIDI_ALL_NOTES_OFF:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0);
 | 
			
		||||
                dprintf("midi all notes off\n");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_SUS:
 | 
			
		||||
        case QK_MIDI_SUSTAIN:
 | 
			
		||||
            midi_send_cc(&midi_device, midi_config.channel, 0x40, record->event.pressed ? 127 : 0);
 | 
			
		||||
            dprintf("midi sustain %d\n", record->event.pressed);
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_PORT:
 | 
			
		||||
        case QK_MIDI_PORTAMENTO:
 | 
			
		||||
            midi_send_cc(&midi_device, midi_config.channel, 0x41, record->event.pressed ? 127 : 0);
 | 
			
		||||
            dprintf("midi portamento %d\n", record->event.pressed);
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_SOST:
 | 
			
		||||
        case QK_MIDI_SOSTENUTO:
 | 
			
		||||
            midi_send_cc(&midi_device, midi_config.channel, 0x42, record->event.pressed ? 127 : 0);
 | 
			
		||||
            dprintf("midi sostenuto %d\n", record->event.pressed);
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_SOFT:
 | 
			
		||||
        case QK_MIDI_SOFT:
 | 
			
		||||
            midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
 | 
			
		||||
            dprintf("midi soft %d\n", record->event.pressed);
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_LEG:
 | 
			
		||||
            midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0);
 | 
			
		||||
        case QK_MIDI_LEGATO:
 | 
			
		||||
            midi_send_cc(&midi_device, midi_config.channel, 0x44, record->event.pressed ? 127 : 0);
 | 
			
		||||
            dprintf("midi legato %d\n", record->event.pressed);
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_MOD:
 | 
			
		||||
        case QK_MIDI_MODULATION:
 | 
			
		||||
            midi_modulation_step = record->event.pressed ? 1 : -1;
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_MODSD:
 | 
			
		||||
        case QK_MIDI_MODULATION_SPEED_DOWN:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_config.modulation_interval++;
 | 
			
		||||
                // prevent overflow
 | 
			
		||||
| 
						 | 
				
			
			@ -219,13 +219,13 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                dprintf("midi modulation interval %d\n", midi_config.modulation_interval);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_MODSU:
 | 
			
		||||
        case QK_MIDI_MODULATION_SPEED_UP:
 | 
			
		||||
            if (record->event.pressed && midi_config.modulation_interval > 0) {
 | 
			
		||||
                midi_config.modulation_interval--;
 | 
			
		||||
                dprintf("midi modulation interval %d\n", midi_config.modulation_interval);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_BENDD:
 | 
			
		||||
        case QK_MIDI_PITCH_BEND_DOWN:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_send_pitchbend(&midi_device, midi_config.channel, -0x2000);
 | 
			
		||||
                dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, -0x2000);
 | 
			
		||||
| 
						 | 
				
			
			@ -234,7 +234,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, 0);
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MI_BENDU:
 | 
			
		||||
        case QK_MIDI_PITCH_BEND_UP:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                midi_send_pitchbend(&midi_device, midi_config.channel, 0x1fff);
 | 
			
		||||
                dprintf("midi pitchbend channel:%d amount:%d\n", midi_config.channel, 0x1fff);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -120,17 +120,17 @@ bool process_music(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (keycode == MI_ON && record->event.pressed) {
 | 
			
		||||
    if (keycode == QK_MIDI_ON && record->event.pressed) {
 | 
			
		||||
        midi_on();
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (keycode == MI_OFF && record->event.pressed) {
 | 
			
		||||
    if (keycode == QK_MIDI_OFF && record->event.pressed) {
 | 
			
		||||
        midi_off();
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (keycode == MI_TOG && record->event.pressed) {
 | 
			
		||||
    if (keycode == QK_MIDI_TOGGLE && record->event.pressed) {
 | 
			
		||||
        if (midi_activated) {
 | 
			
		||||
            midi_off();
 | 
			
		||||
        } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -193,16 +193,16 @@
 | 
			
		|||
#define QK_SWAP_HANDS_GET_TAP_KEYCODE(kc) ((kc)&0xFF)
 | 
			
		||||
 | 
			
		||||
// MIDI aliases
 | 
			
		||||
#define MIDI_TONE_MIN MI_C
 | 
			
		||||
#define MIDI_TONE_MAX MI_B_5
 | 
			
		||||
#define MIDI_OCTAVE_MIN MI_OCT_N2
 | 
			
		||||
#define MIDI_OCTAVE_MAX MI_OCT_7
 | 
			
		||||
#define MIDI_TRANSPOSE_MIN MI_TRNS_N6
 | 
			
		||||
#define MIDI_TRANSPOSE_MAX MI_TRNS_6
 | 
			
		||||
#define MIDI_VELOCITY_MIN MI_VEL_0
 | 
			
		||||
#define MIDI_VELOCITY_MAX MI_VEL_10
 | 
			
		||||
#define MIDI_CHANNEL_MIN MI_CH1
 | 
			
		||||
#define MIDI_CHANNEL_MAX MI_CH16
 | 
			
		||||
#define MIDI_TONE_MIN QK_MIDI_NOTE_C_0
 | 
			
		||||
#define MIDI_TONE_MAX QK_MIDI_NOTE_B_5
 | 
			
		||||
#define MIDI_OCTAVE_MIN QK_MIDI_OCTAVE_N2
 | 
			
		||||
#define MIDI_OCTAVE_MAX QK_MIDI_OCTAVE_7
 | 
			
		||||
#define MIDI_TRANSPOSE_MIN QK_MIDI_TRANSPOSE_N6
 | 
			
		||||
#define MIDI_TRANSPOSE_MAX QK_MIDI_TRANSPOSE_6
 | 
			
		||||
#define MIDI_VELOCITY_MIN QK_MIDI_VELOCITY_0
 | 
			
		||||
#define MIDI_VELOCITY_MAX QK_MIDI_VELOCITY_10
 | 
			
		||||
#define MIDI_CHANNEL_MIN QK_MIDI_CHANNEL_1
 | 
			
		||||
#define MIDI_CHANNEL_MAX QK_MIDI_CHANNEL_16
 | 
			
		||||
 | 
			
		||||
// TODO: somehow migrate sequencer to DD?
 | 
			
		||||
#include "sequencer.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,6 +138,136 @@
 | 
			
		|||
#define MUV_IN QK_AUDIO_VOICE_NEXT
 | 
			
		||||
#define MUV_DE QK_AUDIO_VOICE_PREVIOUS
 | 
			
		||||
 | 
			
		||||
#define MI_TOG QK_MIDI_TOGGLE
 | 
			
		||||
#define MI_C_1 QK_MIDI_NOTE_C_1
 | 
			
		||||
#define MI_Cs_1 QK_MIDI_NOTE_C_SHARP_1
 | 
			
		||||
#define MI_Db_1 QK_MIDI_NOTE_C_SHARP_1
 | 
			
		||||
#define MI_D_1 QK_MIDI_NOTE_D_1
 | 
			
		||||
#define MI_Ds_1 QK_MIDI_NOTE_D_SHARP_1
 | 
			
		||||
#define MI_Eb_1 QK_MIDI_NOTE_D_SHARP_1
 | 
			
		||||
#define MI_E_1 QK_MIDI_NOTE_E_1
 | 
			
		||||
#define MI_F_1 QK_MIDI_NOTE_F_1
 | 
			
		||||
#define MI_Fs_1 QK_MIDI_NOTE_F_SHARP_1
 | 
			
		||||
#define MI_Gb_1 QK_MIDI_NOTE_F_SHARP_1
 | 
			
		||||
#define MI_G_1 QK_MIDI_NOTE_G_1
 | 
			
		||||
#define MI_Gs_1 QK_MIDI_NOTE_G_SHARP_1
 | 
			
		||||
#define MI_Ab_1 QK_MIDI_NOTE_G_SHARP_1
 | 
			
		||||
#define MI_A_1 QK_MIDI_NOTE_A_1
 | 
			
		||||
#define MI_As_1 QK_MIDI_NOTE_A_SHARP_1
 | 
			
		||||
#define MI_Bb_1 QK_MIDI_NOTE_A_SHARP_1
 | 
			
		||||
#define MI_B_1 QK_MIDI_NOTE_B_1
 | 
			
		||||
#define MI_C_2 QK_MIDI_NOTE_C_2
 | 
			
		||||
#define MI_Cs_2 QK_MIDI_NOTE_C_SHARP_2
 | 
			
		||||
#define MI_Db_2 QK_MIDI_NOTE_C_SHARP_2
 | 
			
		||||
#define MI_D_2 QK_MIDI_NOTE_D_2
 | 
			
		||||
#define MI_Ds_2 QK_MIDI_NOTE_D_SHARP_2
 | 
			
		||||
#define MI_Eb_2 QK_MIDI_NOTE_D_SHARP_2
 | 
			
		||||
#define MI_E_2 QK_MIDI_NOTE_E_2
 | 
			
		||||
#define MI_F_2 QK_MIDI_NOTE_F_2
 | 
			
		||||
#define MI_Fs_2 QK_MIDI_NOTE_F_SHARP_2
 | 
			
		||||
#define MI_Gb_2 QK_MIDI_NOTE_F_SHARP_2
 | 
			
		||||
#define MI_G_2 QK_MIDI_NOTE_G_2
 | 
			
		||||
#define MI_Gs_2 QK_MIDI_NOTE_G_SHARP_2
 | 
			
		||||
#define MI_Ab_2 QK_MIDI_NOTE_G_SHARP_2
 | 
			
		||||
#define MI_A_2 QK_MIDI_NOTE_A_2
 | 
			
		||||
#define MI_As_2 QK_MIDI_NOTE_A_SHARP_2
 | 
			
		||||
#define MI_Bb_2 QK_MIDI_NOTE_A_SHARP_2
 | 
			
		||||
#define MI_B_2 QK_MIDI_NOTE_B_2
 | 
			
		||||
#define MI_C_3 QK_MIDI_NOTE_C_3
 | 
			
		||||
#define MI_Cs_3 QK_MIDI_NOTE_C_SHARP_3
 | 
			
		||||
#define MI_Db_3 QK_MIDI_NOTE_C_SHARP_3
 | 
			
		||||
#define MI_D_3 QK_MIDI_NOTE_D_3
 | 
			
		||||
#define MI_Ds_3 QK_MIDI_NOTE_D_SHARP_3
 | 
			
		||||
#define MI_Eb_3 QK_MIDI_NOTE_D_SHARP_3
 | 
			
		||||
#define MI_E_3 QK_MIDI_NOTE_E_3
 | 
			
		||||
#define MI_F_3 QK_MIDI_NOTE_F_3
 | 
			
		||||
#define MI_Fs_3 QK_MIDI_NOTE_F_SHARP_3
 | 
			
		||||
#define MI_Gb_3 QK_MIDI_NOTE_F_SHARP_3
 | 
			
		||||
#define MI_G_3 QK_MIDI_NOTE_G_3
 | 
			
		||||
#define MI_Gs_3 QK_MIDI_NOTE_G_SHARP_3
 | 
			
		||||
#define MI_Ab_3 QK_MIDI_NOTE_G_SHARP_3
 | 
			
		||||
#define MI_A_3 QK_MIDI_NOTE_A_3
 | 
			
		||||
#define MI_As_3 QK_MIDI_NOTE_A_SHARP_3
 | 
			
		||||
#define MI_Bb_3 QK_MIDI_NOTE_A_SHARP_3
 | 
			
		||||
#define MI_B_3 QK_MIDI_NOTE_B_3
 | 
			
		||||
#define MI_C_4 QK_MIDI_NOTE_C_4
 | 
			
		||||
#define MI_Cs_4 QK_MIDI_NOTE_C_SHARP_4
 | 
			
		||||
#define MI_Db_4 QK_MIDI_NOTE_C_SHARP_4
 | 
			
		||||
#define MI_D_4 QK_MIDI_NOTE_D_4
 | 
			
		||||
#define MI_Ds_4 QK_MIDI_NOTE_D_SHARP_4
 | 
			
		||||
#define MI_Eb_4 QK_MIDI_NOTE_D_SHARP_4
 | 
			
		||||
#define MI_E_4 QK_MIDI_NOTE_E_4
 | 
			
		||||
#define MI_F_4 QK_MIDI_NOTE_F_4
 | 
			
		||||
#define MI_Fs_4 QK_MIDI_NOTE_F_SHARP_4
 | 
			
		||||
#define MI_Gb_4 QK_MIDI_NOTE_F_SHARP_4
 | 
			
		||||
#define MI_G_4 QK_MIDI_NOTE_G_4
 | 
			
		||||
#define MI_Gs_4 QK_MIDI_NOTE_G_SHARP_4
 | 
			
		||||
#define MI_Ab_4 QK_MIDI_NOTE_G_SHARP_4
 | 
			
		||||
#define MI_A_4 QK_MIDI_NOTE_A_4
 | 
			
		||||
#define MI_As_4 QK_MIDI_NOTE_A_SHARP_4
 | 
			
		||||
#define MI_Bb_4 QK_MIDI_NOTE_A_SHARP_4
 | 
			
		||||
#define MI_B_4 QK_MIDI_NOTE_B_4
 | 
			
		||||
#define MI_C_5 QK_MIDI_NOTE_C_5
 | 
			
		||||
#define MI_Cs_5 QK_MIDI_NOTE_C_SHARP_5
 | 
			
		||||
#define MI_Db_5 QK_MIDI_NOTE_C_SHARP_5
 | 
			
		||||
#define MI_D_5 QK_MIDI_NOTE_D_5
 | 
			
		||||
#define MI_Ds_5 QK_MIDI_NOTE_D_SHARP_5
 | 
			
		||||
#define MI_Eb_5 QK_MIDI_NOTE_D_SHARP_5
 | 
			
		||||
#define MI_E_5 QK_MIDI_NOTE_E_5
 | 
			
		||||
#define MI_F_5 QK_MIDI_NOTE_F_5
 | 
			
		||||
#define MI_Fs_5 QK_MIDI_NOTE_F_SHARP_5
 | 
			
		||||
#define MI_Gb_5 QK_MIDI_NOTE_F_SHARP_5
 | 
			
		||||
#define MI_G_5 QK_MIDI_NOTE_G_5
 | 
			
		||||
#define MI_Gs_5 QK_MIDI_NOTE_G_SHARP_5
 | 
			
		||||
#define MI_Ab_5 QK_MIDI_NOTE_G_SHARP_5
 | 
			
		||||
#define MI_A_5 QK_MIDI_NOTE_A_5
 | 
			
		||||
#define MI_As_5 QK_MIDI_NOTE_A_SHARP_5
 | 
			
		||||
#define MI_Bb_5 QK_MIDI_NOTE_A_SHARP_5
 | 
			
		||||
#define MI_B_5 QK_MIDI_NOTE_B_5
 | 
			
		||||
#define MI_OCT_N2 QK_MIDI_OCTAVE_N2
 | 
			
		||||
#define MI_OCT_N1 QK_MIDI_OCTAVE_N1
 | 
			
		||||
#define MI_OCT_0 QK_MIDI_OCTAVE_0
 | 
			
		||||
#define MI_OCT_1 QK_MIDI_OCTAVE_1
 | 
			
		||||
#define MI_OCT_2 QK_MIDI_OCTAVE_2
 | 
			
		||||
#define MI_OCT_3 QK_MIDI_OCTAVE_3
 | 
			
		||||
#define MI_OCT_4 QK_MIDI_OCTAVE_4
 | 
			
		||||
#define MI_OCT_5 QK_MIDI_OCTAVE_5
 | 
			
		||||
#define MI_OCT_6 QK_MIDI_OCTAVE_6
 | 
			
		||||
#define MI_OCT_7 QK_MIDI_OCTAVE_7
 | 
			
		||||
#define MI_TRNS_N6 QK_MIDI_TRANSPOSE_N6
 | 
			
		||||
#define MI_TRNS_N5 QK_MIDI_TRANSPOSE_N5
 | 
			
		||||
#define MI_TRNS_N4 QK_MIDI_TRANSPOSE_N4
 | 
			
		||||
#define MI_TRNS_N3 QK_MIDI_TRANSPOSE_N3
 | 
			
		||||
#define MI_TRNS_N2 QK_MIDI_TRANSPOSE_N2
 | 
			
		||||
#define MI_TRNS_N1 QK_MIDI_TRANSPOSE_N1
 | 
			
		||||
#define MI_TRNS_0 QK_MIDI_TRANSPOSE_0
 | 
			
		||||
#define MI_TRNS_1 QK_MIDI_TRANSPOSE_1
 | 
			
		||||
#define MI_TRNS_2 QK_MIDI_TRANSPOSE_2
 | 
			
		||||
#define MI_TRNS_3 QK_MIDI_TRANSPOSE_3
 | 
			
		||||
#define MI_TRNS_4 QK_MIDI_TRANSPOSE_4
 | 
			
		||||
#define MI_TRNS_5 QK_MIDI_TRANSPOSE_5
 | 
			
		||||
#define MI_TRNS_6 QK_MIDI_TRANSPOSE_6
 | 
			
		||||
#define MI_TRNSD QK_MIDI_TRANSPOSE_DOWN
 | 
			
		||||
#define MI_TRNSU QK_MIDI_TRANSPOSE_UP
 | 
			
		||||
#define MI_VEL_0 QK_MIDI_VELOCITY_0
 | 
			
		||||
#define MI_VEL_1 QK_MIDI_VELOCITY_1
 | 
			
		||||
#define MI_VEL_2 QK_MIDI_VELOCITY_2
 | 
			
		||||
#define MI_VEL_3 QK_MIDI_VELOCITY_3
 | 
			
		||||
#define MI_VEL_4 QK_MIDI_VELOCITY_4
 | 
			
		||||
#define MI_VEL_5 QK_MIDI_VELOCITY_5
 | 
			
		||||
#define MI_VEL_6 QK_MIDI_VELOCITY_6
 | 
			
		||||
#define MI_VEL_7 QK_MIDI_VELOCITY_7
 | 
			
		||||
#define MI_VEL_8 QK_MIDI_VELOCITY_8
 | 
			
		||||
#define MI_VEL_9 QK_MIDI_VELOCITY_9
 | 
			
		||||
#define MI_VEL_10 QK_MIDI_VELOCITY_10
 | 
			
		||||
#define MI_CHD QK_MIDI_CHANNEL_DOWN
 | 
			
		||||
#define MI_CHU QK_MIDI_CHANNEL_UP
 | 
			
		||||
#define MI_ALLOFF QK_MIDI_ALL_NOTES_OFF
 | 
			
		||||
#define MI_MODSD QK_MIDI_MODULATION_SPEED_DOWN
 | 
			
		||||
#define MI_MODSU QK_MIDI_MODULATION_SPEED_UP
 | 
			
		||||
#define MI_BENDD QK_MIDI_PITCH_BEND_DOWN
 | 
			
		||||
#define MI_BENDU QK_MIDI_PITCH_BEND_UP
 | 
			
		||||
 | 
			
		||||
#define TERM_ON _Static_assert(false, "The Terminal feature has been removed from QMK. Please remove use of TERM_ON/TERM_OFF from your keymap.")
 | 
			
		||||
#define TERM_OFF _Static_assert(false, "The Terminal feature has been removed from QMK.. Please remove use of TERM_ON/TERM_OFF from your keymap.")
 | 
			
		||||
// #define RESET _Static_assert(false, "The RESET keycode has been removed from QMK.. Please remove use from your keymap.")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -371,14 +371,14 @@ void setUpMatrixScanSequencerTest(void) {
 | 
			
		|||
    sequencer_config.resolution = SQ_RES_16;
 | 
			
		||||
 | 
			
		||||
    // Configure the notes for each track
 | 
			
		||||
    sequencer_config.track_notes[0] = MI_C;
 | 
			
		||||
    sequencer_config.track_notes[1] = MI_D;
 | 
			
		||||
    sequencer_config.track_notes[2] = MI_E;
 | 
			
		||||
    sequencer_config.track_notes[3] = MI_F;
 | 
			
		||||
    sequencer_config.track_notes[4] = MI_G;
 | 
			
		||||
    sequencer_config.track_notes[5] = MI_A;
 | 
			
		||||
    sequencer_config.track_notes[6] = MI_B;
 | 
			
		||||
    sequencer_config.track_notes[7] = MI_C;
 | 
			
		||||
    sequencer_config.track_notes[0] = QK_MIDI_NOTE_C_0;
 | 
			
		||||
    sequencer_config.track_notes[1] = QK_MIDI_NOTE_D_0;
 | 
			
		||||
    sequencer_config.track_notes[2] = QK_MIDI_NOTE_E_0;
 | 
			
		||||
    sequencer_config.track_notes[3] = QK_MIDI_NOTE_F_0;
 | 
			
		||||
    sequencer_config.track_notes[4] = QK_MIDI_NOTE_G_0;
 | 
			
		||||
    sequencer_config.track_notes[5] = QK_MIDI_NOTE_A_0;
 | 
			
		||||
    sequencer_config.track_notes[6] = QK_MIDI_NOTE_B_0;
 | 
			
		||||
    sequencer_config.track_notes[7] = QK_MIDI_NOTE_C_0;
 | 
			
		||||
 | 
			
		||||
    // Turn on some steps
 | 
			
		||||
    sequencer_config.steps[0] = (1 << 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -389,7 +389,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldAttackFirstTrackOfFirstStep)
 | 
			
		|||
    setUpMatrixScanSequencerTest();
 | 
			
		||||
 | 
			
		||||
    sequencer_task();
 | 
			
		||||
    EXPECT_EQ(last_noteon, MI_C);
 | 
			
		||||
    EXPECT_EQ(last_noteon, QK_MIDI_NOTE_C_0);
 | 
			
		||||
    EXPECT_EQ(last_noteoff, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -499,7 +499,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldReleaseFirstTrackFirstStep) {
 | 
			
		|||
 | 
			
		||||
    sequencer_task();
 | 
			
		||||
    EXPECT_EQ(last_noteon, 0);
 | 
			
		||||
    EXPECT_EQ(last_noteoff, MI_C);
 | 
			
		||||
    EXPECT_EQ(last_noteoff, QK_MIDI_NOTE_C_0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(SequencerTest, TestMatrixScanSequencerShouldEnterPausePhaseAfterRelease) {
 | 
			
		||||
| 
						 | 
				
			
			@ -565,7 +565,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldProcessSecondTrackOnTime) {
 | 
			
		|||
    advance_time(SEQUENCER_TRACK_THROTTLE);
 | 
			
		||||
 | 
			
		||||
    sequencer_task();
 | 
			
		||||
    EXPECT_EQ(last_noteon, MI_D);
 | 
			
		||||
    EXPECT_EQ(last_noteon, QK_MIDI_NOTE_D_0);
 | 
			
		||||
    EXPECT_EQ(last_noteoff, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -140,19 +140,19 @@
 | 
			
		|||
 */
 | 
			
		||||
// Not sure why, but this does not work (possibly due to the lowercase 's'?)
 | 
			
		||||
// #ifdef MIDI_ADVANCED
 | 
			
		||||
// #define __GUITAR_1E_L______________________________ MI_E_1,  MI_F_1,  MI_Fs_1, MI_G_1,  MI_Gs_1
 | 
			
		||||
// #define __GUITAR_2A_L______________________________ MI_A_1,  MI_As_1, MI_B_1,  MI_C_2,  MI_Cs_2
 | 
			
		||||
// #define __GUITAR_3D_L______________________________ MI_D_2,  MI_Ds_2, MI_E_2,  MI_F_2,  MI_Fs_2
 | 
			
		||||
// #define __GUITAR_4G_L______________________________ MI_G_2,  MI_Gs_2, MI_A_2,  MI_As_2, MI_B_2
 | 
			
		||||
// #define __GUITAR_5B_L______________________________ MI_B_2,  MI_C_3,  MI_Cs_3, MI_D_3,  MI_Ds_3
 | 
			
		||||
// #define __GUITAR_6E_L______________________________ MI_E_3,  MI_F_3,  MI_Fs_3, MI_G_3,  MI_Gs_3
 | 
			
		||||
// #define __GUITAR_1E_L______________________________ MI_E1,  MI_F1,  MI_Fs1, MI_G1,  MI_Gs1
 | 
			
		||||
// #define __GUITAR_2A_L______________________________ MI_A1,  MI_As1, MI_B1,  MI_C2,  MI_Cs2
 | 
			
		||||
// #define __GUITAR_3D_L______________________________ MI_D2,  MI_Ds2, MI_E2,  MI_F2,  MI_Fs2
 | 
			
		||||
// #define __GUITAR_4G_L______________________________ MI_G2,  MI_Gs2, MI_A2,  MI_As2, MI_B2
 | 
			
		||||
// #define __GUITAR_5B_L______________________________ MI_B2,  MI_C3,  MI_Cs3, MI_D3,  MI_Ds3
 | 
			
		||||
// #define __GUITAR_6E_L______________________________ MI_E3,  MI_F3,  MI_Fs3, MI_G3,  MI_Gs3
 | 
			
		||||
//
 | 
			
		||||
// #define __GUITAR_1E_R______________________________ MI_A_1,  MI_As_1, MI_B_1,  MI_C_2,  MI_Cs_2
 | 
			
		||||
// #define __GUITAR_2A_R______________________________ MI_D_2,  MI_Ds_2, MI_E_2,  MI_F_2,  MI_Fs_2
 | 
			
		||||
// #define __GUITAR_3D_R______________________________ MI_G_2,  MI_Gs_2, MI_A_2,  MI_As_2, MI_B_2
 | 
			
		||||
// #define __GUITAR_4G_R______________________________ MI_C_3,  MI_Cs_3, MI_D_3,  MI_Ds_3, MI_E_3
 | 
			
		||||
// #define __GUITAR_5B_R______________________________ MI_E_3,  MI_F_3,  MI_Fs_3, MI_G_3,  MI_Gs_3
 | 
			
		||||
// #define __GUITAR_6E_R______________________________ MI_A_3,  MI_As_3, MI_B_3,  MI_C_4,  MI_Cs_4
 | 
			
		||||
// #define __GUITAR_1E_R______________________________ MI_A1,  MI_As1, MI_B1,  MI_C2,  MI_Cs2
 | 
			
		||||
// #define __GUITAR_2A_R______________________________ MI_D2,  MI_Ds2, MI_E2,  MI_F2,  MI_Fs2
 | 
			
		||||
// #define __GUITAR_3D_R______________________________ MI_G2,  MI_Gs2, MI_A2,  MI_As2, MI_B2
 | 
			
		||||
// #define __GUITAR_4G_R______________________________ MI_C3,  MI_Cs3, MI_D3,  MI_Ds3, MI_E3
 | 
			
		||||
// #define __GUITAR_5B_R______________________________ MI_E3,  MI_F3,  MI_Fs3, MI_G3,  MI_Gs3
 | 
			
		||||
// #define __GUITAR_6E_R______________________________ MI_A3,  MI_As3, MI_B3,  MI_C4,  MI_Cs4
 | 
			
		||||
// #endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue