Merge branch 'master' of https://github.com/jackhumbert/qmk_firmware
15 files changed, 362 insertions(+), 266 deletions(-) M keyboard/atomic/keymaps/pvc/keymap.c M keyboard/preonic/keymaps/default/keymap.c M quantum/audio.c M quantum/audio.h M quantum/keymap_common.c M quantum/led.c M quantum/musical_notes.h A quantum/song_list.h M tmk_core/common/action.c M tmk_core/common/action_layer.c M tmk_core/common/action_macro.c M tmk_core/common/action_tapping.c M tmk_core/common/command.c M tmk_core/common/print.h M tmk_core/protocol/lufa/lufa.c
M keyboard/atomic/keymaps/pvc/keymap.c => keyboard/atomic/keymaps/pvc/keymap.c +189 -184
@@ 3,7 3,7 @@ #ifdef AUDIO_ENABLE #include "audio.h" #include "musical_notes.h" #include "song_list.h" #endif @@ 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 */ 76,139 83,124 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef AUDIO_ENABLE float start_up[][2] = SONG(ODE_TO_JOY); float tone_lw[][2] = { Q__NOTE(_C4 ) , Q__NOTE(_CS4 ) , Q__NOTE(_D4 ) , Q__NOTE(_DS4 ) , Q__NOTE(_E4 ) , Q__NOTE(_F4 ) , Q__NOTE(_FS4 ) , Q__NOTE(_G4 ) , Q__NOTE(_GS4 ) , Q__NOTE(_A4 ) , Q__NOTE(_AS4 ) , 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 ) , Q_NOTE(_D4 ) , Q_NOTE(_DS4 ) , Q_NOTE(_E4 ) , Q_NOTE(_F4 ) , Q_NOTE(_FS4 ) , Q_NOTE(_G4 ) , Q_NOTE(_GS4 ) , Q_NOTE(_A4 ) , Q_NOTE(_AS4 ) , Q_NOTE(_B1 ) , Q_NOTE(_C2 ) , Q_NOTE(_CS2 ) , Q_NOTE(_D2 ) , Q_NOTE(_DS2 ) , Q_NOTE(_E2 ) , Q_NOTE(_F2 ) , Q_NOTE(_FS2 ) , Q_NOTE(_G2 ) , Q_NOTE(_GS2 ) , Q_NOTE(_A2 ) , Q_NOTE(_AS2 ) , Q_NOTE(_B2 ) , Q_NOTE(_C3 ) , Q_NOTE(_CS3 ) , Q_NOTE(_D3 ) , Q_NOTE(_DS3 ) , Q_NOTE(_E3 ) , Q_NOTE(_F3 ) , Q_NOTE(_FS3 ) , Q_NOTE(_G3 ) , Q_NOTE(_GS3 ) , Q_NOTE(_A3 ) , Q_NOTE(_AS3 ) , Q_NOTE(_B3 ) , Q_NOTE(_C4 ) , Q_NOTE(_CS4 ) , Q_NOTE(_D4 ) , Q_NOTE(_DS4 ) , Q_NOTE(_E4 ) , Q_NOTE(_F4 ) , Q_NOTE(_FS4 ) , Q_NOTE(_G4 ) , Q_NOTE(_GS4 ) , Q_NOTE(_A4 ) , Q_NOTE(_AS4 ) , Q_NOTE(_B4 ) , Q_NOTE(_C5 ) , Q_NOTE(_CS5 ) , Q_NOTE(_D5 ) , Q_NOTE(_DS5 ) , Q_NOTE(_E5 ) , Q_NOTE(_F5 ) , Q_NOTE(_FS5 ) , Q_NOTE(_G5 ) , Q_NOTE(_GS5 ) , Q_NOTE(_A5 ) , Q_NOTE(_AS5 ) , Q_NOTE(_B5 ) , Q_NOTE(_C6 ) , Q_NOTE(_CS6 ) , Q_NOTE(_D6 ) , Q_NOTE(_DS6 ) , Q_NOTE(_E6 ) , Q_NOTE(_F6 ) , Q_NOTE(_FS6 ) , Q_NOTE(_G6 ) , Q_NOTE(_GS6 ) , Q_NOTE(_A6 ) , Q_NOTE(_AS6 ) , Q_NOTE(_B6 ) , Q_NOTE(_C7 ) , Q_NOTE(_CS7 ) , Q_NOTE(_D7 ) , Q_NOTE(_DS7 ) , Q_NOTE(_E7 ) , Q_NOTE(_F7 ) , Q_NOTE(_FS7 ) , Q_NOTE(_G7 ) , Q_NOTE(_GS7 ) , Q_NOTE(_A7 ) , Q_NOTE(_AS7 ) , Q_NOTE(_B7 ) , Q_NOTE(_C8 ) , Q_NOTE(_CS8 ) , Q_NOTE(_D8 ) , Q_NOTE(_DS8 ) , Q_NOTE(_E8 ) , Q_NOTE(_F8 ) , Q_NOTE(_FS8 ) , Q_NOTE(_G8 ) , Q_NOTE(_GS8 ) , Q_NOTE(_A8 ) , Q_NOTE(_AS8 ) , Q_NOTE(_B8 ) , Q__NOTE(_B1 ) , Q__NOTE(_C2 ) , Q__NOTE(_CS2 ) , Q__NOTE(_D2 ) , Q__NOTE(_DS2 ) , Q__NOTE(_E2 ) , Q__NOTE(_F2 ) , Q__NOTE(_FS2 ) , Q__NOTE(_G2 ) , Q__NOTE(_GS2 ) , Q__NOTE(_A2 ) , Q__NOTE(_AS2 ) , Q__NOTE(_B2 ) , Q__NOTE(_C3 ) , Q__NOTE(_CS3 ) , Q__NOTE(_D3 ) , Q__NOTE(_DS3 ) , Q__NOTE(_E3 ) , Q__NOTE(_F3 ) , Q__NOTE(_FS3 ) , Q__NOTE(_G3 ) , Q__NOTE(_GS3 ) , Q__NOTE(_A3 ) , Q__NOTE(_AS3 ) , Q__NOTE(_B3 ) , Q__NOTE(_C4 ) , Q__NOTE(_CS4 ) , Q__NOTE(_D4 ) , Q__NOTE(_DS4 ) , Q__NOTE(_E4 ) , Q__NOTE(_F4 ) , Q__NOTE(_FS4 ) , Q__NOTE(_G4 ) , Q__NOTE(_GS4 ) , Q__NOTE(_A4 ) , Q__NOTE(_AS4 ) , Q__NOTE(_B4 ) , Q__NOTE(_C5 ) , Q__NOTE(_CS5 ) , Q__NOTE(_D5 ) , Q__NOTE(_DS5 ) , Q__NOTE(_E5 ) , Q__NOTE(_F5 ) , Q__NOTE(_FS5 ) , Q__NOTE(_G5 ) , Q__NOTE(_GS5 ) , Q__NOTE(_A5 ) , Q__NOTE(_AS5 ) , Q__NOTE(_B5 ) , Q__NOTE(_C6 ) , Q__NOTE(_CS6 ) , Q__NOTE(_D6 ) , Q__NOTE(_DS6 ) , Q__NOTE(_E6 ) , Q__NOTE(_F6 ) , Q__NOTE(_FS6 ) , Q__NOTE(_G6 ) , Q__NOTE(_GS6 ) , Q__NOTE(_A6 ) , Q__NOTE(_AS6 ) , Q__NOTE(_B6 ) , Q__NOTE(_C7 ) , Q__NOTE(_CS7 ) , Q__NOTE(_D7 ) , Q__NOTE(_DS7 ) , Q__NOTE(_E7 ) , Q__NOTE(_F7 ) , Q__NOTE(_FS7 ) , Q__NOTE(_G7 ) , Q__NOTE(_GS7 ) , Q__NOTE(_A7 ) , Q__NOTE(_AS7 ) , Q__NOTE(_B7 ) , Q__NOTE(_C8 ) , Q__NOTE(_CS8 ) , Q__NOTE(_D8 ) , Q__NOTE(_DS8 ) , Q__NOTE(_E8 ) , Q__NOTE(_F8 ) , Q__NOTE(_FS8 ) , Q__NOTE(_G8 ) , Q__NOTE(_GS8 ) , Q__NOTE(_A8 ) , Q__NOTE(_AS8 ) , 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(); PLAY_NOTE_ARRAY(start_up, false, STACCATO); println("Matrix Init"); } #endif void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) { @@ if (order) 241,69 233,82 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l const uint16_t PROGMEM fn_actions[] = { }; //#define MUSIC_ARRAY_SIZE(x) (((int)(sizeof(x) / (sizeof(x[0][0])))) / 2) 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; }; // 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; #ifdef AUDIO_ENABLE float start_up[][2] = { Q_NOTE(_E4 ) , Q_NOTE(_E4 ) , Q_NOTE(_F4 ) , Q_NOTE(_G4 ) , Q_NOTE(_G4 ) , Q_NOTE(_F4 ) , Q_NOTE(_E4 ) , Q_NOTE(_D4 ) , Q_NOTE(_C4 ) , Q_NOTE(_C4 ) , Q_NOTE(_D4 ) , Q_NOTE(_E4 ) , H_NOTE(_E4 ) , Q_NOTE(_D4 ) , H_NOTE(_D4 ) , }; #endif case M_FN: if (record->event.pressed) { layer_on(_FN); } else { layer_off(_FN); } break; void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); PLAY_NOTE_ARRAY(start_up, false, STACCATO); println("Matrix Init"); #endif } 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; }; \ No newline at end of file
M keyboard/preonic/keymaps/default/keymap.c => keyboard/preonic/keymaps/default/keymap.c +5 -2
@@ 224,6 224,7 @@ float tone_music[][2] = { {440.0*pow(2.0,(23)/12.0), 8}, {440.0*pow(2.0,(24)/12.0), 8} }; float ode_to_joy[][2] = SONG(ODE_TO_JOY); #endif @@ void persistant_default_layer_set(uint16_t default_layer) { 312,7 313,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 9: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_music, false, 0); init_notes(); set_tempo(150); PLAY_NOTE_ARRAY(ode_to_joy, false, .25); layer_on(_MUSIC); #endif @@ } 339,6 342,6 @@ void process_action_user(keyrecord_t *record) { void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); play_notes(&start_up, false, 0); PLAY_NOTE_ARRAY(start_up, false, 0); #endif }
M quantum/audio.c => quantum/audio.c +45 -14
@@ 4,7 4,7 @@ #include <avr/pgmspace.h> #include <avr/interrupt.h> #include <avr/io.h> #include "print.h" #include "audio.h" #include "keymap_common.h" @@ 57,9 57,11 @@ bool notes = false; bool note = false; float note_frequency = 0; float note_length = 0; float note_tempo = TEMPO_DEFAULT; float note_timbre = TIMBRE_DEFAULT; uint16_t note_position = 0; float (* notes_pointer)[][2]; uint8_t notes_length; uint8_t notes_count; bool notes_repeat; float notes_rest; @@ bool note_resting = false; 255,7 257,8 @@ ISR(TIMER3_COMPA_vect) { place = 0.0; } ICR3 = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)); // Set max to the period OCR3A = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)) >> 1 * duty_place; // Set compare to half the period OCR3A = (int)((((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)) * note_timbre); // Set compare to half the period //OCR3A = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)) >> 1 * duty_place; // Set compare to half the period place++; // if (duty_counter > (frequencies[voice_place] / 500)) { @@ // duty_place = (duty_place % 3) + 1; 288,7 291,7 @@ ISR(TIMER3_COMPA_vect) { #else if (note_frequency > 0) { ICR3 = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)); // Set max to the period OCR3A = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)) >> 1; // Set compare to half the period OCR3A = (int)((((double)F_CPU) / (note_frequency * CPU_PRESCALER)) * note_timbre); // Set compare to half the period } else { ICR3 = 0; @@ OCR3A = 0; 304,7 307,7 @@ ISR(TIMER3_COMPA_vect) { end_of_note = (note_position >= (note_length * 0x7FF)); if (end_of_note) { current_note++; if (current_note >= notes_length) { if (current_note >= notes_count) { if (notes_repeat) { current_note = 0; @@ } else { 327,10 330,10 @@ ISR(TIMER3_COMPA_vect) { note_resting = false; #ifdef PWM_AUDIO note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; note_length = (*notes_pointer)[current_note][1]; note_length = (*notes_pointer)[current_note][1] * (note_tempo / 100); #else note_frequency = (*notes_pointer)[current_note][0]; note_length = (*notes_pointer)[current_note][1] / 4; note_length = ((*notes_pointer)[current_note][1] / 4) * (note_tempo / 100); #endif } @@ note_position = 0; 344,15 347,16 @@ ISR(TIMER3_COMPA_vect) { } } void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest) { void play_notes(float (*np)[][2], uint8_t n_count, bool n_repeat, float n_rest) { if (audio_config.enable) { if (note) stop_all_notes(); notes = true; notes_pointer = np; notes_length = n_length; notes_count = n_count; notes_repeat = n_repeat; notes_rest = n_rest; @@ 360,10 364,10 @@ if (audio_config.enable) { current_note = 0; #ifdef PWM_AUDIO note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; note_length = (*notes_pointer)[current_note][1]; note_length = (*notes_pointer)[current_note][1] * (note_tempo / 100); #else note_frequency = (*notes_pointer)[current_note][0]; note_length = (*notes_pointer)[current_note][1] / 4; note_length = ((*notes_pointer)[current_note][1] / 4) * (note_tempo / 100); #endif note_position = 0; @@ 375,7 379,6 @@ if (audio_config.enable) { TCCR3A |= _BV(COM3A1); #endif notes = true; } @@ } 405,6 408,7 @@ if (audio_config.enable && voices < 8) { if (notes) stop_all_notes(); note = true; #ifdef PWM_AUDIO freq = freq / SAMPLE_RATE; @@ #endif 436,7 440,34 @@ if (audio_config.enable && voices < 8) { TCCR3A |= _BV(COM3A1); #endif note = true; } } \ No newline at end of file } void set_timbre(float timbre) { note_timbre = timbre; } void set_tempo(float tempo) { note_tempo = tempo; } void decrease_tempo(uint8_t tempo_change) { note_tempo += (float) tempo_change; } void increase_tempo(uint8_t tempo_change) { if (note_tempo - (float) tempo_change < 10) { note_tempo = 10; } else { note_tempo -= (float) tempo_change; } }
M quantum/audio.h => quantum/audio.h +6 -1
@@ 3,6 3,7 @@ #include <avr/io.h> #include <util/delay.h> #include "musical_notes.h" #include "song_list.h" #ifndef AUDIO_H @@ #define AUDIO_H 24,8 25,12 @@ void play_note(double freq, int vol); void stop_note(double freq); void stop_all_notes(void); void init_notes(void); void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest); void play_notes(float (*np)[][2], uint8_t n_count, bool n_repeat, float n_rest); void set_timbre(float timbre); void set_tempo(float tempo); void increase_tempo(uint8_t tempo_change); void decrease_tempo(uint8_t tempo_change); #define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
M quantum/keymap_common.c => quantum/keymap_common.c +7 -8
@@ 26,6 26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "backlight.h" #include "keymap_midi.h" #include "bootloader.h" #include "eeconfig.h" extern keymap_config_t keymap_config; @@ 33,15 34,13 @@ extern keymap_config_t keymap_config; #include <inttypes.h> #ifdef AUDIO_ENABLE #include "audio.h" #ifndef TONE_GOODBYE #define TONE_GOODBYE { \ {440.0*pow(2.0,(31)/12.0), 8}, \ {440.0*pow(2.0,(24)/12.0), 8}, \ {440.0*pow(2.0,(19)/12.0), 12}, \ } #endif float tone_goodbye[][2] = TONE_GOODBYE; #endif #define TONE_GOODBYE OLKB_GOODBYE #endif /*! TONE_GOODBYE */ float tone_goodbye[][2] = SONG(TONE_GOODBYE); #endif /* AUDIO_ENABLE */ static action_t keycode_to_action(uint16_t keycode);
M quantum/led.c => quantum/led.c +1 -0
@@ 24,6 24,7 @@ void led_set_kb(uint8_t usb_led) { } __attribute__ ((weak)) void led_set(uint8_t usb_led) {
M quantum/musical_notes.h => quantum/musical_notes.h +37 -12
@@ 2,22 2,38 @@ #define MUSICAL_NOTES_H // Tempo Placeholder #define TEMPO 120 #define TEMPO_DEFAULT 100 #define SONG(notes...) { notes } // Note Types #define WHOLE_NOTE(note) {(NOTE##note), 64} #define HALF_NOTE(note) {(NOTE##note), 32} #define QUARTER_NOTE(note) {(NOTE##note), 16} #define EIGHTH_NOTE(note) {(NOTE##note), 8} #define SIXTEENTH_NOTE(note) {(NOTE##note), 4} #define MUSICAL_NOTE(note, duration) {(NOTE##note), duration} #define WHOLE_NOTE(note) MUSICAL_NOTE(note, 64) #define HALF_NOTE(note) MUSICAL_NOTE(note, 32) #define QUARTER_NOTE(note) MUSICAL_NOTE(note, 16) #define EIGHTH_NOTE(note) MUSICAL_NOTE(note, 8) #define SIXTEENTH_NOTE(note) MUSICAL_NOTE(note, 4) #define WHOLE_DOT_NOTE(note) MUSICAL_NOTE(note, 64+32) #define HALF_DOT_NOTE(note) MUSICAL_NOTE(note, 32+16) #define QUARTER_DOT_NOTE(note) MUSICAL_NOTE(note, 16+8) #define EIGHTH_DOT_NOTE(note) MUSICAL_NOTE(note, 8+4) #define SIXTEENTH_DOT_NOTE(note) MUSICAL_NOTE(note, 4+2) // Note Types Short #define W_NOTE(n) WHOLE_NOTE(n) #define H_NOTE(n) HALF_NOTE(n) #define Q_NOTE(n) QUARTER_NOTE(n) #define E_NOTE(n) EIGTH_NOTE(n) #define S_NOTE(n) SIXTEENTH_NOTE(n) // Note Type Shortcuts #define M__NOTE(note, duration) MUSICAL_NOTE(note, duration) #define W__NOTE(n) WHOLE_NOTE(n) #define H__NOTE(n) HALF_NOTE(n) #define Q__NOTE(n) QUARTER_NOTE(n) #define E__NOTE(n) EIGHTH_NOTE(n) #define S__NOTE(n) SIXTEENTH_NOTE(n) #define WD_NOTE(n) WHOLE_DOT_NOTE(n) #define HD_NOTE(n) HALF_DOT_NOTE(n) #define QD_NOTE(n) QUARTER_DOT_NOTE(n) #define ED_NOTE(n) EIGHTH_DOT_NOTE(n) #define SD_NOTE(n) SIXTEENTH_DOT_NOTE(n) // Note Styles @@ // Staccato makes sure there is a rest between each note. Think: TA TA TA 25,6 41,15 @@ #define STACCATO 0.01 #define LEGATO 0 // Note Timbre // Changes how the notes sound #define TIMBRE_12 0.125 #define TIMBRE_25 0.250 #define TIMBRE_50 0.500 #define TIMBRE_75 0.750 #define TIMBRE_DEFAULT TIMBRE_50 // Notes - # = Octave #define NOTE_REST 0.00 #define NOTE_C0 16.35
A quantum/song_list.h => quantum/song_list.h +23 -0
@@ 0,0 1,23 @@ #include "musical_notes.h" #ifndef SONG_LIST_H #define SONG_LIST_H #define ODE_TO_JOY \ Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \ Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \ Q__NOTE(_C4), Q__NOTE(_C4), Q__NOTE(_D4), Q__NOTE(_E4), \ QD_NOTE(_E4), E__NOTE(_D4), H__NOTE(_D4), #define ROCK_A_BYE_BABY \ QD_NOTE(_B4), E__NOTE(_D4), Q__NOTE(_B5), \ H__NOTE(_A5), Q__NOTE(_G5), \ QD_NOTE(_B4), E__NOTE(_D5), Q__NOTE(_G5), \ H__NOTE(_FS5), #define OLKB_GOODBYE \ E__NOTE(_E7), \ E__NOTE(_A6), \ ED_NOTE(_E6), #endif
M tmk_core/common/action.c => tmk_core/common/action.c +4 -4
@@ 27,11 27,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "action_util.h" #include "action.h" #ifdef DEBUG_ACTION //#ifdef DEBUG_ACTION #include "debug.h" #else #include "nodebug.h" #endif //#else //#include "nodebug.h" //#endif void action_exec(keyevent_t event)
M tmk_core/common/action_layer.c => tmk_core/common/action_layer.c +6 -6
@@ 4,14 4,14 @@ #include "util.h" #include "action_layer.h" #ifdef DEBUG_ACTION //#ifdef DEBUG_ACTION #include "debug.h" #else #include "nodebug.h" #endif //#else //#include "nodebug.h" //#endif /* /* * Default Layer State */ @@ uint32_t default_layer_state = 0; 52,7 52,7 @@ void default_layer_xor(uint32_t state) #ifndef NO_ACTION_LAYER /* /* * Keymap Layer State */ uint32_t layer_state = 0;
M tmk_core/common/action_macro.c => tmk_core/common/action_macro.c +4 -4
@@ 19,11 19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "action_macro.h" #include "wait.h" #ifdef DEBUG_ACTION //#ifdef DEBUG_ACTION #include "debug.h" #else #include "nodebug.h" #endif //#else //#include "nodebug.h" //#endif #ifndef NO_ACTION_MACRO
M tmk_core/common/action_tapping.c => tmk_core/common/action_tapping.c +6 -5
@@ 6,11 6,11 @@ #include "keycode.h" #include "timer.h" #ifdef DEBUG_ACTION //#ifdef DEBUG_ACTION #include "debug.h" #else #include "nodebug.h" #endif //#else //#include "nodebug.h" //#endif #ifndef NO_ACTION_TAPPING @@ 139,7 139,7 @@ bool process_tapping(keyrecord_t *keyp) if (event.pressed) { tapping_key.tap.interrupted = true; } // enqueue // enqueue return false; } @@ } 324,6 324,7 @@ bool waiting_buffer_typed(keyevent_t event) return false; } __attribute__((unused)) bool waiting_buffer_has_anykey_pressed(void) { for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) {
M tmk_core/common/command.c => tmk_core/common/command.c +16 -9
@@ 122,7 122,7 @@ static void command_common_help(void) STR(MAGIC_KEY_VERSION ) ": Version\n" STR(MAGIC_KEY_STATUS ) ": Status\n" STR(MAGIC_KEY_CONSOLE ) ": Activate Console Mode\n" #if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM STR(MAGIC_KEY_LAYER0 ) ": Switch to Layer 0\n" @@ STR(MAGIC_KEY_LAYER1 ) ": Switch to Layer 1\n" 136,11 136,11 @@ static void command_common_help(void) STR(MAGIC_KEY_LAYER9 ) ": Switch to Layer 9\n" #endif #if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS #if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS "F1-F10: Switch to Layer 0-9 (F10 = L0)\n" #endif #if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS #if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS "0-9: Switch to Layer 0-9\n" #endif @@ 251,6 251,7 @@ static void print_status(void) #ifdef BOOTMAGIC_ENABLE static void print_eeconfig(void) { #ifndef NO_PRINT print("default_layer: "); print_dec(eeconfig_read_default_layer()); print("\n"); @@ debug_config_t dc; 279,9 280,12 @@ static void print_eeconfig(void) print("backlight_config.raw: "); print_hex8(bc.raw); print("\n"); print(".enable: "); print_dec(bc.enable); print("\n"); print(".level: "); print_dec(bc.level); print("\n"); #endif #endif /* BACKLIGHT_ENABLE */ #endif /* !NO_PRINT */ } #endif #endif /* BOOTMAGIC_ENABLE */ static bool command_common(uint8_t code) @@ { 305,7 309,7 @@ static bool command_common(uint8_t code) #ifdef BOOTMAGIC_ENABLE // print stored eeprom config case MAGIC_KC(MAGIC_KEY_EEPROM): case MAGIC_KC(MAGIC_KEY_EEPROM): print("eeconfig:\n"); print_eeconfig(); @@ break; 369,7 373,7 @@ static bool command_common(uint8_t code) break; // debug matrix toggle case MAGIC_KC(MAGIC_KEY_DEBUG_MATRIX): case MAGIC_KC(MAGIC_KEY_DEBUG_MATRIX): debug_matrix = !debug_matrix; if (debug_matrix) { @@ print("\nmatrix: on\n"); 380,7 384,7 @@ static bool command_common(uint8_t code) break; // debug keyboard toggle case MAGIC_KC(MAGIC_KEY_DEBUG_KBD): case MAGIC_KC(MAGIC_KEY_DEBUG_KBD): debug_keyboard = !debug_keyboard; if (debug_keyboard) { @@ print("\nkeyboard: on\n"); 551,6 555,7 @@ static uint8_t mousekey_param = 0; static void mousekey_param_print(void) { #ifndef NO_PRINT print("\n\t- Values -\n"); print("1: delay(*10ms): "); pdec(mk_delay); print("\n"); @@ print("2: interval(ms): "); pdec(mk_interval); print("\n"); 558,6 563,8 @@ static void mousekey_param_print(void) print("4: time_to_max: "); pdec(mk_time_to_max); print("\n"); print("5: wheel_max_speed: "); pdec(mk_wheel_max_speed); print("\n"); print("6: wheel_time_to_max: "); pdec(mk_wheel_time_to_max); print("\n"); #endif /* !NO_PRINT */ } @@ //#define PRINT_SET_VAL(v) print(#v " = "); print_dec(v); print("\n"); 677,7 684,7 @@ static void mousekey_console_help(void) "pgdown: -10\n" "\n" "speed = delta * max_speed * (repeat / time_to_max)\n"); xprintf("where delta: cursor=%d, wheel=%d\n" xprintf("where delta: cursor=%d, wheel=%d\n" "See http://en.wikipedia.org/wiki/Mouse_keys\n", MOUSEKEY_MOVE_DELTA, MOUSEKEY_WHEEL_DELTA); }
M tmk_core/common/print.h => tmk_core/common/print.h +6 -6
@@ 2,17 2,17 @@ /* Very basic print functions, intended to be used with usb_debug_only.c * http://www.pjrc.com/teensy/ * Copyright (c) 2008 PJRC.COM, LLC * * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, @@ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 91,9 91,9 @@ void print_set_sendchar(int8_t (*print_sendchar_func)(uint8_t)); #else /* NO_PRINT */ #define xprintf #define print #define println #define xprintf(fmt, ...) #define print(s) #define println(s) #define print_set_sendchar(func) #define print_dec(data) #define print_decs(data)
M tmk_core/protocol/lufa/lufa.c => tmk_core/protocol/lufa/lufa.c +7 -11
@@ 1,4 1,4 @@ /* /* * Copyright 2012 Jun Wako <wakojun@gmail.com> * This file is based on: @@ * LUFA-120219/Demos/Device/Lowlevel/KeyboardMouse 152,10 152,10 @@ static void Console_Task(void) { /* Create a temporary buffer to hold the read in report from the host */ uint8_t ConsoleData[CONSOLE_EPSIZE]; /* Read Console Report Data */ Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL); /* Process Console Report Data */ //ProcessConsoleHIDReport(ConsoleData); @@ } 183,10 183,6 @@ static void Console_Task(void) Endpoint_SelectEndpoint(ep); } #else static void Console_Task(void) { } #endif @@ 216,7 212,7 @@ void EVENT_USB_Device_Disconnect(void) print("[D]"); /* For battery powered device */ USB_IsInitialized = false; /* TODO: This doesn't work. After several plug in/outs can not be enumerated. /* TODO: This doesn't work. After several plug in/outs can not be enumerated. if (USB_IsInitialized) { USB_Disable(); // Disable all interrupts @@ USB_Controller_Enable(); 313,7 309,7 @@ void EVENT_USB_Device_ConfigurationChanged(void) #ifdef MIDI_ENABLE ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE); ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE); ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE); #endif } @@ 439,7 435,7 @@ void EVENT_USB_Device_ControlRequest(void) } /******************************************************************************* * Host driver * Host driver ******************************************************************************/ static uint8_t keyboard_leds(void) @@ { 563,7 559,7 @@ static void send_consumer(uint16_t data) bluefruit_serial_send(0x00); bluefruit_serial_send(0x02); bluefruit_serial_send((bitmap>>8)&0xFF); bluefruit_serial_send(bitmap&0xFF); bluefruit_serial_send(bitmap&0xFF); bluefruit_serial_send(0x00); bluefruit_serial_send(0x00); bluefruit_serial_send(0x00);