RadioFreeMonkey 1.2

Download and get help for different MediaMonkey Addons.

Moderators: Peke, Gurus

kazadharri
Posts: 107
Joined: Fri Jul 28, 2006 1:07 am

A question?

Post by kazadharri » Sat Nov 04, 2006 3:30 am

I really like the script but I do have one question, and I may have missed the way to select this, but I have a external hard drive for my laptop which has about 40% of my music on it. Is there a way when I am just using my C: drive, and not the external drive that the script would not pull in songs that are not accessable?

Thanks/Jeff

Spazz
Posts: 243
Joined: Tue Jan 11, 2005 9:49 pm

Post by Spazz » Thu Dec 07, 2006 2:04 pm

When I try to run any version over 1.2 I get this error. Something is wrong with your setxweight constants. They are either too high or too low. Love the script, but I would love to use the newer versions even more what with the new song boost.
Image

Tylast
Posts: 130
Joined: Sun Jan 29, 2006 12:54 pm
Location: US
Contact:

Post by Tylast » Sat Jan 06, 2007 9:19 pm

Any update on the horizon?
Image

TJOHO
Posts: 108
Joined: Tue Oct 31, 2006 8:00 pm
Location: A Norwegian in Seoul, Korea

Post by TJOHO » Sun Jan 14, 2007 8:42 am

Hey,
I really want to try out this script, seems like something I'd be using a lot. However, I'm a bit confused about which version to install.

The original by Risser?
The update by popper?
The update to the update by ElGringo? I would simply use this one if it were not for popper's post where he says
I am not so sure about this one. Please correct me if I am wrong, but the ratings are stored in the database using numbers from 0 (or -1) to 100. So to calculate the number of stars from a rating in the database, you have to divide by 20, and not by ten.
So, who's right, popper or ElGringo?

popper
Posts: 34
Joined: Mon Feb 21, 2005 5:10 pm
Location: Germany

RadioFreeMonkey v1.6.1

Post by popper » Tue Jan 16, 2007 10:18 am

Damn, it seems the automatic notification on changes in this topic does not work properly (or perhaps it got lost in my spam filter?). I did not get any notice that you all have been answering to this post!

So sorry for the long delay.

@TJOHO:

I haven't heard from ElGringo since, so I still don't really know if this was my mistake or his :-) All I can give you right now is the fix that I have done to put this issue right (well, right from my point of view):

Code: Select all


' RadioFreeMonkey
' Version 1.61
' A script to create a "radio station" for you based on your song ratings.

' #####################
' Version 1.2 by Risser

' This script creates a root node in the tree, beneath the library node, called "RadioFreeMonkey".
' Under this node, you have a Radio List node, a Done node and a Weightings node.
' - The Radio List node lists 20 songs, in random order. These are weighted, so songs
' with a higher weighting have a higher chance of getting selected.
' - If you have selected a sorting column, even though the songs are selected randomly, the
' radio list will be sorted based on that column. To return the list to "random" sorting, click
' on any playlist (Now Playing works nicely). When you visit the Radio List node, the songs will
' be unsorted, in true random order.
' - The Done list shows you which songs aren't going to be played. This includes songs that have
' passed their maximum playcount, or anything within MinDaysRepeat.
' - The Weighting node shows all tunes, sorted by their calculated weights. This can help you
' determine what the optimal weighting choices are for you. Plus, it's just nice to see what's
' more likely to be played.

' Songs are weighted as follows:
' Rating * 2 (5 stars = 10, 3.5 stars = 7, 0 stars = 0)
' - Number of Plays (if Reduce if Played is TRUE)
' + Days since added to library / DayFactor (always rounded down)
' However, the weighting can't be more than the original rating (* 2).

' TO DO: At some point, I'd like to make the main 'list' node a PlayList instead of a regular
' list of tracks, but I'm not sure how to do this.
'
' This script can be freely used and modified.
' This is an early release and there may be bugs. If it's causing you problems, simply delete
' it or move it out of the scripts\auto folder.
'
' The script does not modify the database, registry or INI file.

' #####################
' Version 1.5 by popper

' - added possibility to boost songs that have been added to the DB recently
' - added possibility to define the genres that should be played
' - redesign of the mechanism that selects the actual songs to be played (because I did not
'   really understand what was going on in the existing algorithm ;-), with the goal of making
'   it easier to influence what will be played (e.g. 30% of songs with a weighting of 8-10 and
'   70% with a weighting of 5-7))
' #####################
' Version 1.6 by ElGringo

