]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/audio/audio.c
Merge pull request #1007 from bryan4887/bryan
[qmk_firmware.git] / quantum / audio / audio.c
index 3a7f0f556701c3f1b25dcf6a15a2b802c90091d0..2a315fd1688de7d0a4c61a23a66274c5006afb4d 100644 (file)
@@ -6,7 +6,7 @@
 #include <avr/io.h>
 #include "print.h"
 #include "audio.h"
-#include "keymap_common.h"
+#include "keymap.h"
 
 #include "eeconfig.h"
 
@@ -77,6 +77,7 @@ static bool audio_initialized = false;
 audio_config_t audio_config;
 
 uint16_t envelope_index = 0;
+bool glissando = true;
 
 void audio_init()
 {
@@ -205,13 +206,17 @@ ISR(TIMER3_COMPA_vect)
                                        freq = frequencies[voice_place];
                                #endif
                        } else {
-                               if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) {
-                                       frequency = frequency * pow(2, 440/frequency/12/2);
-                               } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) {
-                                       frequency = frequency * pow(2, -440/frequency/12/2);
+                               if (glissando) {
+                                       if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) {
+                                               frequency = frequency * pow(2, 440/frequency/12/2);
+                                       } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) {
+                                               frequency = frequency * pow(2, -440/frequency/12/2);
+                                       } else {
+                                               frequency = frequencies[voices - 1];
+                                       }
                                } else {
                                        frequency = frequencies[voices - 1];
-                               }
+                               }                               
 
                                #ifdef VIBRATO_ENABLE
                                        if (vibrato_strength > 0) {
@@ -374,14 +379,21 @@ bool is_playing_notes(void) {
        return playing_notes;
 }
 
+bool is_audio_on(void) {
+    return (audio_config.enable != 0);
+}
+
 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) {
@@ -468,18 +480,3 @@ void increase_tempo(uint8_t tempo_change) {
         note_tempo -= tempo_change;
     }
 }
-
-
-//------------------------------------------------------------------------------
-// Override these functions in your keymap file to play different tunes on
-// startup and bootloader jump
-__attribute__ ((weak))
-void play_startup_tone()
-{
-}
-
-__attribute__ ((weak))
-void play_goodbye_tone()
-{
-}
-//------------------------------------------------------------------------------