Added trimble and tempo adjustments!
This commit is contained in:
		
							parent
							
								
									943b5b7709
								
							
						
					
					
						commit
						29e495be2a
					
				
					 6 changed files with 189 additions and 110 deletions
				
			
		| 
						 | 
				
			
			@ -17,6 +17,13 @@
 | 
			
		|||
#define M_LW 1
 | 
			
		||||
#define M_RS 2
 | 
			
		||||
#define M_FN 3
 | 
			
		||||
#define M_T1 4
 | 
			
		||||
#define M_T2 5
 | 
			
		||||
#define M_T3 6
 | 
			
		||||
#define M_T4 7
 | 
			
		||||
#define M_TU 8
 | 
			
		||||
#define M_TD 9
 | 
			
		||||
#define M_DF 10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define _______ KC_TRNS
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
  { KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___, ___T___  },
 | 
			
		||||
  { KC_SLCK, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24,  KC_PAUS, KC_PSCR  },
 | 
			
		||||
  { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D  },
 | 
			
		||||
  { _______, M(M_T1), M(M_T2), M(M_T3), M(M_T4), M(M_TU), M(M_TD), M(M_DF), _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R  },
 | 
			
		||||
 },
 | 
			
		||||
 [_AD] = { /* ADJUST */
 | 
			
		||||
| 
						 | 
				
			
			@ -75,76 +82,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)
 | 
			
		||||
{
 | 
			
		||||
	if (order)
 | 
			
		||||
	{
 | 
			
		||||
		if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
 | 
			
		||||
		{
 | 
			
		||||
			layer_on(layer3);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
		    layer_off(layer3);
 | 
			
		||||
		    layer_off(layer4);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
 | 
			
		||||
		{
 | 
			
		||||
			layer_on(layer4);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			layer_off(layer3);
 | 
			
		||||
		    layer_off(layer4);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM fn_actions[] = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  // MACRODOWN only works in this function
 | 
			
		||||
      switch(id) {
 | 
			
		||||
        case M_LW:
 | 
			
		||||
          if (record->event.pressed) {
 | 
			
		||||
            #ifdef AUDIO_ENABLE
 | 
			
		||||
              println("PlayNotes LW");
 | 
			
		||||
              PLAY_NOTE_ARRAY(tone_lw, false, STACCATO);
 | 
			
		||||
            #endif
 | 
			
		||||
            layer_on(_LW);
 | 
			
		||||
            update_tri_layer(_LW, _RS, _FN);
 | 
			
		||||
          } else {
 | 
			
		||||
            layer_off(_LW);
 | 
			
		||||
            update_tri_layer(_LW, _RS, _FN);
 | 
			
		||||
          }
 | 
			
		||||
          break;
 | 
			
		||||
        case M_RS:
 | 
			
		||||
          if (record->event.pressed) {
 | 
			
		||||
            #ifdef AUDIO_ENABLE
 | 
			
		||||
              println("PlayNotes RS");
 | 
			
		||||
              PLAY_NOTE_ARRAY(tone_rs, false, LEGATO);
 | 
			
		||||
            #endif
 | 
			
		||||
            layer_on(_RS);
 | 
			
		||||
            update_tri_layer(_LW, _RS, _FN);
 | 
			
		||||
          } else {
 | 
			
		||||
            layer_off(_RS);
 | 
			
		||||
            update_tri_layer(_LW, _RS, _FN);
 | 
			
		||||
          }
 | 
			
		||||
          break;
 | 
			
		||||
		default:
 | 
			
		||||
        	break;
 | 
			
		||||
      }
 | 
			
		||||
    return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -152,20 +89,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		|||
float start_up[][2] = SONG(ODE_TO_JOY);
 | 
			
		||||
 | 
			
		||||
float tone_lw[][2] = {
 | 
			
		||||
	/*
 | 
			
		||||
	Q__NOTE(_C1   ) ,
 | 
			
		||||
	Q__NOTE(_CS1  ) ,
 | 
			
		||||
	Q__NOTE(_D1   ) ,
 | 
			
		||||
	Q__NOTE(_DS1  ) ,
 | 
			
		||||
	Q__NOTE(_E1   ) ,
 | 
			
		||||
	Q__NOTE(_F1   ) ,
 | 
			
		||||
	Q__NOTE(_FS1  ) ,
 | 
			
		||||
	Q__NOTE(_G1   ) ,
 | 
			
		||||
	Q__NOTE(_GS1  ) ,
 | 
			
		||||
	Q__NOTE(_A1   ) ,
 | 
			
		||||
	Q__NOTE(_AS1  ) ,
 | 
			
		||||
	Q__NOTE(_B1   ) ,
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	Q__NOTE(_C4   ) ,
 | 
			
		||||
	Q__NOTE(_CS4  ) ,
 | 
			
		||||
| 
						 | 
				
			
			@ -178,6 +101,7 @@ float tone_lw[][2] = {
 | 
			
		|||
	Q__NOTE(_GS4  ) ,
 | 
			
		||||
	Q__NOTE(_A4   ) ,
 | 
			
		||||
	Q__NOTE(_AS4  ) ,
 | 
			
		||||
 | 
			
		||||
	Q__NOTE(_B1   ) ,
 | 
			
		||||
 | 
			
		||||
	Q__NOTE(_C2   ) ,
 | 
			
		||||
| 
						 | 
				
			
			@ -266,14 +190,7 @@ float tone_lw[][2] = {
 | 
			
		|||
	Q__NOTE(_B8   ) ,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
float tone_rs[][2] = {
 | 
			
		||||
	Q__NOTE(_A4   ) ,
 | 
			
		||||
	Q__NOTE(_A4   ) ,
 | 
			
		||||
	Q__NOTE(_A4   ) ,
 | 
			
		||||
	Q__NOTE(_A4   ) ,
 | 
			
		||||
	Q__NOTE(_AS8  ) ,
 | 
			
		||||
	Q__NOTE(_B8   ) ,
 | 
			
		||||
};
 | 
			
		||||
float tone_rs[][2] = SONG(ROCK_A_BYE_BABY);
 | 
			
		||||
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
	init_notes();
 | 
			
		||||
| 
						 | 
				
			
			@ -282,3 +199,116 @@ void matrix_init_user(void) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)
 | 
			
		||||
{
 | 
			
		||||
	if (order)
 | 
			
		||||
	{
 | 
			
		||||
		if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
 | 
			
		||||
		{
 | 
			
		||||
			layer_on(layer3);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
		    layer_off(layer3);
 | 
			
		||||
		    layer_off(layer4);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
 | 
			
		||||
		{
 | 
			
		||||
			layer_on(layer4);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			layer_off(layer3);
 | 
			
		||||
		    layer_off(layer4);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM fn_actions[] = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	// MACRODOWN only works in this function
 | 
			
		||||
	switch(id)
 | 
			
		||||
	{
 | 
			
		||||
		case M_LW:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				#ifdef AUDIO_ENABLE
 | 
			
		||||
				PLAY_NOTE_ARRAY(tone_lw, false, STACCATO);
 | 
			
		||||
				#endif
 | 
			
		||||
				layer_on(_LW);
 | 
			
		||||
				update_tri_layer(_LW, _RS, _AD);
 | 
			
		||||
			} else {
 | 
			
		||||
				layer_off(_LW);
 | 
			
		||||
				update_tri_layer(_LW, _RS, _AD);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		case M_RS:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				#ifdef AUDIO_ENABLE
 | 
			
		||||
				PLAY_NOTE_ARRAY(tone_rs, false, LEGATO);
 | 
			
		||||
				#endif
 | 
			
		||||
				layer_on(_RS);
 | 
			
		||||
				update_tri_layer(_LW, _RS, _AD);
 | 
			
		||||
			} else {
 | 
			
		||||
				layer_off(_RS);
 | 
			
		||||
				update_tri_layer(_LW, _RS, _AD);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_FN:
 | 
			
		||||
			if (record->event.pressed) {
 | 
			
		||||
				layer_on(_FN);
 | 
			
		||||
			} else {
 | 
			
		||||
				layer_off(_FN);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_T1:
 | 
			
		||||
			if (record->event.pressed) set_timbre(TIMBRE_12);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_T2:
 | 
			
		||||
			if (record->event.pressed) set_timbre(TIMBRE_25);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_T3:
 | 
			
		||||
			if (record->event.pressed) set_timbre(TIMBRE_50);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_T4:
 | 
			
		||||
			if (record->event.pressed) set_timbre(TIMBRE_75);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		case M_TU:
 | 
			
		||||
			if (record->event.pressed) increase_tempo(10);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_TD:
 | 
			
		||||
			if (record->event.pressed) decrease_tempo(10);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case M_DF:
 | 
			
		||||
			if (record->event.pressed)
 | 
			
		||||
			{
 | 
			
		||||
				set_timbre(TIMBRE_DEFAULT);
 | 
			
		||||
				set_tempo(TEMPO_DEFAULT);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		default:
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
 | 
			
		||||
MOUSEKEY_ENABLE  = yes # Mouse keys(+4700)
 | 
			
		||||
EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
 | 
			
		||||
CONSOLE_ENABLE   = yes # Console for debug(+400)
 | 
			
		||||
CONSOLE_ENABLE   = no  # Console for debug(+400)
 | 
			
		||||
COMMAND_ENABLE   = yes # Commands for debug and configuration
 | 
			
		||||
NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
BACKLIGHT_ENABLE = no  # Enable keyboard backlight functionality
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue