Multiple versions of a song - Sensible Solution

Any ideas about how to improve MediaMonkey for Windows 4? Let us know!

Moderator: Gurus

doppledoer
Posts: 3
Joined: Sat May 30, 2009 11:40 pm

Multiple versions of a song - Sensible Solution

Post by doppledoer »

The Problem

Hi. I would like to address the problem of having multiple versions of the same song and the most sensible way to manage each version. As you are all aware, there are quite legitimate instances where you would want multiple versions of a song. There may be alternate recordings (live, demoes, etc.) or you may want to keep different copies of the same recording (lossless for home, lossy for portable). So I think finding a solution that intelligently manages these multiples versions (and hence keeps our precious libraries clean) is quite important.

These are the current solutions that I am aware of. They tend to solve one problem but not all:

a) Keep one copy of the song, and use 'virtual tracks' in each album that point to the central file.
- Great for compilations, but does not help for significant variations (covers, live recordings) and may not be compatible with other players/devices.

b) Keep lossless files and convert them down when adding to a portable devices
- Gives you the flexibility of quality and portability, but can be time consuming

c) Keep all duplicates and just ignore them
- This is best for library integrity, but can lead to songs playing multiple times if you are shuffling or listening to all tracks by an artist.

The Solution

I believe that a far better solution would be giving you the ability to define which tracks are the same song. Then just as you can expand an album to view its tracks, you could expand a song to view its versions. Let me explain with an example:

Let's say that I have multiple versions of Arcade Fire's "No Cars Go". I have copies off the following albums:

a) Arcade Fire (EP) [MP3 192kbps]
b) Neon Bible (Album) [MP3 192kbps]
c) Neon Bible (Album)[FLAC]
d) Live in Vancouver [MP3 192kbps]
e) Cool Songs (Compilation) [MP3 192kbps]

When I view the band's tracks, I would see only one copy of No Cars Go. However, under the album field, it would say "Arcade Fire, Neon Bible, Live in Vancouver, Cool Songs" and under Format, it would say "FLAC, MP3". You get the point. I could then expand the song and it would split it up into each individual version.

All these versions are linked, but you need to choose one version as the primary version. In this case, I would choose the FLAC album version. So when I wanted to listen to No Cars Go or add it to a playlist, this version would be used (unless I explicitly asked to use a different one).

The key to this is that it only hides tracks when they have the same value in the current sort field. So in the above example, I was sorting by track name, and seeing as they were all the same, they were hidden. But if I decided to sort by album, I would see 4 copies of No Cars Go, because I have 4 different albums that contain it. The only version that would be hidden is the MP3 album version, because I have a higher quality copy of it.

The beauty of this is that album integrity is kept in tact. If I chose to listen to a band by album, I will hear each track in its correct position. But if I'm listening to them in random order, I will only hear each song once.

In some cases however, you may feel that two versions are significantly different. If this is the case, don't link them! All you need to do is ask "Would I like to hear both versions in a mix?" If the answer is no, that's when you link them. If you wanted, you could link all your studio versions and all your live versions, so that only one of each would come up in a mix.

Implementation


This functionality could be achieved quite easily. When you link two songs, the hash (or a unique identifier) of the primary version, is placed in one of the custom fields of the secondary version. Then, when Media Monkey is outputting a list of tracks, it would check this custom field to see if it is a linked track. If it is, it will go to the primary version and compare the values in the sort field. If they are both in the list and are the same, they will be merged.

The other functionality that would need implementing is a way of choosing which version is played or added to a playlist. There would be manual selection, where you right click on a song/album and choose which version to use. You should also be able to set rules for playlists that dynamically determine which song to use. So for example, if you are creating a playlist for your mp3 player and want to fit a lot of songs on, you may give it the following settings: "Format = MP3, Quality = LOWEST between 160kbps and 256kbps". So in this case, if I added Neon Bible to the playlist, it would add the MP3 version.

Conclusion


This concept is not new. I found it mentioned in number of places and in much detail here. However, as far as I am aware, it has never been implemented. This concept could be expanded further, but the simple functionality which I outlined above is the most important and would benefit many Media Monkey users.

