- The library has a
bedkind for music beds: recordings that run under a break rather than airing as one. A bed comes in through the same doors as any recording (thebed/inbox folder, an upload, an address) and is scoped to shows with the same picker, but it is never offered on the format clock and a band can never draw one as a break. The upload card says what a bed is for when that kind is chosen. - A break the station writes can now air over its show's music bed. Nothing changes until the library holds a recording of kind
bed, and a show can keep its breaks dry from the Sound section of its editor. When a break is planned, the station picks a bed for it: one scoped to the show or its presenter first, otherwise one scoped to nobody, never another show's. The render lays the finished words over that bed, starting a moment before the first word and fading out after the last, atrender.bedLevelDbunder the voice (eighteen by default, judged from the bed's measured loudness). A break with a bed is never talked over a record. With no bed, no mixer, or anything going wrong, the break airs as words exactly as before. - A chart entry can carry the record's position in the edition before (
lastWeek), on the plugin SDK'sChartEntry, theChartRecordcontract and the placing a chart pick carries into the running order. The station's own Top 40 fills it, and a chart plugin may. On a chart show the presenter is told how the record moved from its two positions alone ("up from number 12 on the chart before"), never the distance between them, and the break guard counts last week's position as a figure the break was shown. - A festival show's talk breaks may talk about the festival: its name, its dates said as dates, where it is, who headlines, and the day an act on the record either side plays, all from what the station holds, and only while the festival is still to come or on when the break is heard. A sentence naming the festival with a date that is not one of its days, or putting an artist on its bill who is not on it, is refused and the break asked again.
- Programme has a Festivals tab: add a festival with its dates, where it is and its bill (headliners in their own box, one act per line, and an act's day after a comma), and see whether each is still to come, on now or over. A block's editor has a "Built around a festival" picker, which offers the festivals still to come and keeps one a block already names.
- A festival can be looked up by name before it is added. A concert plugin may now list festivals (
findFestivals, optional), the bundled Ticketmaster plugin does,GET /festivals/lookupasks every plugin that can, and the console's festival form has a "Look it up" box that fills the form from a listing. The festival is kept as the operator saves it, with where it came from noted and never read again. - A show built around a festival plays the acts on its bill, the ones played least recently first and headliners no more than anybody else, including acts your library does not hold yet. How much of each hour comes from the bill is the rotation setting "How much of a festival show comes from the festival's bill" (
rotation.festivalMix, 60% by default, 0 turns it off); the rest of the hour follows the show's own brief. - A schedule slot can name the festival it is built around (
festivalId), and a broadcast put on air can name one too. The festival rides the show's rules, so applying a slot that gained or lost one changes the show on air, and a festival that is removed clears the slots naming it. A schedule file never carries one. The web console and the desktop app keep a slot's festival when they save it. - The station keeps festivals: a name, the first and last day, where it is, and who is on the bill, with each act's day and whether they headline when the bill says.
GET,POST,PUTandDELETE /festivalsread and write them, and each answers whether a festival is still to come, on now or over on the station's calendar. - A mixer can lay a music bed under a join.
AudioJoin.bednames a sound that runs under every part, fromleadMsbefore the first word totailMsafter the last, atgainDb; the analysis sidecar loops a bed shorter than the words (with a short crossfade at each seam), cuts one that is longer, and fades it in and out across its edges. A join that sends no bed is unchanged, byte for byte. - A show can keep its breaks dry, and its edit form shows its own sound. A schedule slot and a broadcast put on air by hand take
beds: absent or true airs the station's written breaks over a music bed wherever the library has one for the show, false keeps them dry, and a rewrite that leaves it out keeps what the slot had, so an older app editing a show cannot turn its beds back on. The slot editor has a Sound section with that switch and a picker each for the jingles, idents and music beds that are the show's own, which sets each recording's scope as it is chosen. - On a countdown of the station's own chart, the presenter is told why each record is there: how many times it aired on the station and how many times listeners asked for it over the time the chart covers, and whether the station likes it. A zero is left out. Only the station's own chart can say this: the same field is removed from anything a chart plugin answers, and the break guard counts the two figures as ones the break was shown.
- The station has charts of its own beside every chart plugin's: a weekly Top 40 (
station:top-40) and its Favourites (station:favourites), both named after the station. The Top 40 covers the last complete Monday-to-Sunday week in the station's time zone. A record scores a point for each time it aired, three for each listener request made for it and one off for each skip, and a record the station likes gets half as much again. Disliked and suspended records never chart, and a record needs two points to place. Each entry's peak and weeks on the chart are worked out from the year before it. The Favourites ranks the liked records over the last year. Both are on the chart menu, so a schedule slot naming one and played as a countdown airs the station's own countdown. Play history and skips are now kept for 400 days rather than 120, so a year of weeks can be ranked. The rotation still reads only the last 120 days, so deep cuts and the smart shuffle behave as before.