Script Installer
Just open the zip and double click on the file inside - it will install for you.
Changelog
v1.0 - 09/10/06
* Released!
v1.4 - 12/10/06
* Got rid of error affecting international versions of Windows XP (Thanks for your suggestions on this holterpolter)
* Added checks to all queries to exit quietly if no results are available, instead of showing a database error (Thanks for your suggestions on this DiddeLeeDoo)
* Improved 'NonStop Play' mode. As it struggles to find a suitable song inside the Song Choice the criteria is gradually weakened until it eventually picks anything.
* Uses 'star ratings' now, which makes more sense for users.
* Shows how many songs from each Song Choice goes into the main Song Choice playlist under the description nodes
* Remembers all your 'Filter By' settings, even after closing MediaMonkey
What it does
The main purpose of the script is to choose songs for you to listen to based on various criteria.
It creates a brand new node which looks a little something like this:

As you can see there are a bunch of Song Choices.
Each Song Choice works differently. 'New Hits' gives you new songs that you like. 'Recommended Listening' gives you songs you haven't heard in a while. 'Classics' lists your favourite songs.
If I was to click on 'New Hits' then I'll get a bunch of 'new' songs... and the higher up the song is listed, the more of a 'hit' it is.
Let's explore inside the "Classics" node to see what's going on...

This Song Choice is choosing songs which are rated 4 or more, at least 90 days old, and played at least once. Out of these songs, those which have a high rating are given a small boost of 1, and songs heard reguarly are given a large boost of 10. This means that songs you listen to lots are pushed to the top of the playlist by alot, and songs that are rated highly are pushed up by a small amount.
Each different Song Choice has different selection critiria and boosts songs by various different levels.
You can easily get a nice mixture of songs to listen to by clicking on the main node named 'Song Choice'. You can send directly to the 'Now Playing' list. The amount of songs it picks from your Song Choices can be changed from within the script itself (see the advanced section)
A really cool feature of this script is the 'NonStop Play' mode.

When NonStop Play is enabled it will keep topping up the Now Playing list with songs from a selected Song Choice. In this instance I want to listen to 'Recommended Newbies'. Songs can be chosen from others just by selecting it inside the tree.
A cool feature is that once an artist is chosen it does not appear again until 5 other songs are played, and it doesn't ever choose the same song if it already appears in the 'Now Playing' list. This will give you a nice balance of music to hear!
Another feature is the 'Filter Results'...

In this instance I was feeling like listening to Progressive Rock and Progressive Metal, so I enabled 'Filter by Genre' and clicked on those genres. Now whenever a Song Choice node is clicked on I will only get songs from those genres. Results can also be filtered by artists.
Advanced
So you want to customize the 'Song Choices' or make your own? Read on!
The script is easily customized, all you need is a little bit of scripting knowledge. The very first bit of code inside the script is a sub named 'UsersSongChoices'. Take a look at the code, it should be fairly obvious how new Song Choices are defined. Here's the 'Classic' Song Choice as an example...
Code: Select all
Set SongChoice = New SC
With SongChoice
.Rating = 3
.Unrated = False
.DaysInDatabase = 90
.NumberOfPlays = 1
.RatingImportance = 1
.PlayRateImportance = -10
.NeedsHearingImportance = 0
.NewSongsImportance = 0
.SelectFromMe = 3
End With
Storage.Add "Classics", SongChoice
To ignore a setting set it to 0 (that's a zero!)
When boosting songs, the larger the number (when compared with others) the more boost is given to songs which fit that criteria. For example, giving 'RatingImportance' a high number like '20' will mean that highly rated songs appear at the top, as they are given a large boost. As the number gets lower and approaches 0, songs with a high rating are given less of a boost. When setting it to 0, it is ignored completely. Now for the real twist... setting it to a negative number has the opposite effect! For example, setting 'RatingImportance' to a low negative number like -2 will mean songs with a LOW rating are boosted a little bit. Setting it to a large negative number, like -20, will mean that low rated songs are given a big boost!
So in summary.. setting RatingImportance to;
- 20 = Low rated songs boosted lots
- 2 = Low rated songs boosted a little
0 = No boost given for song ratings
2 = High rated songs boosted a little
20 = High rated songs boosted lots
Hopefully that makes sense - just experiment with the values and see the outcome. Enjoy!
Selecting Songs
- Rating
Positive - Will choose songs that have a rating of at least _X_
Negative - Will choose songs that have a rating less than _X_ - Unrated
True or False - Include songs which have not been rated? - DaysInDatabase
Positive - Will choose songs that have been in the database for at least _X_ days
Negative - Will choose songs that have been added within the last _X_ days - NumberOfPlays
Positive - Will choose songs that have been played at least _X_ times
Negative - Will choose songs that have been played less than _X_ times
- RatingImportance
> - High rated songs given a boost
< - Low rated songs given a boost - PlayRateImportance
> - Songs not played reguarly are chosen
< - Songs played reguarly are chosen - NeedsHearingImportance - When you last heard the song based on playrate
> - Songs that need hearing are chosen
< - Songs that don't need hearing are chosen - NewSongsImportance
> - New songs are chosen
< - Older songs are chosen
- The 'select from me' setting is how many songs from this particular Song Choice go into the main playlist when clicking on the main 'Song Choice' node.
- If you enable the constant 'ShowSongDetails', when you click on a song in MediaMonkey it will popup information like the PlayRate, and NeedsHearing values. This is good for seeing why a song gets boosted and for fine-tuning your Song Choices.
- Option sheets for managing Song Choices (instead of editing this code)