Let's get behind this and get it added to the official build.

Media Monkey will move one step closer to perfection.

Cheers
ZvezdanD
Posts: 3265
Joined: Thu Jun 08, 2006 7:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by ZvezdanD »

doppledoer wrote:as far as I am aware, it has never been implemented.
You could try the Track Redirection script.
Magic Nodes 4.3.3 / 5.2 RegExp Find & Replace 4.4.9 / 5.2  Invert Selection/Select None 1.5.1  Export/Create Playlists for Child Nodes 4.1.1 / 5.4.1  Expand Child Nodes/Expand All 1.1.2  Event Logger 2.7  Filtered Statistics Report 1.6  Track Redirection & Synchronization 3.4.2  Restore/Synchronize Database 3.1.8 / 4.0.1  Find Currently Playing Track 1.3.2  Queue List 1.2.1  Add to Library on Play 1.0.1  Tree Report for Child Nodes 1.1.1  Update Location of Files in Database 1.4.5 / 2.3  Inherit Child Playlists 1.0.3  Add Currently Playing/Selected Track(s) to Playlist 1.2
doppledoer
Posts: 3
Joined: Sat May 30, 2009 11:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by doppledoer »

No, I mentioned track redirection and it wouldn't work. Because if you are organizing your files to folders based on album, there will be holes where music files have been replaced with redirection files. And it is useless if you want to keep multiple formats of the same song. Also it is not ideal in situations such as compilations, because as has been mentioned in other threads, sometimes they are mastered differently and do not fit in the context of a different album.

I am proposing keeping all the original music files and dynamically merging them as you are viewing lists of songs so that you are given a sensible list without unwanted duplicates.

Do people think its doable? Is it something that could be done with a script or is it a major change?
ZvezdanD
Posts: 3265
Joined: Thu Jun 08, 2006 7:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by ZvezdanD »

doppledoer wrote:Because if you are organizing your files to folders based on album, there will be holes where music files have been replaced with redirection files.
What kind of holes?
doppledoer wrote:And it is useless if you want to keep multiple formats of the same song. Also it is not ideal in situations such as compilations, because as has been mentioned in other threads, sometimes they are mastered differently and do not fit in the context of a different album.
You didn't try my script, right? You should know that it has a possibility to keep multiple formats of the same song. If you choose the Create redirection link option instead of the Replace with .asx metafile, you would keep original files whatever format they have. Also, if you have different versions of same song, you should not create redirections for such songs. How is your proposal from the previous post any different? Here are your words: "In some cases however, you may feel that two versions are significantly different. If this is the case, don't link them!"
doppledoer wrote:I am proposing keeping all the original music files and dynamically merging them as you are viewing lists of songs so that you are given a sensible list without unwanted duplicates.
I am not sure what you mean by "dynamically merging", but I think again that you didn't try my script, nor you read its description. As I said, you should know that it has a possibility to keep original music files and just create links between same songs from different albums.

Please, try the script first, then tell me what is wrong with it. You should not speak something about it which is not verified. You know, I spent very significant part of my free time to write this script and I just expect from you to reserve a few minutes trying it. If you have some real suggestions which is not already implemented, I will be glad to add them to my script.
Magic Nodes 4.3.3 / 5.2 RegExp Find & Replace 4.4.9 / 5.2  Invert Selection/Select None 1.5.1  Export/Create Playlists for Child Nodes 4.1.1 / 5.4.1  Expand Child Nodes/Expand All 1.1.2  Event Logger 2.7  Filtered Statistics Report 1.6  Track Redirection & Synchronization 3.4.2  Restore/Synchronize Database 3.1.8 / 4.0.1  Find Currently Playing Track 1.3.2  Queue List 1.2.1  Add to Library on Play 1.0.1  Tree Report for Child Nodes 1.1.1  Update Location of Files in Database 1.4.5 / 2.3  Inherit Child Playlists 1.0.3  Add Currently Playing/Selected Track(s) to Playlist 1.2
doppledoer
Posts: 3
Joined: Sat May 30, 2009 11:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by doppledoer »

