Przeglądaj źródła

Preserve dotted timing on subseqent loops (#1231)

Jeremy Stashewsky 3 lat temu
rodzic
commit
e46af576fc

+ 3 - 2
applications/music_player/music_player_worker.c

@@ -59,9 +59,10 @@ static int32_t music_player_worker_thread_callback(void* context) {
             float frequency = NOTE_C4 * powf(TWO_POW_TWELTH_ROOT, note_from_a4);
             float frequency = NOTE_C4 * powf(TWO_POW_TWELTH_ROOT, note_from_a4);
             float duration =
             float duration =
                 60.0 * osKernelGetTickFreq() * 4 / instance->bpm / note_block->duration;
                 60.0 * osKernelGetTickFreq() * 4 / instance->bpm / note_block->duration;
-            while(note_block->dots > 0) {
+            uint32_t dots = note_block->dots;
+            while(dots > 0) {
                 duration += duration / 2;
                 duration += duration / 2;
-                note_block->dots--;
+                dots--;
             }
             }
             uint32_t next_tick = furi_hal_get_tick() + duration;
             uint32_t next_tick = furi_hal_get_tick() + duration;
             float volume = instance->volume;
             float volume = instance->volume;