diff --git a/server/subsonic/helpers.go b/server/subsonic/helpers.go index c27c72f9e..0ca014ae2 100644 --- a/server/subsonic/helpers.go +++ b/server/subsonic/helpers.go @@ -513,6 +513,11 @@ func buildStructuredLyric(mf *model.MediaFile, lyrics model.Lyrics, enhanced boo }) } + // Ensure main vocals (empty role) always comes first + sort.SliceStable(roleOrder, func(i, j int) bool { + return roleOrder[i] == "" && roleOrder[j] != "" + }) + // Create a separate CueLine for each role group for _, role := range roleOrder { cues := cuesByRole[role]