diff options
author | Joshua Diamond <josh@windowoffire.com> | 2021-01-31 17:25:55 -0500 |
---|---|---|
committer | Drashna Jael're <drashna@live.com> | 2021-01-31 17:37:16 -0800 |
commit | 9ee0271c00c05ee5dddb7d77b04b5ec2fac2bd41 (patch) | |
tree | d0d6d69534c0528d1e412832a2a137f44a580f94 /quantum/audio | |
parent | 515c0802520ff51a9730a79d661106ce80bf1523 (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.h | 1 | ||||
-rw-r--r-- | quantum/audio/audio_avr.c | 2 | ||||
-rw-r--r-- | quantum/audio/audio_chibios.c | 15 | ||||
-rw-r--r-- | quantum/audio/audio_pwm.c | 11 |
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(); |