Hi ZvezdanD, first of all thanks for your work writing scripts it is much appreciated. You are right, I should have given Track Redirection a thorough test before making conclusions. However it does not work with my Media Monkey (3.0.5.1186). I will need to upgrade to fully test.

However I am quite confident I understand what it does. It is quite similar to my aims and hopefully we will be able to add my functionality into your script. The main difference is this:

Whilst your script links files, it still shows all the files. So if am looking at an artist, and I sort by track name, I will get multiple duplicate tracks in a row, as you see below. Not only does this look untidy, but if I want to listen to all of the artists tracks, I will hear the same song three times in a row.

Image

What I propose is combining linked tracks so that you only see one. When you double click it, the master track will be played by default, but you can also right-click and choose to play a different version. I am unsure of the best way to display the combined track. You could either combine the meta, as I have mocked up below, or you could make tracks into expandable nodes. So just like you can click on an album to see its tracks, you could click on a track to see its versions.

Image

However the tracks should not always be hidden. If for example, I am listening to an artist one album at a time, then I will want to hear the duplicated tracks in their correct position, as you can see below. This is what I mean by dynamic. Tracks are combined or separated based on context.

Image

The way it decides whether to hide or not is based on the sort field. If two linked tracks are equal in the current sort field, then they will be hidden. So if I have two copies of a song which are different file formats, they will always be combined, unless I decide to sort by file format, in which case both will show up.

Do you understand what I'm getting at? The main benefits are:

a) Allow you to keep and access multiple copies of a song without clogging the library
b) Avoid multiple versions of the same song being played when you are shuffling or listening to all tracks by an artist

I am unsure how to combine this with your script, because my functionality does not actually use any redirection. Instead it hides tracks based on the context.

Are you aware of a way to implement this? You're help would be greatly appreciated.

Let me know if I am still misunderstanding your script.
Agouti
Posts: 17
Joined: Tue Nov 06, 2007 3:16 am

Re: Multiple versions of a song - Sensible Solution

Post by Agouti »

I've (now) installed and had a good look at ZvezdanD's script, and I'll say it's a mighty fine script. I'm already using it where I have identical copies in different albums, and I do like it, and yes, you should be proud ZvezdanD. You've done a really nice job. :)
If I could make a script as good as yours I'd feel good about it.

I like your idea doppledoer - but I'm not sure that's really possible to change the normal display & playback behavior like that with a script. I think, as Z. said, closest would be through magic nodes. A real pity, because I would love what you've suggested. It would also come in handy for rating based auto playlists.

I've been having the same porblem. For instance, I have a song I really like, but the single that it came on also has a whole bunch of remixes. Now, I like them all in their own fashion, but that doesn't mean I want to listen to the same song mixed 10 different ways in one sitting. Different versions have different feels, some are more dance-orientated while there is also a chill out ones (with big quiet lead ins) in there as well. I also dislike having to create a special playlist for my MP3 player so that I can just play the artist without having to cop the same song over and over again. Also don't want to have to go through and link them manually.

For now, I've just made auto playlists (like the sync one) which exclude anything with "mix" or "version" in the title, but it's not a very nice solution.

I'm not even sure it's possible for a script to do exactly what I want, especially as I don't even know for sure, all I know is I really don't like how I'm having to do it at the moment, and while some (most, once I learn to use the script properly most likely) aspects of my woes are helped by your script, I am still after something different (in addition!). I'm still trying to figure out the best way of organizing my music. In a perfect world I'd live a whole range of buttons that I could just press, like a chill out button that would play all the good tracks with that feel. Last.fm DJ kinda kinda does that but it's still very beta and it has a bad habit of getting stuck on a particular compilation album.

The playback side of things could be solved through a really clever AutoDj script (and maybe a button to clean the Now Playing list), that knows about this sort of stuff? Wouldn't help with the MP3 player though. Just throwing ideas around.



You seem a little quick to get all fired up when someone does not immediately hold your script to the sky as the solution. This is the wonderful wide world, and there are many different ways of achieving the same goal - and that's the best part about it. Even if they wanted to remake a script exactly the same as yours, they might build the interface different. Some people might prefer it their way. Some people use realplayer for god's sake. But - and here the important bit - that's OK! That's the way the world works! You don't need to feel personally insulted just because people don't want to use your script! You can also have a look at what they are after, and you may even like to modify yours to suit those people a bit better as well. Who knows?

For instance, Apple make perfectly good MP3 players. Some say the best (though I prefer Cowon). They do everything that you could reasonably want out of a MP3 player. That does not mean that Sony, or iRiver, or Cowon should pack up and go home, or stop trying to develop new players.
ZvezdanD
Posts: 3265
Joined: Thu Jun 08, 2006 7:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by ZvezdanD »

No, my script cannot be currently used for filtered display of tracks in the library. Beside of that, you cannot get collapsed/expanded display of tracks in the main tracklist with the program itself, nor you could do that with the scripts - this is simply not possible. Maybe in some future version of MediaMonkey, but not now. Well, if you want I could add two options to my script, one to remove duplicates from the current tracklist (similar to your collapsed display of tracks) and another option to add all duplicated tracks to the current ones (similar to your expanded display). I could also add one new option to the Now Playing right-click menu to show all tracks which are linked to the selected one, so you choose which one you want to play. Or maybe you want same menu to show all tracks which have same Artist and Title (if you don't have created links between different tracks).

However, as I said in another thread, there are already several solutions to get filtered display of tracks without duplicates. One solution is to use the Magic Nodes script and the following mask, as I recently explained here:

Code: Select all

<Group|Name:Tracks with...|Show tracks:No>\Tracks without duplicates (only one track with same Title from same Artists)|Icon:Top level|Filter:(Songs.ID IN (SELECT ID FROM Songs WHERE SongTitle || '@#$' || Artist COLLATE IUnicode IN (SELECT SongTitle || '@#$' || Artist COLLATE IUnicode AS GroupField FROM Songs WHERE Length(SongTitle) > 0 GROUP BY GroupField HAVING Count(*) > 1 AND Count(DISTINCT Artist) = 1) GROUP BY Artist, SongTitle) OR Songs.SongTitle || '@#$' || Songs.Artist COLLATE IUnicode NOT IN (SELECT SongTitle || '@#$' || Artist COLLATE IUnicode AS GroupField FROM Songs WHERE Length(SongTitle) > 0 GROUP BY GroupField HAVING Count(*) > 1 AND Count(DISTINCT Artist) = 1))\<Title|Trim:1>\<Title>
You could also create a mask with all tracks, not filtered, and you could choose specific version from the tree panel, e.g. with the following simple mask:

Code: Select all

Album Artist, Title, Album\<Album Artist>\<Title>\<Album>
Using the tree panel you could collapse/expand nodes with Titles, and within them you could choose song version from specific album. Please install Magic Nodes script, enter supplied masks and you would see that it is very similar to your requirement. The only difference, as I see it, is in fact that instead of the main tracklist you should use the tree panel for choosing specific version of some song.
Magic Nodes 4.3.3 / 5.2 RegExp Find & Replace 4.4.9 / 5.2  Invert Selection/Select None 1.5.1  Export/Create Playlists for Child Nodes 4.1.1 / 5.4.1  Expand Child Nodes/Expand All 1.1.2  Event Logger 2.7  Filtered Statistics Report 1.6  Track Redirection & Synchronization 3.4.2  Restore/Synchronize Database 3.1.8 / 4.0.1  Find Currently Playing Track 1.3.2  Queue List 1.2.1  Add to Library on Play 1.0.1  Tree Report for Child Nodes 1.1.1  Update Location of Files in Database 1.4.5 / 2.3  Inherit Child Playlists 1.0.3  Add Currently Playing/Selected Track(s) to Playlist 1.2
Agouti
Posts: 17
Joined: Tue Nov 06, 2007 3:16 am

Re: Multiple versions of a song - Sensible Solution

Post by Agouti »

Yup, I agree. Unless MM starts supporting low level plugins/add-ons you can't get that level of modification through scripting.

You might be interested in checking out SongBird, it's not hugely sophisticated as yet (I'm not a fan) but it uses low level addons so it could potentially do what you are after.
Solitaire001
Posts: 77
Joined: Tue May 05, 2009 7:33 pm

