diff --git a/changes/changelog.d/1291.bugfix b/changes/changelog.d/1291.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..06cd0a7db69dad44ef1c97c8734b9ce49de3de93
--- /dev/null
+++ b/changes/changelog.d/1291.bugfix
@@ -0,0 +1 @@
+Fix tracks playing in the background without the ability to control them (#1213) (#1387)
diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue
index e8bbb8dd812f35d45c4d4949aa0a93f27c6ddcc6..208ec00f5aa7ec6ff0c43b38a8d08a2b2b8b90a2 100644
--- a/front/src/components/audio/Player.vue
+++ b/front/src/components/audio/Player.vue
@@ -304,21 +304,15 @@ export default {
       toggleMute: "player/toggleMute",
     }),
     async getTrackData (trackData) {
-      let data = null
-      if (!trackData.uploads.length || trackData.uploads.length === 0) {
-        // we don't have upload informations for this track, we need to fetch it
-        await axios.get(`tracks/${trackData.id}/`).then((response) => {
-          data = response.data
-        }, error => {
-          data = null
-        })
-      } else {
-        return trackData
-      }
-      if (data === null) {
-        return
-      }
-      return data
+      // use previously fetched trackData
+      if (trackData.uploads.length) return trackData
+
+      // we don't have any information for this track, we need to fetch it
+      return axios.get(`tracks/${trackData.id}/`)
+                  .then(
+                    response => response.data,
+                    err => null
+                  )
     },
     shuffle() {
       let disabled = this.queue.tracks.length === 0
@@ -611,8 +605,11 @@ export default {
     async loadSound (newValue, oldValue) {
       let trackData = newValue
       let oldSound = this.currentSound
+      // stop all other sounds!
+      // we do this here (before the track has loaded) to get a predictable
+      // song order.
+      Howler.stop()
       if (oldSound && trackData !== oldValue) {
-        oldSound.stop(this.soundId)
         this.soundId = null
       }
       if (!trackData) {
@@ -620,7 +617,7 @@ export default {
       }
       if (!this.isShuffling && trackData != oldValue) {
         trackData = await this.getTrackData(trackData)
-        if (trackData === null) {
+        if (trackData == null) {
           this.handleError({})
         }
         this.currentSound = this.getSound(trackData)