Skip to content

Rotation

Rotation decides which track plays next. It is built from categories, clocks and a weekly schedule, and governed by separation rules and restrictions. Every pick is logged with its reasons.

A category is a group of tracks: Current, Recurrent, Gold, Ballads, Jingles… A track can be in several categories, with a weight in each (1 by default) used by weighted slots. Put tracks in categories from a track’s page, from a selection on the Tracks page, from a label, or in the buffer zone before import.

A clock is an ordered list of slots. Each slot calls a category, and how it calls it matters as much as which category it is:

  • Selection method: least recently played, random, or weighted.
  • Enforce rules: on by default; off skips the separation rules for that slot (restrictions still apply).
  • Separation overrides for that slot.

How a clock runs:

  • Each hour starts its clock at the first slot. A clock shorter than the hour starts over; slots expected after the end of the hour do not play.
  • A clock can instead loop across hours: it carries on from its last slot whatever the hour, so it can be longer than an hour.
  • The track playing at the top of the hour finishes: there is no hard sync yet.

The clock editor draws the hour as it will sound, from the categories’ average lengths, and warns about categories running short of tracks.

The Schedule page is the week, hour by hour. Pick a clock and click or drag over the hours. Hours without a clock rotate the whole library, least recently played first, rules enforced.

Times are in the station’s time zone (in Settings). When clocks go back, the repeated hour runs its clock again; when they go forward, the skipped hour is skipped.

Do not play the same album, artist, title or track again within:

Rule Default
Album 60 min
Artist 120 min
Title 240 min
Track 240 min

Windows can be overridden per category (a power rotation repeats sooner than gold) and per slot.

When no track satisfies the rules, Heron relaxes them step by step, least audible first, halving each rule before dropping it: album, then artist, then title, then track. If that is still not enough, it falls back to the fallback category (set in Settings; the whole library otherwise). The queue is never left empty, and every relaxation is logged.

Track separation is never dropped inside the slot’s own category: hearing the exact same recording again is the most audible repeat.

Artist separation compares artists, not names. An artist can have several names (Neal Morse, The Neal Morse Band); names are matched ignoring case, accents and extra spaces.

  • The artist tag is split on featuring only (feat., ft.): Simon & Garfunkel stays one artist.
  • Artists can be marked similar (a band and its singer’s solo project): separation treats them as one.
  • On the Artists page, move a name to another artist, split it off, or merge artists. Suggestions (from names and MusicBrainz relationships) wait for your review and are never applied alone.

Restrictions are hard rules, never relaxed. They apply to a track, an artist or a category:

  • Dayparting: allowed or banned on given days and hours (no explicit lyrics before 22:00).
  • Date ranges: seasonal music only in its season, optionally every year.
  • Sequence: never directly after a track of a category (no two ballads in a row).

If nothing allowed is left for a slot, the slot is skipped for the next one. If no slot can play, the engine’s fallback folder takes over.

With autofill on, Heron keeps three tracks queued (min_queued). Tracks are picked for their planned start time, so a deeper queue would plan further ahead and drift with every skip or manual insert.

Selection log shows each pick: the clock and slot, the windows applied, which rules held or were relaxed, how many tracks each rule held back, and how many were left to choose from.

It can also simulate the next day or week. A simulation is checked rule by rule against every play before it, so you can test a new clock before it goes on air.