Fascinating idea! If you manage arrive at a working formula, would you mind sharing? I get theory, then my eyes kind of glaze over
Of course, I let you know about my great formula
The approach with formatdate is valuable as I can build a similar behaviour like in Excel. I created a first draft formula that is not yet perfect but a start.
In my opinion one major missing feature is the ability to perform divisions with variables. For now, I use a square function that has also its disadvantages. But you will see below.
I already do this, it just takes about 25 smartlists to pull everything together For example, here is my rule for pulling in candidate tracks with a rating of 7:
[My Rating]=7 [Last Played]=>112d [Album Play Only]=[] [Never Play]=[] ~sort=[Last Played],[Number Plays] ~limit=-1,1,[genrefilterprog] ~limit=-1,3,[artist] ~limit=-1,1,[name] ~n=7 ~limit=-1,1,[album] ~sort=[Last Played],[Number Plays]
I had similar smartlists in the past. They work good, but once you've played a song you won't here it for a long time.With the math function it's possible to allow songs to be played again as long as they are rated good enough. I mean middle class songs I don't worry once heard that they don't pop-up again for a while. But the real good ones shall appear faster again.
So my first "draft" formula is as follows:
Field name: Playback Score - the higher, the sooner it will be played.
=IF(ISEQUAL([Last Played],never played,1),
20000,
Math(([Rating]*5*[Preference]-[Number Plays]*[Number Plays]/5)*0.1*
(FormatDate(Now(),yyyy)*360 +FormatDate(Now(),MM)*30 +FormatDate(Now(),dd)
-(FormatDate([Last Played,0],yyyy,1)*360 +FormatDate([Last Played,0],M,1)*30 +FormatDate([Last Played,0],dd,1)))
As it is not perfect yet, don't look to close. In Excel I already created an advanced formula. As it requires divisions I needed a work-around.
The If-statement is necessary because otherwise where [Last Played] is never played I receive zero for the whole math statement. Of course, the IF-condition 1 with a fixed value of 20.000 is not proper. I would like to set a Math-function here but this doesn't work.
Having two math-functions in an IF-statement fails (first time MC crashed, second time it returned zero.
In the math function I would like to compute a weighted sumproduct of rating and preference and devide this by [number plays].
Dividing by field values fails also. (What you see in my formula is a work-around which presently produces useful results but that will become worse when the number of plays increases).
In the FormatDate section of the formula I created a numeric day-based value for NOW and the Last Played date. By subtraction I receive the number of days as a number (in contrast to the 'elapsed' parameter in FormatDate). So depending on the time elapsed the playback score increases.
I hope that divisions will be made possible. Finally, if it would be possible to calculate average values of fields - then the whole thing could be made perfect.