So, in regard to musics... we all know there's several versions of a lot of tracks out there, especially the Orig ones. And we probably all have our favorite versions - which might not be the same for every track (eg. some people might prefer the Amiga version of Track A, but the DOS version of Track B and the Master System version of Track C).
With this in mind, I'm considering allowing multiple versions of the same track to be installed, and allowing the user to select their preferred version, which would be played on any level that uses that music (whether as a result of the general rotation, or because the level in question specifically is set to that track).
The current way I envision this working is that, for each track (not just each set, but each individual track), the user can choose their preferred version out of all installed versions of that track. They'll also have an option of how strictly to prefer that track - either "Allow a level to override the version selection", or "Force this version".
What's that mean? Well - at the same time, levels could either specify in general "just use this track, whatever version the user prefers", or "use a specific version of this track if available". So the user option would affect whether or not the level can override their preferred version.
So let's use "cancan" (from "orig") as an example. Let's say there's three versions - Amiga, DOS and SMS (of course there's way more than this, but just for the sake of an example...). The user in question has the Amiga and DOS versions installed, but not the SMS versions.
Case 1
User has "Amiga" set as their preference, but has not selected to outright force that version.
Level specifies "orig.cancan" as the music but doesn't specify any version of it to play.
> The level plays the Amiga version of orig's "cancan".
Case 2
User has "Amiga" set as their preference, but has not selected to outright force that version.
Level specifies "orig.cancan" as the music, and specifies to play the DOS version.
> The level plays the DOS version of orig's "cancan".
Case 3
User has "Amiga" set as their preference, and has selected to outright force that version.
Level specifies "orig.cancan" as the music, and specifies to play the DOS version.
> The level plays the Amiga version of orig's "cancan", since the user has chosen to override the level's version specification.
Case 4
User has "Amiga" set as their preference, but has not selected to outright force that version.
Level specifies "orig.cancan" as the music, and specifies to play the SMS version.
> The level plays the Amiga version of orig's "cancan", because the user does not have the SMS version installed, so it reverts to their preference.
Some possible issues:
- What to do if the user doesn't have *any* version of the specified track installed? While NeoLemmix would come with at least one version of all the official tracks (most likely Amiga versions, since they're the second most well-known after DOS, and are far smaller files than the DOS ones), this could be relevant if, say, someone makes a level and specifies an LPIII track for it.
- Should the "override level's preference" option really be there? My initial thought was against this, but then I realised someone who's really determined to get their preferred version could just delete the not-preferred version of it anyway, which would just create a mess and achieve the same end result.
- What about cases where custom packs have musics which could be considered variations of the standard ones? Two examples that come to mind here are Holiday Lemmings Plus and Lemmings Reunion, both of which have both completely new tracks and variations of existing ones. Should it be encouraged to install them as variants of existing tracks?