' - Fixes to the algorithm
'   - 1. There was always a song that had nothing to do in my playlists, investigated
'        and saw the error in FillGoodLeaf
'   - 2. There is an error in the calculation of the dateboost formula, the
'        dateboostcutoff*20 should be dateboostcutoff*10. There were a couple of places wrong
'   - 3. By adding, the BoostNewSongsModifier, the actual weight calculated, could go higher
'        than 10, but the algorithm was never picking songs with a weight higher than 10. So,
'        i fixed a couple of places in the script, so that calculated weight higher than 10,
'        are now fixed at 10.
'   - 4.There was a bug, when the BoostNewSongsModifier is set to 0... fixed it.
'
'
'
' #####################
' Version 1.6.1 by popper

' - In my opinion, the dateboostcutoff*20 (point 2. from ElGringo's list above) was correct
'   ("Please correct me if I am wrong, but the ratings are stored in the database using 
'    numbers from 0 (or -1) to 100. So to calculate the number of stars from a rating in 
'    the database, you have to divide by 20, and not by ten.")
'   So I changed it back in this release. 
'   No other modifications made. ElGringo was right in all other points ;-)
'
'
'
'
' Disclaimer:
' Use at your own risk. Back up your data before using.
' Changing some of the values might lead to endless loops that can only be solved by
' killing the MediaMonkey process, so take care when modifying anything!

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' Global Variables and Declarations
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Option Explicit

' %%% The caption for the root node.
Const RootNodeCaption = "Radio FreeMonkey 1.6.1"

' %%% Add 1 to weighting for each X days since added to library
Const DayFactor = 150

' %%% Anything rated this or below will not receive the 'date boost'
Const DateBoostCutoff = 1.5

' %%% The minimum number of days that must pass before a song is repeated. Zero means, go ahead
' and repeat it right away.
Const MinDaysRepeat = 5

' %%% Reduce the weighting by the number of times played. This means, as songs are played more often,
' they are less likely to be played again
Const ReduceIfPlayed = True

' %%% Boost Songs that have been added during the last n days (MinDaysRepeat does still apply for these)
Const BoostNewSongsDays = 75

' %%% The boost modifier for new songs (Zero means, don't boost):
' Add x to the weighting of these songs
Const BoostNewSongsModifier = 3

' %%% Anything rated this or below will not receive the 'new song boost'
Const BoostNewSongsCutoff = 1.5

' %%% Genres that should not be played. Leave empty (Const PlayGenres = "") to ignore.
' "-1, 13, 17, 20, 24" means "empty genre field, Pop, Rock, Alternative, Soundtrack"
' Look up the other genre Ids in the database by using MS Access
Const PlayGenres = "-1, 11, 13, 14, 17, 20, 24, 131, 132, 86, 80, 81, 7, 10"

' %%% Number of Songs in list
Const NumberOfSongs = 50


' %%% Influence which songs will be played. You have three sets that you can use
' Example:
' Const Set1Weight = 8.5    ' Basic weight for this set is 8.5
' Const Set1Boundary = 1.5  ' with a variation of 1.5, which means that songs between 7 and 10 will be chosen
' Const Set1Percentage = 60 ' this is how big the part of this set should be in the overall contents

Const Set1Weight = 8.5
Const Set1Boundary = 1.5
Const Set1Percentage = 60    ' make sure all 3 percentages sum up to 100!

Const Set2Weight = 6.0
Const Set2Boundary = 1
Const Set2Percentage = 40    ' make sure all 3 percentages sum up to 100!

Const Set3Weight = 2.0      ' Right now, it is not possible to choose songs with a weight < 1, so unfortunately you cannot add unrated songs
Const Set3Boundary = 1
'Const Set3Percentage = 20  ' This is not needed because it just takes what is missing to 100%


'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' The Meat. Don't change anything under here.
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

' the text of the formulas to be used throughout
Dim weightedRatingFormula, dateBoostFormula, ratingFormula, weightedPlayCountFormula, boostNewSongsFormula

If BoostNewSongsModifier <> 0 Then
   dateBoostFormula = "IIF(Songs.rating <= " & (BoostNewSongsCutoff *10) & " OR FIX(DateDiff('d',Songs.DateAdded,Now) <= " & BoostNewSongsDays & "), 0, FIX(DateDiff('d',Songs.DateAdded,Now) / " & DayFactor & "))"
Else
   dateBoostFormula = "IIF(Songs.rating <= " & (DateBoostCutoff*10) & ", 0, FIX(DateDiff('d',Songs.DateAdded,Now) / " & DayFactor & "))"
End If

ratingFormula = "(IIF(Songs.rating < 0, 0, Songs.rating) / 10)"

If ReduceIfPlayed Then
   weightedPlayCountFormula = "(Songs.PlayCounter - " & dateBoostFormula & ")"
Else
   weightedPlayCountFormula = "0"
End If

If BoostNewSongsModifier <> 0 Then
   boostNewSongsFormula = "IIF(Songs.rating <= " & (BoostNewSongsCutoff*10) & ", 0, (IIF(FIX(DateDiff('d',Songs.DateAdded,Now) > " & BoostNewSongsDays & "), 0, " & BoostNewSongsModifier & ")))"
End If

weightedRatingFormula = ratingFormula & " - IIF(" & weightedPlayCountFormula & " < 0, 0, " & weightedPlayCountFormula & ") "
if boostNewSongsFormula <> "" then weightedRatingFormula = weightedRatingFormula & "+ " & boostNewSongsFormula


Sub FillStandardProperties(parentNode, childNode)
   With childNode
      .CustomNodeId = parentNode.CustomNodeId
      .CustomDataId = parentNode.CustomDataId + 1
      .UseScript = Script.ScriptPath
   End With
End Sub


Sub FillGoodLeaf(Node)
   Randomize

   Dim Tracks
   Dim SQLStatement
   Dim SELECT_Clause, FROM_Clause, WHERE_Clause, ORDER_Clause
   Dim Iter, res, i, total, sum, index
   Dim weight, minweight, maxweight
   Dim hold, weights, average, start, baseweight, boundary
   Dim R, max : max = NumberOfSongs
   Dim inStr : inStr = ""

   Set hold = CreateObject("Scripting.Dictionary") ' define an associative array or "hash array" to hold the songs
   Set weights = CreateObject("Scripting.Dictionary") ' define an associative array or "hash array" to hold the weightings

   
   SELECT_Clause = " SELECT Songs.Id, IIF(" & weightedRatingFormula & ">10,10," & weightedRatingFormula & ") "
   FROM_Clause = " FROM Songs "
   WHERE_Clause = " WHERE " & weightedPlayCountFormula &" < " & ratingFormula & " AND DateDiff('d',Songs.LastTimePlayed, Now) > " & MinDaysRepeat
   If PlayGenres <> "" then
      WHERE_Clause = WHERE_Clause & " AND Songs.Genre IN (" & PlayGenres & ")"
   End If
   ORDER_Clause = " ORDER BY Rnd((1000*Songs.ID)*Now())" ' This is important because otherwise they will all come as they are stored in the DB
   
   SQLStatement = SELECT_Clause & FROM_Clause & WHERE_Clause & ORDER_Clause
   'res = InputBox("SQL Statement: ", "debugging", SQLStatement) ' For debugging
   
   Set Iter = SDB.Database.OpenSQL(SQLStatement) ' holds all songs that are collected by the SQL formula

   total=0 ' initialise total amount of songs that can be used for the playlist (=all songs with weights from 1 to 10 minus "done" songs)
   sum = 0 ' initialise sum of all weightings
   maxweight = 0 ' initialise maximum weight in this iteration
   minweight = 9 ' initialise minimum weight in this iteration
   
   While (Not Iter.EOF)
      hold.add total,Iter.StringByIndex(0)
      weight = Iter.StringByIndex(1)
      weights.add total,weight
      total = total + 1
      sum = sum + weight
      If minweight > cdbl(weight) then
         minweight = cdbl(weight)
      End if
      if maxweight < cdbl(weight) then
         maxweight = cdbl(weight)
      End if

        Iter.Next
   Wend

   ' some overflow checks
   if total <= 0 or sum <= 0 then
      SDB.MessageBox "Something is wrong with your ratings. Do you have any rated songs at all?", mtInformation, Array(mbOk)
      Exit Sub
   end if

   If Set1Weight < minweight or Set2Weight < minweight or Set3Weight < minweight or Set1Weight > maxweight or Set2Weight > maxweight or Set3Weight > maxweight then
      SDB.MessageBox "Something is wrong with your SetXWeight constants. They are either too high or too low.", mtInformation, Array(mbOk)
      Exit Sub
   end if
   
   If (total < max) Then
        max = total
   End If
     
   Set Tracks = SDB.MainTracksWindow
   start = 0
   
   While i < max ' do this until the max number of songs for the playlist is reached
      If i < max * Set1Percentage / 100 then ' put in Set1Percentage percent of higher-rated songs
         baseweight = Set1Weight
         boundary = Set1Boundary
      elseif i < max * (Set1Percentage + Set2Percentage) / 100 then ' put in Set2Percentage percent of lower-rated songs
         baseweight = Set2Weight
         boundary = Set2Boundary
      elseif i <= max then ' and also put in some really lowly-rated songs
         baseweight = Set3Weight
         boundary = Set3Boundary
      end if
             
      For index = start to total ' go through all of the songs that could potentially become part of the radio node, starting where we left off last time
         weight = cdbl(weights.item(index)) ' weight of the song that is being looked at right now
             
         if weight >= (baseweight - boundary) and weight <= (baseweight + boundary) then
            ' This song is inside the weighting borders that are defined above
            ' so let's see if it is also lucky
            R = rnd(1) ' this song's lucky number
            if R > 0.8 then
               ' so let's leave this for-next loop and add it to the list!
               Exit For
            end if
         end if
      Next   
       
      start = index + 1 ' We don't want to go through the same songs again, so next time we start from here
      if start > total then
         if inStr = "" then
            SDB.MessageBox "There does not seem to be enough stuff to work on. Try to use criteria that are easier to meet.", mtInformation, Array(mbOk)
            Exit Sub
         else
            start = 0 ' start over again
         end if
      else
         ' We've got a winner! The song with the hash index "index" will now be added to the radio node
         ' This is done by collecting all songs in inStr, separating them by commas, and afterwards collecting their song.ids via SQL         
           If i = 0 Then
             inStr = hold.item(index)
           Else
             inStr = inStr & ", " & hold.item(index)
           End If
           i = i + 1
      end if   

   Wend

   If inStr <> "" then
      Tracks.AddTracksFromQuery("AND Songs.ID IN (" & inStr & ") ORDER BY Rnd((1000*Songs.ID)*Now())")
      Tracks.FinishAdding
   End If
       
End Sub





Sub FillWeightNode(Node)

   Dim Tree, newNode
   Dim SQLStatement ' SQL query to the database
   Dim Iter ' SDBD Iterator obtained by running the SQL query to get the nodes

   Set Tree = SDB.MainTree
   Node.HasChildren = false ' To delete all old children

   SQLStatement = "SELECT DISTINCT IIF(" & weightedRatingFormula & ">10,10," & weightedRatingFormula & ") from Songs "
   'res = InputBox("SQL Statement: ", SQLStatement, SQLStatement) ' For debugging
   Set Iter = SDB.Database.OpenSQL(SQLStatement)

   While Not Iter.EOF

      Set newNode = Tree.CreateNode

      NewNode.Caption = Iter.StringByIndex(0)
      NewNode.iconIndex = 32
      newNode.CustomData = Iter.StringByIndex(0)

      FillStandardProperties node,newNode
      newNode.onFillTracksFunct = "FillWeightLeaf"
      newNode.hasChildren = False
      Tree.AddNode Node, NewNode, 3

      Iter.Next
   Wend

End Sub


Sub FillWeightLeaf(Node)
   Dim Weight
   Dim Tracks
   Dim SELECT_Clause, FROM_Clause, WHERE_Clause

   Weight = Node.CustomData

   SELECT_Clause = " SELECT Songs.Id "
   FROM_Clause = " FROM Songs "
   WHERE_Clause = " WHERE IIF(" & weightedRatingFormula & ">10,10," & weightedRatingFormula & ") = " & Weight & " AND DateDiff('d',Songs.LastTimePlayed, Now) > " & MinDaysRepeat
   If PlayGenres <> "" then
      WHERE_Clause = WHERE_Clause & " AND Songs.Genre IN (" & PlayGenres & ")"
   End If
   'res = InputBox("SQL Statement: ", "Debugging", SELECT_Clause & FROM_Clause & WHERE_Clause) ' For debugging
   
   Set Tracks = SDB.MainTracksWindow

   Tracks.AddTracksFromQuery("AND Songs.ID IN (" & SELECT_Clause & FROM_Clause & WHERE_Clause & ")")
   Tracks.FinishAdding

End Sub


Sub FillDoneLeaf(Node)
   Dim Tracks
   Dim SELECT_Clause, FROM_Clause, WHERE_Clause


   SELECT_Clause = " SELECT Songs.Id "
   FROM_Clause = " FROM Songs "
   WHERE_Clause = " WHERE "& weightedPlayCountFormula &" >= " & ratingFormula & " OR DateDiff('d',Songs.LastTimePlayed, Now) <= " & MinDaysRepeat
   If PlayGenres <> "" then
      WHERE_Clause = WHERE_Clause & " OR Songs.Genre NOT IN (" & PlayGenres & ")"
   End If

   Set Tracks = SDB.MainTracksWindow

   Tracks.AddTracksFromQuery("AND Songs.ID IN (" & SELECT_Clause & FROM_Clause & WHERE_Clause & ")")
   Tracks.FinishAdding

End Sub



'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' Startup Function
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Sub onStartUp
   Dim Tree, RadioFreeMonkeyRoot
   Dim RadioMonkeyGood, RadioMonkeyBad, RadioMonkeyWeight

   Set Tree = Sdb.MainTree
   Set RadioFreeMonkeyRoot = Tree.createNode

   RadioFreeMonkeyRoot.Caption = RootNodeCaption
   RadioFreeMonkeyRoot.IconIndex = 14
   RadioFreeMonkeyRoot.UseScript = Script.ScriptPath
   RadioFreeMonkeyRoot.hasChildren = True
   Tree.AddNode Tree.Node_Library, RadioFreeMonkeyRoot, 1
   SDB.Objects("RadioFreeMonkeyRoot") = RadioFreeMonkeyRoot

   Set RadioMonkeyGood = Tree.createNode
   RadioMonkeyGood.Caption = "Radio List"
   RadioMonkeyGood.IconIndex = 14
   RadioMonkeyGood.UseScript = Script.ScriptPath
   RadioMonkeyGood.hasChildren = False
   RadioMonkeyGood.onFillTracksFunct = "FillGoodLeaf"
   Tree.AddNode RadioFreeMonkeyRoot, RadioMonkeyGood, 2
   SDB.Objects("RadioMonkeyGood") = RadioMonkeyGood

   Set RadioMonkeyWeight = Tree.createNode
   RadioMonkeyWeight.Caption = "Weightings"
   RadioMonkeyWeight.IconIndex = 32
   RadioMonkeyWeight.UseScript = Script.ScriptPath
   RadioMonkeyWeight.hasChildren = True
   RadioMonkeyWeight.onFillTracksFunct = "FillWeightNode"
   Tree.AddNode RadioFreeMonkeyRoot, RadioMonkeyWeight, 3
   SDB.Objects("RadioMonkeyWeight") = RadioMonkeyWeight

   Set RadioMonkeyBad = Tree.createNode
   RadioMonkeyBad.Caption = "Done"
   RadioMonkeyBad.IconIndex = 15
   RadioMonkeyBad.UseScript = Script.ScriptPath
   RadioMonkeyBad.hasChildren = False
   RadioMonkeyBad.onFillTracksFunct = "FillDoneLeaf"
   Tree.AddNode RadioFreeMonkeyRoot, RadioMonkeyBad, 3
   SDB.Objects("RadioMonkeyBad") = RadioMonkeyBad
End Sub 

popper
Posts: 34
Joined: Mon Feb 21, 2005 5:10 pm
Location: Germany

Re: A question?

Post by popper » Tue Jan 16, 2007 10:25 am

kazadharri wrote:I really like the script but I do have one question, and I may have missed the way to select this, but I have a external hard drive for my laptop which has about 40% of my music on it. Is there a way when I am just using my C: drive, and not the external drive that the script would not pull in songs that are not accessable?
Hm, as I always have all my music on my internal hard drive, I have not come across this problem and don't really know how to distinguish programmatically between music that is accessible and music that isn't.
But when that question is answered by someone here in the forum, it is quite easy to extend the script to do just that. That would be another if-clause in the code right before we declare "We've got a winner!".

popper
Posts: 34
Joined: Mon Feb 21, 2005 5:10 pm
Location: Germany

Post by popper » Tue Jan 16, 2007 10:30 am