Re: Multiple versions of a song - Sensible Solution

Post by Solitaire001 »

I've had a similar problem in my collection. In addition to multiple versions of the same song (both by the same artist and also by different artists), I also have a few instances of songs with the same name, but are different songs (such as with the song "The End Of The World" by Skeeter Davis and by Pet Shop Boys). I prefer to keep all albums intact, so the only duplicate tracks that I remove from my collection are ones that are identical duplicates that appear in different compilations of an artist.

To deal with this, if I have two or more tracks with the same name I put a different number in brackets after the the song title (example with the above: "The End Of The World [1]" for one version and "The End Of The World [2]" for another). This way, each track has a unique name and it makes it easier to locate a specific version of a song.

As far as avoiding the duplicates when shuffling songs, I have a technique that might help. One of the problems I had with shuffling tracks is that I wanted a playlist that featured only music tracks. Using genre tags alone didn't work because I have many comedy tracks that feature music. What I did was rename one of the custom tags "Music" and for all of my music tracks I put a "Yes" in that field. Then I created a playlist that only featured tracks that had a "Yes" in the music field.

In the same way, you could rename one of the custom field (for example) "Shuffle," put Yes or No in the field. Then, via playlists you could easily exclude the duplicates (or any track) that you don't want in your shuffle list.

I hope that helps.
greggw
Posts: 34
Joined: Wed Apr 04, 2007 7:51 pm
Location: Indiana, USA

Re: Multiple versions of a song - Sensible Solution

Post by greggw »

I've read through this thread and I believe you're talking about one song that appears in several albums. I'm interested in another type of support for multiple versions of a song.

I would like to be able to group different formats of the same song together so that if I update the tags of the song in one format, it will get updated in another. For example, if I rip a song from a CD as a .wav file and then convert the track to a new destination as 128 kbps MP3 file that is added to my library, I would like MediaMonkey to be smart enough to "tie" the two version together. If I updated the tags (or library entry) in one version, I would have the option of having the tags (or library entry) updated automatically for the other version(s).
Gregg W
nohitter151
Posts: 23640
Joined: Wed Aug 09, 2006 10:20 am
Location: NJ, USA
Contact:

Re: Multiple versions of a song - Sensible Solution

Post by nohitter151 »

greggw wrote:I've read through this thread and I believe you're talking about one song that appears in several albums. I'm interested in another type of support for multiple versions of a song.

I would like to be able to group different formats of the same song together so that if I update the tags of the song in one format, it will get updated in another. For example, if I rip a song from a CD as a .wav file and then convert the track to a new destination as 128 kbps MP3 file that is added to my library, I would like MediaMonkey to be smart enough to "tie" the two version together. If I updated the tags (or library entry) in one version, I would have the option of having the tags (or library entry) updated automatically for the other version(s).
You really should look at ZvezdanD's script then, it allows for that and his script is really excellent.
http://www.mediamonkey.com/forum/viewto ... =2&t=39312
MediaMonkey user since 2006
Need help? Got a suggestion? Can't find something?

Please no PMs in reply to a post. Just reply in the thread.
ZvezdanD
Posts: 3265
Joined: Thu Jun 08, 2006 7:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by ZvezdanD »

nohitter151 wrote:You really should look at ZvezdanD's script then, it allows for that and his script is really excellent.
Thank you very much for your kind words. However, my script currently cannot be used for such kind of tags manipulation as greggw wants. The Play count and the Last played date are only metadata which are synchronized in this moment. Well, even those are not really "synchronized", but just transfered from the played redirected song to the master track if you chose an option "Update plystats of master tracks on playback". I think MoDementia's Sync the Sync could do such thing, but it is now unavailable.

