diff --git a/server/subsonic/helpers.go b/server/subsonic/helpers.go index d8ec8451b..056ca89f1 100644 --- a/server/subsonic/helpers.go +++ b/server/subsonic/helpers.go @@ -530,6 +530,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]