Spazz wrote:When I try to run any version over 1.2 I get this error. Something is wrong with your setxweight constants. They are either too high or too low. Love the script, but I would love to use the newer versions even more what with the new song boost.
Have you tried to modify your Set1Weight and Set2Weight in the "Global Variables and Declarations" section of the code? You will probably have to play around with them a little bit to get a result that makes sense for your music collection.

You could try the following:
Const Set1Weight = 5
Const Set1Boundary = 5
Const Set1Percentage = 100
...
Const Set2Percentage = 0
That should give you all songs in your collection. If that works, you can start from there. Good luck and let me know how it goes.

Spazz
Posts: 243
Joined: Tue Jan 11, 2005 9:49 pm

Post by Spazz » Tue Jan 16, 2007 12:20 pm

Actually, it was the genre setting. I deleted the don't play genre's and it worked fine.
Image

popper
Posts: 34
Joined: Mon Feb 21, 2005 5:10 pm
Location: Germany

Post by popper » Tue Jan 16, 2007 3:28 pm

Spazz wrote:Actually, it was the genre setting. I deleted the don't play genre's and it worked fine.
Ah, yes, of course. This is something that should probably be switched off in the default version (the one we're publishing here) so that people don't have these problems with getting started. (It can be tedious getting someone else's script to run on your own installation)

Spazz
Posts: 243
Joined: Tue Jan 11, 2005 9:49 pm

Post by Spazz » Tue Jan 16, 2007 4:06 pm

yeah, it took a lot of tinkering, and a Eureka moment inspired by an alcoholic haze. Funny how that helped debug it for me :D

I actually like the idea, I just need to go through and figure out what the codes are for my particular genre's.
Image

kazadharri
Posts: 107
Joined: Fri Jul 28, 2006 1:07 am

Post by kazadharri » Wed Jan 17, 2007 12:32 am

I reallly do like this script. On my question I actually have now more than 70% of my music on removable drives. I know that when you do an autoplay list one of the selection criteria is if the track is accessable. But not being a scriptor, (yet) I don't know all the ins and outs of MM.

On another subject I noticed that genres can deselected. Is there a way that the selection of genres or maybe playlists can be selected through options. That way I could have my top 40 station, classic rock station, etc.. Maybe based on playlists. Because while playlists are nice, I really like the weighting that this script provides.

Thanks, Jeff

locu
Posts: 20
Joined: Thu Nov 09, 2006 12:16 am
Location: Berlin, Germany

Post by locu » Sat Feb 03, 2007 11:33 am

kazadharri wrote:On my question I actually have now more than 70% of my music on removable drives. I know that when you do an autoplay list one of the selection criteria is if the track is accessable. But not being a scriptor, (yet) I don't know all the ins and outs of MM.
I have a similar problem and think there should be a solution. As I am not a scriptor either, I have no idea of how to implement it. Basically, the source for the radio script to collect songs shouldn't be the entire database, but the "accessible tracks" playlist. Like you can set a playlist as source for auto dj, there should be a way to set this playlist as a source for the radio script.

Thx,
locu.

kazadharri
Posts: 107
Joined: Fri Jul 28, 2006 1:07 am

List of Genre's- don't have access

Post by kazadharri » Sun Feb 18, 2007 1:51 am

I do not have MS access, and a section of your code/setting you make mention of the genres
>>>
"
' %%% Genres that should not be played. Leave empty (Const PlayGenres = "") to ignore.
' "-1, 13, 17, 20, 24" means "empty genre field, Pop, Rock, Alternative, Soundtrack"
' Look up the other genre Ids in the database by using MS Access
Const PlayGenres = "-1, 11, 13, 14, 17, 20, 24, 131, 132, 86, 80, 81, 7, 10"
<<<<
Do you know where there might be a list of Genres in a non access form so I can know what to select in or out?

Thanks,
Jeff

Guest

Post by Guest » Mon Feb 19, 2007 11:31 am

popper wrote:
Spazz wrote:When I try to run any version over 1.2 I get this error. Something is wrong with your setxweight constants. They are either too high or too low. Love the script, but I would love to use the newer versions even more what with the new song boost.
Have you tried to modify your Set1Weight and Set2Weight in the "Global Variables and Declarations" section of the code? You will probably have to play around with them a little bit to get a result that makes sense for your music collection.

You could try the following:
Const Set1Weight = 5
Const Set1Boundary = 5
Const Set1Percentage = 100
...
Const Set2Percentage = 0
That should give you all songs in your collection. If that works, you can start from there. Good luck and let me know how it goes.
hi! i am currently also having the problem with the setxweight constants.
I debugged it a bit and found out that minweight is 7 for me and maxweight is 9.5. But in the Node for Weighting the min value appears to be -7.1. I don't know what to change...
I'm also using non standard ratings as a result of autorateaccurate script. I also have a node that says the weight is 0.800000001 of a song. Should i use a round() somewhere in the script? Or might the problem be the cdbl(weigth) in line 219-224? I also cecked the Genres clearing all restrictions.

Thx for any help.
Red

Guest

Re: List of Genre's- don't have access

Post by Guest » Mon Feb 19, 2007 11:33 am

kazadharri wrote:I do not have MS access, and a section of your code/setting you make mention of the genres
>>>
"
' %%% Genres that should not be played. Leave empty (Const PlayGenres = "") to ignore.
' "-1, 13, 17, 20, 24" means "empty genre field, Pop, Rock, Alternative, Soundtrack"
' Look up the other genre Ids in the database by using MS Access
Const PlayGenres = "-1, 11, 13, 14, 17, 20, 24, 131, 132, 86, 80, 81, 7, 10"
<<<<
Do you know where there might be a list of Genres in a non access form so I can know what to select in or out?

Thanks,
Jeff
Standard genres:
IDGenre GenreName
-1
0 Blues
1 Classic Rock
2 Country
3 Dance
4 Disco
5 Funk
6 Grunge
7 Hip-Hop
8 Jazz
9 Metal
10 New Age
11 Oldies
12 Other
13 Pop
14 R&B
15 Rap
16 Reggae
17 Rock
18 Techno
19 Industrial
20 Alternative
21 Ska
22 Death Metal
23 Pranks
24 Soundtrack
25 Euro-Techno
26 Ambient
27 Trip-Hop
28 Vocal
29 Jazz+Funk
30 Fusion
31 Trance
32 Classical
33 Instrumental
34 Acid
35 House
36 Game
37 Sound Clip
38 Gospel
39 Noise
40 AlternRock
41 Bass
42 Soul
43 Punk
44 Space
45 Meditative
46 Instrumental Pop
47 Instrumental Rock
48 Ethnic
49 Gothic
50 Darkwave
51 Techno-Industrial
52 Electronic
53 Pop-Folk
54 Eurodance
55 Dream
56 Southern Rock
57 Comedy
58 Cult
59 Gangsta Rap
60 Top 40
61 Christian Rap
62 Pop/Funk
63 Jungle
64 Native American
65 Cabaret
66 New Wave
67 Psychedelic
68 Rave
69 Showtunes
70 Trailer
71 Lo-Fi
72 Tribal
73 Acid Punk
74 Acid Jazz
75 Polka
76 Retro
77 Musical
78 Rock & Roll
79 Hard Rock
80 Folk
81 Folk/Rock
82 National Folk
83 Swing
84 Fast-Fusion
85 Bebob
86 Latin
87 Revival
88 Celtic
89 Bluegrass
90 Avantgarde
91 Gothic Rock
92 Progressive Rock
93 Psychedelic Rock
94 Symphonic Rock
95 Slow Rock
96 Big Band
97 Chorus
98 Easy Listening
99 Acoustic
100 Humour
101 Speech
102 Chanson
103 Opera
104 Chamber Music
105 Sonata
106 Symphony
107 Booty Brass
108 Primus
109 Porn Groove
110 Satire
111 Slow Jam
112 Club
113 Tango
114 Samba
115 Folklore
116 Ballad
117 Power Ballad
118 Rhythmic Soul
119 Freestyle
120 Duet
121 Punk Rock
122 Drum Solo
123 A Cappella
124 Euro-House
125 Dance Hall
126 Goa
127 Drum & Bass
128 Club-House
129 Hardcore
130 Terror
131 Indie
132 BritPop
133 Negerpunk
134 Polsk Punk
135 Beat
136 Christian Gangsta Rap
137 Heavy Metal
138 Black Metal
139 Crossover
140 Contemporary Christian
141 Christian Rock
142 Merengue
143 Salsa
144 Thrash Metal
145 Anime
146 JPop
147 Synthpop


These are also defined by WINAMP all other have codes like 10XXX and are the ones u defined urself

Post Reply