]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
no need for length of play_notes array with macro
authorJack Humbert <jack.humb@gmail.com>
Sun, 17 Apr 2016 03:15:40 +0000 (23:15 -0400)
committerJack Humbert <jack.humb@gmail.com>
Sun, 17 Apr 2016 03:15:40 +0000 (23:15 -0400)
1  2 
keyboard/planck/keymaps/default/keymap.c
keyboard/preonic/keymaps/default/keymap.c
quantum/audio.h
quantum/keymap_common.c

index 5591b337dd1588941b750efb87532376e31dce7e,a6edefefd9d7c12bb9592d8dedbe0b93a386103b..207af2a1df224b62447625d87242ea0c512cbdba
@@@ -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);
            }
          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);
            }
          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);
            }
            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;
  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
  }
index c7b6b89f2c91be2e0e8dba0c20b117ef53a19e2b,1223793cfa0f88fbe1bafc5944173d85eb2322ac..48bc72dab7b4b5681109712b3ce8bfd2c9e4d360
@@@ -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);
            }
          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);
            }
          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);
            }
            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;
          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 65a6f9434dfb1e566b76aacf8d5478042558c6d6,762c980643c2b5d28c0d6c3a246298dd6e2ab42e..e1bc23ffed35fc25fe3b70e8615783aa37848b88
@@@ -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(&note_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style));
+ #endif
index 8f35521a2d2b4b9d934be64fb2f7f1fc641a13b6,61a51aedb43e46cafaddb030870b7359a0add532..02d3c74be672ffb1fdcfd539112a206899084964
@@@ -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