]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
adds music and audio toggles (#337)
authorJack Humbert <jack.humb@gmail.com>
Thu, 19 May 2016 03:14:00 +0000 (23:14 -0400)
committerJack Humbert <jack.humb@gmail.com>
Thu, 19 May 2016 03:14:00 +0000 (23:14 -0400)
* Updated personal layouts

* tweaked personal

* Nightly - Audio Cleanup

Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP

* nightly - collapsed code

* Added check for note playing to LEDs

* Usability tweaks

* TWEAE

* nightly

added extra kcs to keymap common

* turned on Plank audio

* Added backlight breathing to atomic

* reverted accidental merge

* Added music and audio toggles to Quantum.c

* Redid the audio callbacks

* music/audio_on_user

keyboard/atomic/keymaps/pvc/keymap.c
quantum/audio/audio.c
quantum/audio/audio.h
quantum/keymap_common.h
quantum/quantum.c
quantum/quantum.h

index ff7384268e24f80768b9814baf8fe7f68fd1d8a1..8431654d7ded9afd45a6ab750ca43a41a39fff45 100644 (file)
@@ -15,8 +15,7 @@
 #define LAYER_LOWER                      4
 #define LAYER_FUNCTION                   5
 #define LAYER_MOUSE                      6
-#define LAYER_MUSIC                      7
-#define LAYER_ADJUST                     8
+#define LAYER_ADJUST                     7
 
 #define MACRO_QWERTY                     0
 #define MACRO_COLEMAK                    1
@@ -63,8 +62,8 @@
 #define M_BDFLT             M(MACRO_BREATH_DEFAULT)
 
 
-#define MUS_TOG             M(MACRO_MUSIC_TOGGLE)
-#define AUD_TOG             M(MACRO_AUDIO_TOGGLE)
+//#define MU_TOG             M(MACRO_MUSIC_TOGGLE)
+//#define AU_TOG              M(MACRO_AUDIO_TOGGLE)
 #define VC_UP               M(MACRO_INC_VOICE)
 #define VC_DOWN             M(MACRO_DEC_VOICE)
 
@@ -219,20 +218,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 #endif
 
- [LAYER_MUSIC]        = { // 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_UPPER, 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_TOG, AUD_TOG, ________________  },
+  { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG,  AU_TOG,  ________________  },
   { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  },
   { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______  },
-  { _______, _______, _______, _______, M_BACKL, RESET,   _______, M_MOUSE, _______, _______, _______, ________________, VC_UP,   _______  },
-  { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______  },
+  { _______, _______, _______, _______, M_BACKL, RESET,   _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN,  _______  },
+  { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE,  _______  },
  },
 
 
@@ -259,13 +250,14 @@ 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);
+float music_scale[][2]     = SONG(MUSIC_SCALE_SOUND);
+
 float tone_caps_on[][2]    = SONG(CAPS_LOCK_ON_SOUND);
 float tone_caps_off[][2]   = SONG(CAPS_LOCK_OFF_SOUND);
 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 */
 
@@ -434,6 +426,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
             }
             break;
 
+/*
         case MACRO_AUDIO_TOGGLE:
             if (record->event.pressed)
             {
@@ -464,7 +457,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                     }
             }
             break;
-
         case MACRO_INC_VOICE:
             if (record->event.pressed)
             {
@@ -484,6 +476,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                 #endif
             }
             break;
+*/
 
 #endif /* AUDIO_ENABLE */
 
@@ -505,8 +498,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 
 #ifdef AUDIO_ENABLE
 
-
-void process_action_user(keyrecord_t *record)
+/*
+bool process_action_user(keyrecord_t *record)
 {
 
     uint8_t starting_note = 0x0C;
@@ -524,7 +517,7 @@ void process_action_user(keyrecord_t *record)
         }
     }
 }
-
+*/
 
 void matrix_init_user(void)
 {
@@ -590,4 +583,19 @@ void play_goodbye_tone()
     stop_all_notes();
 }
 
+void play_audio_on_tone(void)
+{
+       PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO);
+}
+
+void play_music_on_tone(void)
+{
+       PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO);
+}
+
+void play_music_scale(void)
+{
+       PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
+}
+
 #endif /* AUDIO_ENABLE */
\ No newline at end of file
index 243f49f0eefdc188100aee7ac35fe9cfc810a137..32f64417ed659b7ba5c61ede337161f79a3825ab 100644 (file)
@@ -381,11 +381,14 @@ bool is_audio_on(void) {
 void audio_toggle(void) {
     audio_config.enable ^= 1;
     eeconfig_update_audio(audio_config.raw);
+    if (audio_config.enable)
+        audio_on_user();
 }
 
 void audio_on(void) {
     audio_config.enable = 1;
     eeconfig_update_audio(audio_config.raw);
+    audio_on_user();
 }
 
 void audio_off(void) {
@@ -484,5 +487,8 @@ __attribute__ ((weak))
 void play_goodbye_tone() {}
 
 __attribute__ ((weak))
-void audio_on_callback(void) {}
+void audio_on_user() {}
+
+__attribute__ ((weak))
+void play_music_scale() {}
 //------------------------------------------------------------------------------
index fe85061318ed0cb9936b179710d3cb2d438baa35..b46f587bb4028a3d2cd8637e8da2607dd1994ef2 100644 (file)
@@ -29,7 +29,6 @@ bool is_audio_on(void);
 void audio_toggle(void);
 void audio_on(void);
 void audio_off(void);
-void audio_on_callback(void);
 
 // Vibrato rate functions
 
@@ -87,9 +86,10 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest)
 
 
 bool is_playing_notes(void);
+
 void play_goodbye_tone(void);
 void play_startup_tone(void);
-
-
+void audio_on_user(void);
+void play_music_scale(void);
 
 #endif
\ No newline at end of file
index 07020150ae140896f26a66a62f37157ac19bc067..1cbe8c61c0932d63444ab09816fc539f9afa7d28 100644 (file)
@@ -224,18 +224,20 @@ extern const uint16_t fn_actions[];
 // Audio on/off
 #define AU_ON  0x5020
 #define AU_OFF 0x5021
+#define AU_TOG 0x5022
 
 // Music mode on/off
-#define MU_ON  0x5022
-#define MU_OFF 0x5023
+#define MU_ON  0x5023
+#define MU_OFF 0x5024
+#define MU_TOG 0x5025
 
 // Music voice iterate
-#define MUV_IN 0x5024
-#define MUV_DE 0x5025
+#define MUV_IN 0x5026
+#define MUV_DE 0x5027
 
 // Midi mode on/off
-#define MI_ON  0x5026
-#define MI_OFF 0x5027
+#define MI_ON  0x5028
+#define MI_OFF 0x5029
 
 // GOTO layer - 16 layers max
 // when:
index 5a978d33209f724bd0164eb95a8587e67812fd37..e4d7b91852e66f0be5436971cbd920a3a1bba4ff 100644 (file)
@@ -1,4 +1,5 @@
 #include "quantum.h"
+#include "timer.h"
 
 __attribute__ ((weak))
 void matrix_init_kb(void) {}
@@ -17,11 +18,11 @@ void leader_start(void) {}
 __attribute__ ((weak))
 void leader_end(void) {}
 
+uint8_t starting_note = 0x0C;
+int offset = 7;
+  
 #ifdef AUDIO_ENABLE
-  uint8_t starting_note = 0x0C;
-  int offset = 7;
   bool music_activated = false;
-  float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
 #endif
 
 #ifdef MIDI_ENABLE
@@ -105,7 +106,7 @@ bool process_record_quantum(keyrecord_t *record) {
   #ifdef MIDI_ENABLE
     if (keycode == MI_ON && record->event.pressed) {
       midi_activated = true;
-      PLAY_NOTE_ARRAY(music_scale, false, 0);
+      play_music_scale();
       return false;
     }
 
@@ -181,7 +182,6 @@ bool process_record_quantum(keyrecord_t *record) {
   #ifdef AUDIO_ENABLE
     if (keycode == AU_ON && record->event.pressed) {
       audio_on();
-      audio_on_callback();
       return false;
     }
 
@@ -190,31 +190,53 @@ bool process_record_quantum(keyrecord_t *record) {
       return false;
     }
 
+    if (keycode == AU_TOG && record->event.pressed) {
+        if (is_audio_on())
+        {
+            audio_off();
+        }
+        else
+        {
+            audio_on();
+        }
+      return false;
+    }
+
     if (keycode == MU_ON && record->event.pressed) {
-      music_activated = true;
-      PLAY_NOTE_ARRAY(music_scale, false, 0);
+      music_on();
       return false;
     }
 
     if (keycode == MU_OFF && record->event.pressed) {
-      music_activated = false;
-      stop_all_notes();
+      music_off();
       return false;
     }
 
+    if (keycode == MU_TOG && record->event.pressed) {
+        if (music_activated)
+        {
+          music_off();
+        }
+        else
+        {
+          music_on();
+        }
+        return false;
+    }
+
     if (keycode == MUV_IN && record->event.pressed) {
       voice_iterate();
-      PLAY_NOTE_ARRAY(music_scale, false, 0);
+      play_music_scale();
       return false;
     }
 
     if (keycode == MUV_DE && record->event.pressed) {
       voice_deiterate();
-      PLAY_NOTE_ARRAY(music_scale, false, 0);
+      play_music_scale();
       return false;
     }
 
-    if (music_activated) {   
+    if (music_activated) {
 
       if (keycode == KC_LCTL && record->event.pressed) { // Start recording
         stop_all_notes();
@@ -258,7 +280,7 @@ bool process_record_quantum(keyrecord_t *record) {
         }
       } else {
         stop_note(freq);
-      }  
+      }
 
       if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
         return false;
@@ -347,4 +369,29 @@ void matrix_scan_quantum() {
   #endif
 
   matrix_scan_kb();
-}
\ No newline at end of file
+}
+
+bool is_music_on(void) {
+    return (music_activated != 0);
+}
+
+void music_toggle(void) {
+    if (!music_activated) {
+        music_on();
+    } else {
+        music_off();
+    }
+}
+
+void music_on(void) {
+    music_activated = 1;
+    music_on_user();
+}
+
+void music_off(void) {
+    music_activated = 0;
+    stop_all_notes();
+}
+
+__attribute__ ((weak))
+void music_on_user() {}
\ No newline at end of file
index bfecdb2626aeaacc4ae18d026916422a38379d28..f4d8f09d48980b9be4c9b948da5ce7fb63f53982 100644 (file)
@@ -46,4 +46,11 @@ void leader_end(void);
 #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size
 #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT)
 
+bool is_music_on(void);
+void music_toggle(void);
+void music_on(void);
+void music_off(void);
+
+void music_on_user(void);
+
 #endif
\ No newline at end of file