diff --git a/components/audio_mod/audio_mod.c b/components/audio_mod/audio_mod.c
index 6c1c738d165b36cf3becf3e46e91eb8c90f822c5..27ca745c235813430179736b94bd9adbd1dbd7d6 100644
--- a/components/audio_mod/audio_mod.c
+++ b/components/audio_mod/audio_mod.c
@@ -55,6 +55,11 @@ static void mod_think(st3m_media *media, float ms_elapsed) {
     mod_state *self = (void *)media;
     if (self->control.paused) return;
 
+    if (self->control.seek == 0) {
+        pocketmod_init(&self->pocketmod, self->data, self->size, 48000);
+        self->control.seek = -1;
+    }
+
     int samples_needed = (ms_elapsed / 1000.0) * 48000;
     if (samples_needed > 1000) samples_needed = 1000;