1
0
Fork 0

Stop sounds when suspended (#11553)

* fix stopping audio on suspend vs. startup sound

* trim firmware size

* fix stuck audio on startup (ARM)
This commit is contained in:
Joshua Diamond 2021-01-31 17:25:55 -05:00 committed by GitHub
parent db11a2a1fd
commit ae4ee7553a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 56 additions and 4 deletions

View file

@ -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);

View file

@ -227,7 +227,9 @@ void audio_init() {
audio_initialized = true;
}
}
void audio_startup() {
if (audio_config.enable) {
PLAY_SONG(startup_song);
}

View file

@ -281,6 +281,12 @@ void audio_init() {
dacStart(&DACD1, &dac1cfg1);
dacStart(&DACD2, &dac1cfg2);
/*
* Start the note timer
*/
gptStart(&GPTD8, &gpt8cfg1);
gptStartContinuous(&GPTD8, 2U);
/*
* Starting GPT6/7 driver, it is used for triggering the DAC.
*/
@ -295,10 +301,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();
}
}
@ -638,6 +646,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) {

View file

@ -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();