I already had a request for synchronization of the Rating value, and maybe I would add some more (all) fields, so when some user change tags of one track, all linked track would be updated. However, there would not be any "smart" way to "tie" tracks - you still would need to select the master track and to specify which tracks should be linked to it.
Magic Nodes 4.3.3 / 5.2 RegExp Find & Replace 4.4.9 / 5.2  Invert Selection/Select None 1.5.1  Export/Create Playlists for Child Nodes 4.1.1 / 5.4.1  Expand Child Nodes/Expand All 1.1.2  Event Logger 2.7  Filtered Statistics Report 1.6  Track Redirection & Synchronization 3.4.2  Restore/Synchronize Database 3.1.8 / 4.0.1  Find Currently Playing Track 1.3.2  Queue List 1.2.1  Add to Library on Play 1.0.1  Tree Report for Child Nodes 1.1.1  Update Location of Files in Database 1.4.5 / 2.3  Inherit Child Playlists 1.0.3  Add Currently Playing/Selected Track(s) to Playlist 1.2
ZvezdanD
Posts: 3265
Joined: Thu Jun 08, 2006 7:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by ZvezdanD »

doppledoer wrote:a) Allow you to keep and access multiple copies of a song without clogging the library
b) Avoid multiple versions of the same song being played when you are shuffling or listening to all tracks by an artist
This is not exactly what you want, but you could try the new update of my script: v1.3 - 2009-06-13
- Added: support for tracks in the Now Playing panel with its context menu;
- Added: option Remove Duplicates from the Tracklist/Now Playing List (MM 3.1.0.1218 or up required);
- Added: option Replace with Duplicate from Album (MM 3.1.0.1218 or up required);
- Added: option Replace with Linked Track (MM 3.1.0.1218 or up required).
Magic Nodes 4.3.3 / 5.2 RegExp Find & Replace 4.4.9 / 5.2  Invert Selection/Select None 1.5.1  Export/Create Playlists for Child Nodes 4.1.1 / 5.4.1  Expand Child Nodes/Expand All 1.1.2  Event Logger 2.7  Filtered Statistics Report 1.6  Track Redirection & Synchronization 3.4.2  Restore/Synchronize Database 3.1.8 / 4.0.1  Find Currently Playing Track 1.3.2  Queue List 1.2.1  Add to Library on Play 1.0.1  Tree Report for Child Nodes 1.1.1  Update Location of Files in Database 1.4.5 / 2.3  Inherit Child Playlists 1.0.3  Add Currently Playing/Selected Track(s) to Playlist 1.2
ZvezdanD
Posts: 3265
Joined: Thu Jun 08, 2006 7:40 pm

Re: Multiple versions of a song - Sensible Solution

Post by ZvezdanD »

nohitter151 wrote:
greggw wrote:I've read through this thread and I believe you're talking about one song that appears in several albums. I'm interested in another type of support for multiple versions of a song.

I would like to be able to group different formats of the same song together so that if I update the tags of the song in one format, it will get updated in another. For example, if I rip a song from a CD as a .wav file and then convert the track to a new destination as 128 kbps MP3 file that is added to my library, I would like MediaMonkey to be smart enough to "tie" the two version together. If I updated the tags (or library entry) in one version, I would have the option of having the tags (or library entry) updated automatically for the other version(s).
You really should look at ZvezdanD's script then, it allows for that and his script is really excellent.
http://www.mediamonkey.com/forum/viewto ... =2&t=39312
OK, now you are right. The new version of this script (2.0) has added an option to synchronize tags, but as I already mentioned it could be possible only after you create links between related tracks. By the way, you could specify which tags you want to be synchronized (Title, Artist, Album, ...).
Magic Nodes 4.3.3 / 5.2 RegExp Find & Replace 4.4.9 / 5.2  Invert Selection/Select None 1.5.1  Export/Create Playlists for Child Nodes 4.1.1 / 5.4.1  Expand Child Nodes/Expand All 1.1.2  Event Logger 2.7  Filtered Statistics Report 1.6  Track Redirection & Synchronization 3.4.2  Restore/Synchronize Database 3.1.8 / 4.0.1  Find Currently Playing Track 1.3.2  Queue List 1.2.1  Add to Library on Play 1.0.1  Tree Report for Child Nodes 1.1.1  Update Location of Files in Database 1.4.5 / 2.3  Inherit Child Playlists 1.0.3  Add Currently Playing/Selected Track(s) to Playlist 1.2
Post Reply