aboutsummaryrefslogtreecommitdiff
path: root/quantum/audio/audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/audio/audio.c')
-rw-r--r--quantum/audio/audio.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index 4e223f0c9a..461ec89544 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -183,6 +183,25 @@ void audio_init(void) {
#endif
}
+void audio_task(void) {
+#ifdef AUDIO_INIT_DELAY
+ // startup song potentially needs to be run a little bit
+ // after keyboard startup, or else they will not work correctly
+ // because of interaction with the USB device state, which
+ // may still be in flux...
+ static bool delayed_tasks_run = false;
+ static uint16_t delayed_task_timer = 0;
+ if (!delayed_tasks_run) {
+ if (!delayed_task_timer) {
+ delayed_task_timer = timer_read();
+ } else if (timer_elapsed(delayed_task_timer) > 300) {
+ audio_startup();
+ delayed_tasks_run = true;
+ }
+ }
+#endif
+}
+
void audio_startup(void) {
if (audio_config.enable) {
PLAY_SONG(startup_song);
@@ -371,8 +390,9 @@ void audio_play_melody(float (*np)[][2], uint16_t n_count, bool n_repeat) {
melody_current_note_duration = audio_duration_to_ms((*notes_pointer)[current_note][1]);
}
-float click[2][2];
-void audio_play_click(uint16_t delay, float pitch, uint16_t duration) {
+void audio_play_click(uint16_t delay, float pitch, uint16_t duration) {
+ static float click[2][2];
+
uint16_t duration_tone = audio_ms_to_duration(duration);
uint16_t duration_delay = audio_ms_to_duration(delay);