From: Jack Humbert Date: Sun, 17 Apr 2016 03:15:40 +0000 (-0400) Subject: no need for length of play_notes array with macro X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e7b9959819e709d7df2e96a94bdaf36e4e9e23e3;p=qmk_firmware.git no need for length of play_notes array with macro --- e7b9959819e709d7df2e96a94bdaf36e4e9e23e3 diff --cc keyboard/planck/keymaps/default/keymap.c index 5591b337d,a6edefefd..207af2a1d --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@@ -194,7 -194,7 +194,7 @@@ const macro_t *action_get_macro(keyreco case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, false, 0); - play_notes(&tone_qw, 4, false, 0); ++ PLAY_NOTE_ARRAY(tone_qw, false, 0); #endif default_layer_set(1UL<<_QW); } @@@ -202,7 -202,7 +202,7 @@@ case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, false, 0); - play_notes(&tone_cm, 6, false, 0); ++ PLAY_NOTE_ARRAY(tone_cm, false, 0); #endif default_layer_set(1UL<<_CM); } @@@ -210,7 -210,7 +210,7 @@@ case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, false, 0); - play_notes(&tone_dv, 8, false, 0); ++ PLAY_NOTE_ARRAY(tone_dv, false, 0); #endif default_layer_set(1UL<<_DV); } @@@ -254,7 -254,7 +254,7 @@@ if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, false, 0); - play_notes(&start_up, 5, false, 0); ++ PLAY_NOTE_ARRAY(start_up, false, 0); #endif } break; @@@ -265,6 -265,6 +265,6 @@@ void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, false, 0); - play_notes(&start_up, 5, false, 0); ++ PLAY_NOTE_ARRAY(start_up, false, 0); #endif } diff --cc keyboard/preonic/keymaps/default/keymap.c index c7b6b89f2,1223793cf..48bc72dab --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@@ -3,11 -3,11 +3,6 @@@ #include "eeconfig.h" #ifdef AUDIO_ENABLE #include "audio.h" -- #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), \ -- 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ -- 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ -- 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } #endif // Each layer gets a name for readability, which is then used in the keymap matrix below. @@@ -242,7 -242,7 +237,7 @@@ const macro_t *action_get_macro(keyreco case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qwerty, false, 0); - play_notes(&tone_qwerty, 4, false, 0); ++ PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif persistant_default_layer_set(1UL<<_QWERTY); } @@@ -250,7 -250,7 +245,7 @@@ case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_colemak, false, 0); - play_notes(&tone_colemak, 6, false, 1); ++ PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif persistant_default_layer_set(1UL<<_COLEMAK); } @@@ -258,7 -258,7 +253,7 @@@ case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dvorak, false, 0); - play_notes(&tone_dvorak, 8, false, 10); ++ PLAY_NOTE_ARRAY(tone_dvorak, false, 0); #endif persistant_default_layer_set(1UL<<_DVORAK); } @@@ -302,7 -302,7 +297,7 @@@ if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, false, 0); - play_notes(&start_up, 4, false, 0); ++ PLAY_NOTE_ARRAY(start_up, false, 0); #endif } break; @@@ -317,7 -317,7 +312,7 @@@ case 9: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_music, false, 0); - play_notes(&tone_music, 8, false, 0); ++ PLAY_NOTE_ARRAY(tone_music, false, 0); layer_on(_MUSIC); #endif } diff --cc quantum/audio.h index 65a6f9434,762c98064..e1bc23ffe --- a/quantum/audio.h +++ b/quantum/audio.h @@@ -19,6 -22,16 +22,22 @@@ void audio_off(void) void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); - void stop_all_notes(); - void init_notes(); + 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); + + ++#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), \ ++ 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ ++ 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ ++ 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } ++ + // These macros are used to allow play_notes to play an array of indeterminate + // length. This works around the limitation of C's sizeof operation on pointers. + // The global float array for the song must be used here. + #define NOTE_ARRAY_SIZE(x) ((int)(sizeof(x) / (sizeof(x[0])))) + #define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style)); + + + #endif diff --cc quantum/keymap_common.c index 8f35521a2,61a51aedb..02d3c74be --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@@ -191,7 -189,7 +191,7 @@@ static action_t keycode_to_action(uint1 case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye_tune, false, 0); - PLAY_NOTE_ARRAY(goodbye, false, 0); ++ PLAY_NOTE_ARRAY(goodbye_tune, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR