Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: DADA Auto-Rating (DAR) for foobar2000 (Read 83844 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #150
Two problems I can see with this idea:

1) DAR and Playcount both work on a per track basis and so are not suitable for aggregating a bunch of tracks
2) DAR is a method to nullify (to a certain extent) the degree to which playcount dominates the definition of "popular track". So for example a track that is 10 years old and has been played 50 times does not necessarily rank higher than a track played 20 times that you've had in your library for 1 year,

Sorry I can't be more helpful - but I don't see how this can be done. My only positive suggestion is that perhaps, something like this may be possible with foo_uie_sql_tree. I'd ask on that thread.

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #151
Just a minor (admin) update

Had a big clean-up over at gp-net (home of the DADA Auto-Rating algo). GP Audio had loads of now out-dated (how-to / analysis type) stuff and so there was a vicious cull with only 2 survivors, one of which was of course DAR and the page dedicated to it has been updated and cleaned up and is now more user-friendly.

It's also moved, but the old links (http://www.giantpygmy.net/gpa/index.php?id=dada-autorating) still should work:
http://www.giantpygmy.net/gpa/index.php?id=blog&post=dada-music-auto-rating-algorithm-foobar2000

No updates required on the code - I've been running it with now close to 10 years of playcount stats and I'm getting sensible results and no anomalies have popped up to cause concern - so it appears all is well. Also, pleasing to see it's still being used by people - so that's good. 

Will likely provide some graphs to show the overall effect on a 10 year old library when the time comes.

If anyone spots mistakes, broken links or anything strange - please let me know - either here or via the contact page on gp-net.

Thanks,

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #152
First off, thanks, it looks great. I'd change "maths" to math, otherwise perfect. An awesome component and effort!
Quis custodiet ipsos custodes?  ;~)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #153
Thanks 2tec.  Maths - yeah, it's a UK thing:

Quote
Math and maths are equally acceptable abbreviations of mathematics. The only difference is that math is preferred in the U.S. and Canada, and maths is preferred in the U.K., Australia, and most other English-speaking areas of the world.
Cheers (also a UK thing)

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #154
Thanks for the updates carpman.

I'd be curious to hear if you gathered any further thoughts on modifying $puts(lib0,$date_diff(2000)) over the years or your original suggestions still hold true today.

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #155
Excellent question! Short answer: Everything still holds for today.

Long answer: The reason is that it's designed to work on a very large range and so although we're now in 2017 the question remains, how big is your library and when did you begin gathering playcount stats. The 2000 baseline number (which was chosen because stats cannot predate foobar2000) will work for the majority of people and won't need to be changed - even if one starts collecting stats in 2017. All it does is allow some fine tweaking to those users who have very small or very large collections. As you know, it's about the recycling speed of tracks - so small libraries will recycle tracks much quicker than large ones. As time passes it just allows the tweaking slider to slightly grow in length. It's really there for users who are noticing a dominance of either new or old tracks - and especially for those who have vast libraries - old tracks, rarely recycled through the playback cycle, might need a boost and they can incrementally raise the 2000 value toward the year (but not beyond) that when they began collecting stats. So no, nothing has really change, since for example, the date one starts collecting stats remains static.

Good question.

C.

EDIT: What does change over time, is that it allows new users with new libraries and a recent stat collecting starting point a little more leeway (a slightly longer slider) than those of us oldies who have stats that date back to the 2000's.  So you could imagine a volume slider that every year grows by 0.01. So after 10 years a new user can turn his music up to 10.1 - that doesn't mean they should. In this case they probably shouldn't. These were all things anticipated and tested for in the very long excel modelling phase.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #156
I understood how it works, I was mostly just curious if the actual values were possibly slightly off or which values would be considered extreme (naturally it's kind of a subjective topic).  Guess the more straightforward question would be is what value did you personally settle on (considering whatever sized library you have), with the disclaimer that naturally everyone should pick it for themselves. Thanks for the explanation though.

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #157
I've settled on the default = $puts(lib0,$date_diff(2000)).
For context my music library is approx 10,000 tracks (small?) and playcount stats started August 2008.

I think the advice in the txt file you linked to is pretty relevant still.

What would be really interesting is to see a poll done with foobar2000 users library sizes (I know I've seen some people with more tracks than is possible to listen to in a human lifetime - not sure what that's about - dopamine?)

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #158
Just in case people don't know what Daeron's talking about, it may be helpful to explain:

One of the time-based calculations in the DAR formula deals with old tracks (e.g. tracks that have been in your library since you started collecting stats). There is a downward force on the rating caused by the passing of time (playcount / time passed). However over time this downward force can be made to diminish giving some relief to the old track's age burden - and that is what this variable does.

The reason it can be tweaked is that some people recycle tracks quicker than others (if you have a massive library the time it takes to play each track once is much greater - and thus the age burden of older tracks needs to be lifted - and vice versa for very small music collections).

What is important of course is that in alleviating this downward force you don't create an upward force, since that would mean tracks benefit simply by virtue of the fact they're getting older (no one likes a song more by not playing it).  And that is why the variable needs to be capped at the age of the library. So if your oldest track added date is 2015, then $puts(lib0,$date_diff(2016)) would create anomalies.

Hope that helps those less familiar with DAR's inner workings than Daeron.  ;)

C.

PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #159
@ Daeron

Just to give you a little better idea of the outcome of the lib0 variable which is an input to the lib1 calculation which provides a dynamic variable that affects the date based side of the DAR calculations.

As you can see below we have 2 tracks (one 3000 days old in red, and the other 245 days old in green). You'll notice that a lib0 of 1900 (which is the lowest acceptable value) is not so different from 1950. As we approach the year the library stats began (in my case 2008) the curve begins to steepen for the old track, whereas the new track is barely affected. 



So if you look at the default lib0 of 2000 there's a 22 point difference between the old and new tracks, if we bump that up to 2008 (max) that difference is 39. 

The bar chart (2nd y axis) shows the (adjusted) age relation of these two tracks. So, with a lib0 of 1900 the old track is 12 times as old (which is close to reality = 12.2), but when we switch the lib0 to 2000 (default) the track is treated as 10.2 times as old, at lib0 2008 the track is treated as just 8.7 times as old. So clearly the "playcount / time period" burden is going to be reduced and the older track's rating will rise as you bump up the lib0 variable. 

Hope that helps flesh out the lib0 and gives you a better feeling for how to adjust it for your library.

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #160
Thanks for the further explanation, it was helpful. And indeed a poll of library sizes would be interesting. A statistical analysis of how the dynamic ratings are distributed for each individual person perhaps even more so. Would be nice to see some people religiously listening to a small subset of tracks while others barely chewing through new tracks every day and so on.

 

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #161
what can i try if foobar freezes on startup with foo_dynfill?

seems to be relatated to my media library..without it its starts fine

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #162
In my experience the calculations take time and foobar freezes for the duration of it if you have a large enough library. The problem is worsened by each new dynamic variable you add.

This isn't really related to DADA/DAR also, just the foo_dynfil component, so this is a bit off-topic.

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #163
sorry you're absolutely right - i wasn't patient enough ( it just takes forever) + it's the wrong topic

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #164
@ Der Internet

Just out of interest, how many tracks in your library?  Approx.

Also @ Daeron

I haven't been keeping up to date with foobar2000 changes recently. Are you aware of any issues running Yirkha's foo_dynfill component on the latest releases?  Slower or faster (any issues?).

Thanks,
C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #165
~150k tracks. Still on v1.4.3 since 1.5 has its own issues regarding the reworked Properties window.

I'm not aware of anything that specifically made foo_dynfil slower, I suspect its just the amount of tracks it has to cope with now. But this is all anecdotal.

Would be nice if there was a way to cache the calculations. For all I care it could even write to actual tags.

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #166
i have ~25k tracks. but it seems that only the initial scan takes so long, after that it's better. i don't see any changes with newer foobar versions :)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #167
Interesting - thanks for the info.

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #168
Just a minor (admin) update

Been doing some house-keeping and in the process of streamlining things moved the DADA Auto-Rating info page.

It's new home is here:
https://www.giantpygmy.net/studio/?post=dada-music-auto-rating-algorithm-foobar2000

I've updated the OP on this thread, so all the links, as well as some important links in intermediary posts have been updated.
Don't know if people still use this, but I do, so ....

The instructions / code file is now here:
https://www.giantpygmy.net/studio/data/uploads/files/dada_autorating_dar_latest_version.txt

No updates required on the code - I've been running it with over 10 years of playcount stats and I'm still getting very sensible results.
Any important broken links or annoyances, let me know.

Cheers, 

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #169
Like EpicForever had noted much earlier, the default workflow for this excellent script works only if you are using the Media Library.
Like him, my music is already organized by folders, and I do not have any utility for the Media Library.

It is possible to make the DADA scripts work without the Media Library, with 'dirty hack', using 'foo_playcount' & Custom columns.
I believe one disadvantage of this hack/mod is that the Custom column is probably only evaluated at Foobar2000 start-up. So if you play a track a few times, after starting foobar2k, it's rating/dots will not change until foobar2k is restarted. For me, this is an acceptable limitation.

Steps to install:
  • Ensure that foo_playcount "Playback Statistics" is installed. Get it from: https://www.foobar2000.org/components/view/foo_playcount
  • Add a custom column, as shown in attached screenshot #1, named as "Rating"
  • Put the contents of file #2 into the 'Pattern' of the "Rating" column
  • On playlist, right click any column at top, and select the new "Rating" column, as shown in screenshot #3.
  • Note that foobar initially allocates too less width for "Rating" column, indicated by "..", as shown in screenshot #4.
  • Expand the width of the new column till you can see either the 'dots' or 'n/a', as shown in screenshot #5. Enjoy !!

Explanation of the 'mod'
  • The final output of the 1st script needs is now put into variable, named 'dynamic_rating', shown in screenshot #6.
  • The 2nd DAR indexed rating (With Dots) needs to fetch the value of this new variable with "$get" function, shown in screenshot #7.
  • Put contents of both these scripts into single file, and join all the lines. Now you arrive at contents of file #2 (02 - DADA-Mod-for_Custom_Column_v.2.0.1)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #170
Just a minor (admin) update

The home of the DADA Auto-Rating info page (Studio) has been / is being updated, and so I've updated the key links in this thread  to keep the majority of content alive.  All that's changed are the URLs from xxxxx/gptxt/xxxxxx to xxxxx/studio/xxxxxx.

It's new home is here:
https://www.giantpygmy.net/studio/?post=dada-music-auto-rating-algorithm-foobar2000

The instructions / code file is now here:
https://www.giantpygmy.net/studio/data/uploads/files/dada_autorating_dar_latest_version.txt

No updates required on the code - I've been running it for way too many years now and I'm still getting very sensible results, so I must have done some good guessing along the way.
 
Any important broken links or annoyances, please let me know.

Cheers, 

C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)


Re: DADA Auto-Rating (DAR) for foobar2000

Reply #172
A long, long time ago (2008) the SKIP function was initially integrated in DAR (as the skip component worked with an unofficial playback-statistics component (CUI only?).  However, it was dropped and the reasoning, IIRC was reasonably sound:
See:  https://hydrogenaud.io/index.php/topic,62864.msg566241.html#msg566241
and :  https://hydrogenaud.io/index.php/topic,63287.0.html

A philosophical discussion on the meaning of hitting next.

Ultimately, all this would be moot, if a component recorded total listening time on a per track basis instead of playcount.  But that never happened.  DAR was really created in the hope that some day a component would record that, because then you get a good notional playcount by dividing total listening time by track length.  This then sorts out the penalty requirement for a skip (if there should be one at all).

This is all a long time ago.  I still use foobar2000 and DAR, but I'm so busy on other stuff - I'd only even think about going back to adapt the code, if we had a component that dealt with total track listening time.

Hope that helps,
C.
PC = TAK + LossyWAV  ::  Portable = Opus (130)

Re: DADA Auto-Rating (DAR) for foobar2000

Reply #173
Makes sense. DADA still works pretty well (has been using it a long time) and I doubt the addition of skips would significantly change the behavior so I didn't find it worthwhile to try to rework it myself, but asked just in case someone has more interest/time for it. I agree that tracking total time spent listening on a per track basis would be the way to go if we ever got that functionality.