Version 1.6.c.1, wherein I introduce a new approach to softening the hotness of recently played songs. I'm excited about this change, so I urge you to try it out and see how different things look when you play tracks -- no more sharp leaps to 100.
/////////////////////////////////////////
// HOTNESS - an algorithm for meta-rating
// v1.6.c.1 (foo_cwb_hooks version)
// Dec 6, 2006 - by topdownjimmy
/////////////////////////////////////////
//
// configure baselines: define baseline playfrequency and decay period (in days)
//
$puts(baselinefrequency,28) // decrease if songs stay hot too long
$puts(baselinedecay,7) // decrease if too many songs are hot
//
// configure default rating for unrated songs
//
$puts(avgrating,3)
//
// DO NOT EDIT BELOW THIS LINE //
$puts(baselinefrequency,$mul($get(baselinefrequency),24))
$puts(baselinedecay,$mul($get(baselinedecay),24))
$puts(lp_age,$add($substr(%last_played%,12,13),
$mul(24,$cwb_datediff(%last_played%,2000-01-01))))
$puts(fp_age,$add($substr(%first_played%,12,13),
$mul(24,$cwb_datediff(%first_played%,2000-01-01))))
$puts(age,$sub($get(lp_age),$get(fp_age)))
$puts(now_age,$add($substr(%cwb_systemdatetime%,12,13),
$mul(24,$cwb_datediff(%cwb_systemdate%,2000-01-01))))
$puts(recentness,$sub($get(now_age),$get(lp_age)))
$puts(decay,$div($div($mul($if2(%play_count%,%play_counter%),
$get(baselinefrequency),$get(baselinedecay),$if2(%rating%,
$get(avgrating)),100),$mul($max($get(age),$get(baselinefrequency)),
$get(avgrating))),100))
$puts(rawhotness,$div($mul($max($sub($get(decay),
$get(recentness)),0),100),$get(decay)))
$puts(forecast,$div($mul($max($sub($get(decay),
$add($div($max(0,$sub($get(baselinedecay),$get(recentness))),2),
$get(recentness))),0),100),$get(decay)))
$puts(hotness,$div($add($get(rawhotness),$get(forecast)),2))
$set_global(hotness,$get(hotness))
// END HOTNESS //
This still depends on foo_cwb_hooks, but has been made compatible with columns_ui. Use $get(hotness) for SCPL/trackinfo_mod, and $get_global(hotness) for columns_ui.