summaryrefslogtreecommitdiff
path: root/quantum/audio
diff options
context:
space:
mode:
authorJoshua Diamond <josh@windowoffire.com>2021-01-31 17:25:55 -0500
committerDrashna Jael're <drashna@live.com>2021-01-31 17:37:16 -0800
commit9ee0271c00c05ee5dddb7d77b04b5ec2fac2bd41 (patch)
treed0d6d69534c0528d1e412832a2a137f44a580f94 /quantum/audio
parent515c0802520ff51a9730a79d661106ce80bf1523 (diff)
Stop sounds when suspended (#11553)
* fix stopping audio on suspend vs. startup sound * trim firmware size * fix stuck audio on startup (ARM)
Diffstat (limited to 'quantum/audio')
-rw-r--r--quantum/audio/audio.h1
-rw-r--r--quantum/audio/audio_avr.c2
-rw-r--r--quantum/audio/audio_chibios.c15
-rw-r--r--quantum/audio/audio_pwm.c11
4 files changed, 27 insertions, 2 deletions
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index bc00cd19e6..dccf03d5f6 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -83,6 +83,7 @@ void increase_tempo(uint8_t tempo_change);
void decrease_tempo(uint8_t tempo_change);
void audio_init(void);
+void audio_startup(void);
#ifdef PWM_AUDIO
void play_sample(uint8_t* s, uint16_t l, bool r);
diff --git a/quantum/audio/audio_avr.c b/quantum/audio/audio_avr.c
index 5a96bf6439..1bac43bb43 100644
--- a/quantum/audio/audio_avr.c
+++ b/quantum/audio/audio_avr.c
@@ -227,7 +227,9 @@ void audio_init() {
audio_initialized = true;
}
+}
+void audio_startup() {
if (audio_config.enable) {
PLAY_SONG(startup_song);
}
diff --git a/quantum/audio/audio_chibios.c b/quantum/audio/audio_chibios.c
index 66560674d5..377f93de5d 100644
--- a/quantum/audio/audio_chibios.c
+++ b/quantum/audio/audio_chibios.c
@@ -287,6 +287,12 @@ void audio_init() {
dacStart(&DACD2, &dac1cfg2);
/*
+ * Start the note timer
+ */
+ gptStart(&GPTD8, &gpt8cfg1);
+ gptStartContinuous(&GPTD8, 2U);
+
+ /*
* Starting GPT6/7 driver, it is used for triggering the DAC.
*/
START_CHANNEL_1();
@@ -300,10 +306,12 @@ void audio_init() {
audio_initialized = true;
+ stop_all_notes();
+}
+
+void audio_startup() {
if (audio_config.enable) {
PLAY_SONG(startup_song);
- } else {
- stop_all_notes();
}
}
@@ -643,6 +651,9 @@ bool is_playing_notes(void) { return playing_notes; }
bool is_audio_on(void) { return (audio_config.enable != 0); }
void audio_toggle(void) {
+ if (audio_config.enable) {
+ stop_all_notes();
+ }
audio_config.enable ^= 1;
eeconfig_update_audio(audio_config.raw);
if (audio_config.enable) {
diff --git a/quantum/audio/audio_pwm.c b/quantum/audio/audio_pwm.c
index 545aef6dd7..d93ac4bb40 100644
--- a/quantum/audio/audio_pwm.c
+++ b/quantum/audio/audio_pwm.c
@@ -29,6 +29,11 @@
#define CPU_PRESCALER 8
+#ifndef STARTUP_SONG
+# define STARTUP_SONG SONG(STARTUP_SOUND)
+#endif
+float startup_song[][2] = STARTUP_SONG;
+
// Timer Abstractions
// TIMSK3 - Timer/Counter #3 Interrupt Mask Register
@@ -155,6 +160,12 @@ void audio_init() {
audio_initialized = true;
}
+void audio_startup() {
+ if (audio_config.enable) {
+ PLAY_SONG(startup_song);
+ }
+}
+
void stop_all_notes() {
if (!audio_initialized) {
audio_init();