Epic Rock Radio

General => Epic Rock News => Topic started by: Kailef on February 19, 2008, 10:55:09 am



Title: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2008)
Post by: Kailef on February 19, 2008, 10:55:09 am
Modified as of 27 March 2010.


Here is how the popularity (weight) of individual tracks is determined.

When a song is requested, there is a hidden value called "weight" which is incremented by 5.  (Max value 100)
When a song is actually played on the air (requested or not) it subtracts 2 from the "weight".  (Min value 1)
(When a song is first added to the station, by the way, it has a default weight of "70")


These are the restrictions that are placed on the Auto-DJ with regards to what it can select, regardless of the weight, et cetera.

(This also applies to requested songs as well, by the way)

Do not select the same track or track name within 12 hours of the last time it was played. (Previously the 'same track' limit was 8 hrs)
Do not select the same album within 3 hours of the last time it was played.
Do not select the same artist within 3 hours of the last time it was played.  (Previously the 'same artist' limit was 2 hrs)

(Songs that are shorter than 2 minutes, and a few other albums and bands that I don't want in the regular rotation are also excluded and the Auto-DJ cannot select them to play.  This makes up the list of what I refer to as the "Eligible Track List".   Listeners who who are requesting songs are not restricted to the eligible track list)


Here is how I  have programmed the auto-DJ's logic system to select what song to play on ERR.

The DJ selects the next song to play using the following sequence.  The first song selected uses method 1, the next uses method 2, then 3, and until it reaches the end and goes back to method 1.  Requests do not advance the counter, it just "puts it on hold".  Basically, any time the queue of upcoming songs drops below 4 tracks, the Auto DJ will add a song using the following methods:

1 - The DJ selects the least recently played song with a "Weight" of 80 or higher.

2 - The DJ system selects the next song to be played using weighted random logic.  What it does is it adds up all the songs in the current set of eligible tracks and creates a table for itself.  

To make it simple, let's pretend we only had three songs in ERR's library.  Chosen by Adagio, The Regality Dance by Elvenking, and Tempest by Kailef.  Lets say that, for example, the songs had the following weights:  Chosen has a weight of 100 since it's requested constantly.  The Regality Dance has a weight of 10 because that's where I manually set it to be.  Tempest has a value of 70.

The DJ system would then create the following table:

1-100 .. Chosen
101-170 .. Tempest
171-180 .. The Regality Dance

And it would then generate a random number between 1 and 180, and use the table as an index to determine which song it selects.

3 - The Auto DJ will select a completely random song from the entire library of "EligibleTracks".  It does not account for any sort of popularity or weight.

4 - The exact same process used in #2 is used here.

5 - The Auto DJ will select the least recently played track in the list of "Eligible Tracks".  This insures that no song will be completely forgotten.

..... The overall goal here is for newly added music, in general, to be played more frequently than older music, and for songs that are requested to be selected more frequently than songs that aren't.  Then, we have the "every 5th song" that selects something that hasn't been heard in a long time to help keep the rotation from becoming too stale.


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: JayPeeG on February 25, 2008, 10:19:02 pm
Nice tweaking.

Me and Fabio seemed to agree that it was running pretty well how you had it set up last week.  But with these minor improvements, I do believe the song rotation is in excellent hands!


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: Lamneth on April 07, 2008, 07:19:36 am
If I might make a suggestion here... as I am familiar with the inner workings of SAM:

The inherent problem with increasing song weight by request is that the SAM software does not differentiate between a successful request and an unsuccessful one (at least not on the version I'm using 3.3.2).  For instance, if an artist is queued up or has been recently played and someone tries to request them, they will get a request failed message.  However SAM still increases the song weight of the track!  Now as an extreme case if that person were to request the same track 10 times in a row, receiving all failed requests, the resulting song weight is pegged at 99 and the track hasn't even played.  This system is flawed IMO because it doesn't really gauge the true popularity of the song, only the requester's tenacity.  You might notice that with newly added CDs the song weight increases very rapidly because of all the people receiving failed requests due to the 'recently played' rule.

Secondly, I never understood why SAM decided to set the default weight at 70.  That only leaves a 30-point margin, which is quite small IMO for deciding what are the truly popular tracks. What I suggest doing is this:  reset the song weight of every track in the library at 15 and set the default for new tracks at 15 as well.  (there's an option under Tools to reset the song weight and I think it's called 'rare rotation' or something like that in SAM -- don't use the lowest setting of 10, as songs set at 'no rotation' willl never be queued by SAM, even if they are requested).  After all songs start with a song weight of 15 you now have an 85-point margin in your weighting scheme instead of 30. 

Now - set the song weight rule as follows:  Increase on request: 0  Decrease on play: -1.  This is a perverted double-negative scheme, but it actually works and avoids the increase on failed-request flaw that's built in to SAM.  With these settings the song weight increases by one point each time the song plays.  It's still not a perfect system because the song weight is increased with 'puter picks... but it's still far more accurate than increasing the weight by request as described above.  How many 'puter pics does the 'puter make a day anyway?  Probably not too many.  It will take some time to rebuild the stats, but over time you will see the system pay off:  for example: the mildly popular songs will have a weight of 20 - 30, the more popular songs 31 - 50, and the really popular tracks will be 51+.  Some may eventually even hit 99.  As a broadcaster you can see the advantage to this scheme.  When you set up which songs the 'puter pics, you can sort your playlist by song weight and take ONLY the most popular tracks based on a time-earned system (put them in a separate category called "top weighted songs" or something).  Your 'puters picks will only be from those cream of the crop tracks.  Our ears will be happy.



Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: Kailef on April 07, 2008, 12:40:49 pm
Fortunately, that bug (requests being counted even if they fail) was fixed in SAM version 4.  I ran into it before, but it's no longer a problem.

The reason that I have left new songs at 70 is because I want newly added songs to be played more frequently than old, infrequently requested songs.  If they aren't popular, they'll play for a while and slowly fade into the low priority group.  But when first added, I want them to show up at least somewhat frequently.



Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: Guidrummist on June 17, 2008, 02:26:17 pm
Kailef, is there any way that the extra half-hour wait can be repealed on bands that only have one album on the station? This seems to me like it may be a good idea, since many such bands are fairly new groups just starting out, and if they're able to get more plays, it's more likely that more potential fans would discover them, and consequently these bands would be able to get a better jump on their careers.

Of course, I understand that the auto-DJ is a complicated system, and not one that you made up, so it's entirely possible and reasonable that you wouldn't be able to do this for some artists without doing it for all, but if you can, I am of the opinion that it would be a good idea.


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2008)
Post by: Kailef on June 17, 2008, 06:38:51 pm
I am afraid I can't do that - Not without reducing the 'same album' limit to 1 hour for every band.  :-(


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: Oseriduun on June 18, 2008, 05:49:04 am
imo, just make it 2hrs flat for same-album and for same-artist.. or 90mins for both, whichever.. give everyone an equal chance to be heard.


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: Creed on June 19, 2008, 10:12:44 am
Armory keeps hanging on to the Top Ten despite having only one album.  Lowering the time is NOT a good idea.

I'd much rather have the option open to hear the same band but at least a different album, then to keep cycling through the same 8-12 songs of a band with only one album.  Variety and such.

CREED
A little worn out on Armory anyway...


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2
Post by: Oseriduun on June 22, 2008, 06:50:41 pm
I like armory, and i can't wait fo rthem to have more than 1 album available, and the same goes for so many other bands on ERR.

I agree that lowering the timer is not a good idea, but i would like to see it 'equalized' across them all, same album / same band both at a 2hr limit.. there's enough variety, but this at least allows a band with 1 album the same *potential* airtime as any other band on ERR with 1 or more albums. 

Just my 2 Cents.


Title: Re: Inside ERR: How does the auto-DJ decide what songs to play? (As of 25 Feb 2008)
Post by: Hatchy on December 15, 2008, 04:03:59 am
Always did wonder how the automatic dj played the songs.