Merge remote-tracking branch 'origin/master'
# Conflicts: # quantum/audio/voices.c
This commit is contained in:
		
						commit
						a8086126fe
					
				
					 5 changed files with 85 additions and 39 deletions
				
			
		| 
						 | 
				
			
			@ -62,6 +62,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		|||
/* Locking resynchronize hack */
 | 
			
		||||
#define LOCKING_RESYNC_ENABLE
 | 
			
		||||
 | 
			
		||||
// Enable Keyboard Locking via magic key
 | 
			
		||||
#define KEYBOARD_LOCK_ENABLE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Force NKRO
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,9 +13,9 @@
 | 
			
		|||
#define LAYER_DVORAK         2
 | 
			
		||||
#define LAYER_LOWER          3
 | 
			
		||||
#define LAYER_RAISE          4
 | 
			
		||||
#define LAYER_ADJUST         5
 | 
			
		||||
#define LAYER_FUNCTION       6
 | 
			
		||||
#define LAYER_MUSIC          7
 | 
			
		||||
#define LAYER_FUNCTION       5
 | 
			
		||||
#define LAYER_MUSIC          6
 | 
			
		||||
#define LAYER_ADJUST         7
 | 
			
		||||
 | 
			
		||||
#define MACRO_QWERTY         0
 | 
			
		||||
#define MACRO_COLEMAK        1
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +34,8 @@
 | 
			
		|||
#define MACRO_MUSIC_OFF     14
 | 
			
		||||
#define MACRO_AUDIO_ON      15
 | 
			
		||||
#define MACRO_AUDIO_OFF     16
 | 
			
		||||
#define MACRO_INC_VOICE     17
 | 
			
		||||
#define MACRO_DEC_VOICE     18
 | 
			
		||||
 | 
			
		||||
#define M_QWRTY             M(MACRO_QWERTY)
 | 
			
		||||
#define M_COLMK             M(MACRO_COLEMAK)
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +56,8 @@
 | 
			
		|||
#define MUS_OFF             M(MACRO_MUSIC_OFF)
 | 
			
		||||
#define AUD_OFF             M(MACRO_AUDIO_OFF)
 | 
			
		||||
#define AUD_ON              M(MACRO_AUDIO_ON)
 | 
			
		||||
#define VC_UP               M(MACRO_INC_VOICE)
 | 
			
		||||
#define VC_DOWN             M(MACRO_DEC_VOICE)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SC_UNDO             LCTL(KC_Z)
 | 
			
		||||
