Key concepts
Breakable rules, dig depth, pass orders and most rested first, explained.
Breakable vs unbreakable rules
This is the most important concept in the rules engine:
- Unbreakable rules cause the scheduler to reject a candidate track and try the next one. If no track passes all unbreakable rules within the dig depth, the position is left unscheduled.
- Breakable rules allow the track to be placed anyway, but the violation is logged as an issue for you to review. The scheduler still prefers a track that breaks no rules, and otherwise picks the one that breaks the fewest.
Best practice: make critical constraints (artist separation, same-song separation) unbreakable. Make softer preferences (genre flow, tempo adjacent) breakable.
See Step 4: Rules.
Dig depth
Each category has a dig depth: a percentage that controls how much of the category the scheduler looks at when filling a position:
- 100%: every track in the category is a candidate. This gives the most variety and the fewest unscheduled positions, but rest has less influence on which track is picked.
- 50%: only the most-rested half of the category is considered. Tighter rotation, but more chance of a position going unscheduled when rules rule out the candidates.
- 25%: very tight rotation. Only the most-rested quarter of the category is considered.
The scheduler always considers at least one track. If it can't find a valid track within the dig depth, the position is left unscheduled. Positions filled from a genre rather than a category don't use dig depth: every matching track is a candidate. See Step 2: Categories.
Pass orders
The pass order decides which categories are filled first within each hour. This matters because:
- Categories filled first get the best pick of tracks, before separation rules start to rule candidates out.
- Without a pass order, positions are filled in clock order.
- Custom pass orders let you prioritise your most important categories.
See Step 5: Pass orders.
Most rested first
When filling a position from a category, the scheduler ranks the category's tracks by how long it's been since each one last played, with tracks that have never played at the top. It then takes the top share of that ranking set by the dig depth and picks from it at random, skipping tracks that break unbreakable rules. This spreads tracks across the schedule and stops recently played tracks from coming round again too soon.