Limiting performances of a single track in given time period

Question:

Can I configure Centova Cast to avoid playing the same track more than once in a given period of time?

Answer:

Yes, Centova Cast has always done this automatically. By default, it will avoid playing any track more than once within a 6-hour period if at all possible.

There are a number of caveats to this feature, however:

  1. This limit is only applied to general rotation playlists, and only if the playlist is set to "random" mode. It is assumed that if you place the same track multiple times in a scheduled or interval playlist, and/or if you setup a specific playback order for your general rotation playlists, then you know what you're doing and explicitly want to hear the track multiple times.

    Note, however, that if a track was recently played in a scheduled or interval playlist, and it also appears in a randomized general rotation playlist, the general rotation playlist will treat it as "recently played" and avoid repeating it.

  2. If you don't have 6 hours' worth of tracks in your active general rotation playlist(s), Centova Cast will of course be forced to duplicate some tracks within that period. In this case, Centova Cast will wait as long as possible before repeating the track.

  3. Centova Cast will always give your playlist weighting requirements priority over this limit. So if you setup a pop track on a power rotation, Centova Cast will honor your weighting requirements and play the pop track as often as your weighting requires, even if it means repeating the track multiple times within a 6-hour period.

    Even in the above case, however, Centova Cast will still try to do its best to keep tracks from repeating often; i.e., if your power rotation playlist has a number of other tracks in it, Centova Cast will exhaust all of those other tracks before repeating the pop track.

Can I change the 6-hour limit to something else?

Yes, you can edit the /home/centovacast/system/config.php file and modify the line which says:

define('RANDOM_UNIQUE_PERIOD',360);

The value (360 in the above example) is in minutes; 360 minutes equals 6 hours.

IMPORTANT: Use caution and be conservative when modifying this value.

Note that the higher you set this value, the more calculations and lookups Centova Cast (and your database server) will need to do to find a unique track. These calculations have to be performed in realtime after each track ends (but before the next track starts) so this is of course a time-sensitive operation.

If you set this to an unnecessarily high value, these calculations may take so long that you may encounter audio buffering problems in between tracks. Usually, 4-6 hours is reasonable.

NOTE: This article is for Centova Cast v2 only; an alternate version exists for Centova Cast v3.