| 
						 | 
				
			
			@ -164,20 +168,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
  { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R  },
 | 
			
		||||
 },
 | 
			
		||||
 | 
			
		||||
 [LAYER_MUSIC] = {
 | 
			
		||||
  { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
 | 
			
		||||
  { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
 | 
			
		||||
  { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
 | 
			
		||||
  { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
 | 
			
		||||
  { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX  },
 | 
			
		||||
 },
 | 
			
		||||
 | 
			
		||||
 [LAYER_ADJUST] = { /* ADJUST */
 | 
			
		||||
  { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, MUS_ON,  MUS_OFF, AUD_ON,  AUD_OFF, ___T___, ___T___  },
 | 
			
		||||
  { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, RESET,   _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______, _______, _______, _______, _______, _______, _______  },
 | 
			
		||||
 },
 | 
			
		||||
 | 
			
		||||
 [LAYER_MUSIC] = {
 | 
			
		||||
  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______, _______, _______, _______, _______, _______, _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, RESET,   _______, _______, _______, _______, _______, ___T___, ___T___, VC_UP,   _______  },
 | 
			
		||||
  { _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______, _______, _______, _______, _______, VC_DOWN, _______  },
 | 
			
		||||
 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -187,8 +191,8 @@ float tone_my_startup[][2] = SONG(ODE_TO_JOY);
 | 
			
		|||
float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY);
 | 
			
		||||
 | 
			
		||||
float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
 | 
			
		||||
float tone_dvorak[][2]     = SONG(COLEMAK_SOUND);
 | 
			
		||||
float tone_colemak[][2]    = SONG(DVORAK_SOUND);
 | 
			
		||||
float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
 | 
			
		||||
float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
 | 
			
		||||
 | 
			
		||||
float tone_audio_on[][2]   = SONG(CLOSE_ENCOUNTERS_5_NOTE);
 | 
			
		||||
float tone_music_on[][2]   = SONG(DOE_A_DEER);
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +202,7 @@ float tone_numlk_on[][2]   = SONG(NUM_LOCK_ON_SOUND);
 | 
			
		|||
float tone_numlk_off[][2]  = SONG(NUM_LOCK_OFF_SOUND);
 | 
			
		||||
float tone_scroll_on[][2]  = SONG(SCROLL_LOCK_ON_SOUND);
 | 
			
		||||
float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
 | 
			
		||||
float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND);
 | 
			
		||||
 | 
			
		||||
#endif /* AUDIO_ENABLE */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -380,6 +385,26 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		|||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MACRO_INC_VOICE:
 | 
			
		||||
            if (record->event.pressed)
 | 
			
		||||
            {
 | 
			
		||||
                #ifdef AUDIO_ENABLE
 | 
			
		||||
					voice_iterate();
 | 
			
		||||
					PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
 | 
			
		||||
                #endif
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case MACRO_DEC_VOICE:
 | 
			
		||||
            if (record->event.pressed)
 | 
			
		||||
            {
 | 
			
		||||
                #ifdef AUDIO_ENABLE
 | 
			
		||||
					voice_deiterate();
 | 
			
		||||
					PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
 | 
			
		||||
                #endif
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        default:
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -390,12 +415,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		|||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
 | 
			
		||||
uint8_t starting_note = 0x0C;
 | 
			
		||||
int offset = 7;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void process_action_user(keyrecord_t *record)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	uint8_t starting_note = 0x0C;
 | 
			
		||||
	int offset = 7;
 | 
			
		||||
 | 
			
		||||
    if (IS_LAYER_ON(LAYER_MUSIC))
 | 
			
		||||
    {
 | 
			
		||||
        if (record->event.pressed)
 | 
			
		||||
| 
						 | 
				
			
			@ -412,7 +438,7 @@ void process_action_user(keyrecord_t *record)
 | 
			
		|||
 | 
			
		||||
void matrix_init_user(void)
 | 
			
		||||
{
 | 
			
		||||
    init_notes();
 | 
			
		||||
    set_voice(default_voice);
 | 
			
		||||
    play_startup_tone();
 | 
			
		||||
    println("Matrix Init");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -421,6 +447,8 @@ void led_set_user(uint8_t usb_led)
 | 
			
		|||
{
 | 
			
		||||
    static uint8_t old_usb_led = 0;
 | 
			
		||||
 | 
			
		||||
    _delay_ms(10); // gets rid of tick
 | 
			
		||||
 | 
			
		||||
    if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
 | 
			
		||||
    {
 | 
			
		||||
            // If CAPS LK LED is turning on...
 | 
			
		||||
| 
						 | 
				
			
			@ -457,13 +485,14 @@ void led_set_user(uint8_t usb_led)
 | 
			
		|||
 | 
			
		||||
void play_startup_tone()
 | 
			
		||||
{
 | 
			
		||||
	_delay_ms(10); // gets rid of tick
 | 
			
		||||
    PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void play_goodbye_tone()
 | 
			
		||||
{
 | 
			
		||||
    PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
 | 
			
		||||
    _delay_ms(2000);
 | 
			
		||||
    _delay_ms(1000);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* AUDIO_ENABLE */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,8 +50,8 @@ void decrease_vibrato_strength(float change);
 | 
			
		|||
// Polyphony functions
 | 
			
		||||
 | 
			
		||||
void set_polyphony_rate(float rate);
 | 
			
		||||
void enable_polyphony();
 | 
			
		||||
void disable_polyphony();
 | 
			
		||||
void enable_polyphony(void);
 | 
			
		||||
void disable_polyphony(void);
 | 
			
		||||
void increase_polyphony_rate(float change);
 | 
			
		||||
void decrease_polyphony_rate(float change);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ void set_tempo(float tempo);
 | 
			
		|||
void increase_tempo(uint8_t tempo_change);
 | 
			
		||||
void decrease_tempo(uint8_t tempo_change);
 | 
			
		||||
 | 
			
		||||
void audio_init();
 | 
			
		||||
void audio_init(void);
 | 
			
		||||
 | 
			
		||||
#ifdef PWM_AUDIO
 | 
			
		||||
void play_sample(uint8_t * s, uint16_t l, bool r);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
#include "voices.h"
 | 
			
		||||
#include "stdlib.h"
 | 
			
		||||
 | 
			
		||||
// these are imported from audio.c
 | 
			
		||||
extern uint16_t envelope_index;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +29,7 @@ float voice_envelope(float frequency) {
 | 
			
		|||
            note_timbre = TIMBRE_50;
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
	        break;
 | 
			
		||||
 | 
			
		||||
        case butts_fader:
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
            switch (compensated_index) {
 | 
			
		||||
| 
						 | 
				
			
			@ -35,18 +37,22 @@ float voice_envelope(float frequency) {
 | 
			
		|||
                    frequency = frequency / 4;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                case 10 ... 19:
 | 
			
		||||
                    frequency = frequency / 2;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                case 20 ... 200:
 | 
			
		||||
                    note_timbre = .125 - pow(((float)compensated_index - 20) / (200 - 20), 2)*.125;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    note_timbre = 0;
 | 
			
		||||
                	break;
 | 
			
		||||
            }
 | 
			
		||||
    	    break;
 | 
			
		||||
 | 
			
		||||
        case octave_crunch:
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
            switch (compensated_index) {
 | 
			
		||||
| 
						 | 
				
			
			@ -56,17 +62,20 @@ float voice_envelope(float frequency) {
 | 
			
		|||
                    frequency = frequency / 2;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
                case 10 ... 19:
 | 
			
		||||
                case 25 ... 29:
 | 
			
		||||
                case 33 ... 35:
 | 
			
		||||
                    frequency = frequency * 2;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                	break;
 | 
			
		||||
            }
 | 
			
		||||
	        break;
 | 
			
		||||
 | 
			
		||||
        case duty_osc:
 | 
			
		||||
            // This slows the loop down a substantial amount, so higher notes may freeze
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +90,7 @@ float voice_envelope(float frequency) {
 | 
			
		|||
                	break;
 | 
			
		||||
            }
 | 
			
		||||
	        break;
 | 
			
		||||
 | 
			
		||||
        case duty_octave_down:
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
            note_timbre = (envelope_index % 2) * .125 + .375 * 2;
 | 
			
		||||
| 
						 | 
				
			
			@ -100,6 +110,9 @@ float voice_envelope(float frequency) {
 | 
			
		|||
            else
 | 
			
		||||
                note_timbre = 0.5;
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
		default:
 | 
			
		||||
   			break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return frequency;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ typedef enum {
 | 
			
		|||
} voice_type;
 | 
			
		||||
 | 
			
		||||
void set_voice(voice_type v);
 | 
			
		||||
void voice_iterate();
 | 
			
		||||
void voice_deiterate();
 | 
			
		||||
void voice_iterate(void);
 | 
			
		||||
void voice_deiterate(void);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue