TuneStacker

TuneStacker is the engine that turns format clocks and master logs into actual program logs — the files AutoCast reads to know what to play each day. Click Generate Logs and TuneStacker works through your scheduled date range, hour by hour, picking real songs from your library to fill every Random, Fill, and Rotate slot.

How Music Selection Works

TuneStacker's selection engine is designed to sound like a skilled music director, not a random number generator. For every Random or Fill event, it:

  1. Filters the library to tracks matching the event's Attribute/Value criteria.
  2. Sets aside any track whose artist or title played too recently for your ProximityGuard™ settings, and never plays the same artist or title twice in a row.
  3. From what's left, looks at how long each song and its artist have been resting, and picks from the ones that have waited longest, choosing at random among the top few for variety.

This is Balanced song rotation, on by default since ClockWork 1.1.167. Every song gets roughly its fair share of airtime, frequently aired artists wait their turn, and a song by an artist with only one or two tracks doesn't come back far more often than everything else. If you untick Balanced song rotation, TuneStacker uses its original method: every artist gets one equal turn regardless of how many songs they have, and that artist's least-recently-played song plays.

Protection carries across batches. At the start of each Generate Logs run, TuneStacker takes into account the songs that have already aired and any program logs you've already made that haven't aired yet, so a new batch doesn't repeat what's scheduled right before it.

Auto Mode

Auto mode is the normal daily workflow. TuneStacker matches each day in your date range to a master log by day name — Monday's log generates from the master log file named "Monday," Tuesday's from "Tuesday," and so on. This means your master logs must be named exactly after the days of the week for Auto mode to work.

ControlWhat it does
Start DateThe first day to generate a program log for. Defaults to today.
End DateThe last day to generate a program log for. Defaults to one week from today.
Generate LogsStarts generation for every day from Start to End (inclusive).

Before generating, TuneStacker checks that all needed day-name master logs exist. If any are missing, an alert lists which ones you need to create in MasterBuilder before proceeding.

Output files are named by date in MMddyy format (e.g., 030825 for March 8, 2025) and written to the Program Logs folder.

Manual Mode

Manual mode lets you pick a specific master log for each day, generate day-named logs independent of a calendar date, or build a specialty log with a name of your own. Switch to Manual mode with the radio button, then choose a filename format:

Sub-modeOutput filenamesWhat you set
Days Day of week names: Monday, Tuesday, etc. A starting day of the week. Seven rows are always generated (Sun–Sat cycle). Each row auto-selects the matching day-name master log, but you can override any row.
Dates Calendar dates: MMddyy format. A start date and a count (1–60 logs). Each row shows the date and lets you pick any master log.
Specialty
(ClockWork 1.1.164 and later)
Any name you type, such as Special Sports Log. A table of rows, each with a master log and a name. No dates are involved. See Specialty Logs below.

In Days and Dates, each row has a popup listing all your master logs. You must assign a log to every row — any row left at "Select a master log" will block generation with an alert.

💡

Days sub-mode is ideal for generating or regenerating a permanent set of seven day-named program logs that AutoCast cycles through. Dates sub-mode is ideal for generating a batch of dated logs for the coming week. Specialty sub-mode is for one-off programming, like a live sports broadcast, that doesn't belong to any particular day.

Specialty Logs

Specialty is available in ClockWork 1.1.164 and later, and only in Manual mode. In Auto mode the Days and Dates choices are all you'll see.

What Specialty Logs Are For

A specialty log is a program log you build for something outside your regular daily schedule — most often a live event that fills only part of a day. Typical examples are a play-by-play sports broadcast, election-night coverage, a holiday special, a remote broadcast, or a pledge drive.

Days and Dates logs are tied to a weekday or a calendar date. A specialty log isn't tied to either. You choose its name, and it sits in your Program Logs folder alongside your regular logs until you need it. When the event comes around, you use AutoCast's Flip to Another Log… command to put it on the air for the rest of the day (see Putting a Specialty Log on the Air); regular programming resumes automatically at midnight, or sooner if you flip back. Because you name it yourself, you can keep one ready for each event — Friday Night Football, Election Night, Christmas Eve — and regenerate it whenever you like.

Building a Specialty Log

  1. Click the Manual radio button, then choose Specialty next to "Log filename format."
  2. In the Master Log column, choose the master log to build from. The popup lists every master log in your Master Logs folder.
  3. In the Program Log Name column, type the name you want, such as Special Sports Log.
  4. To build more than one specialty log at a time, click the + button at the bottom right of the table to add a row. Each row creates one program log. Click − to remove the last row.
  5. Click Generate Logs.
ControlWhat it does
Master LogThe master log this row is built from. You can use the same master log on more than one row.
Program Log NameThe name the finished program log is saved under.
+ / −Adds a row, or removes the last row. The table always keeps at least one row.
Proximity, Settings, and "Ready: … eligible tracks"Work exactly as they do in the other modes. The track count reflects the master logs you've chosen in the table.
Generate LogsBuilds one program log for every row you've filled in. Rows left completely blank are ignored.

Each finished log is saved in the Program Logs folder under exactly the name you typed, and appears at once in the Program Log List. If a log with that name already exists, TuneStacker asks whether to Overwrite All or Skip Existing — overwriting rebuilds the log with a fresh set of music picks. Your rows are remembered, so next time you open the Specialty table your master logs and names are still there.

Naming Your Specialty Log

Names can include spaces, letters, numbers, and most punctuation. A few rules keep your logs safe:

Unused Hours: Use the Placeholder Hour Clock

⚠️

Every one of the 24 hours in a specialty master log needs a format clock — including the hours your event doesn't use. For each unused hour, assign the Placeholder Hour format clock. Don't leave those hours set to "(none)."

This isn't just tidiness. Before AutoCast flips to a specialty log, it checks that all 24 hours are present and that every hour has something scheduled in it. If any hour is missing or empty, AutoCast refuses to flip and tells you which hours need attention.

A live event usually covers just a few hours — say the game runs from 7 PM to 10 PM. The rest of the day should stay quiet and hand off cleanly when your event's hours arrive. Placeholder Hour is a small format clock, provided with the TuneTracker system, built for exactly this. It contains just two events:

EventWhat it does
Pause-For 99:00:00Holds AutoCast quiet with an indefinite pause, without triggering the silence sensor.
Interrupt @:59:59 0At 59 minutes, 59 seconds, ends the pause with no fade so the next hour begins right on time.

The quickest way to build a specialty master log is in MasterBuilder: create a new master log and use Main Format Clock to Use → to set Placeholder Hour across all 24 hours. Then override just the hours your event uses with the event's own format clocks.

If You Don't See Placeholder Hour

If Placeholder Hour isn't in your format clock list — for example, because your station was set up before it was added — you can create it in about a minute:

  1. In ClockMaker, click New and rename the clock Placeholder Hour.
  2. Add a Pause-For event (category Automation) and set its duration to 99:00:00.
  3. Add an Interrupt event below it (also Automation) set to :59:59 with a fade of 0.

Any blank rows left over from the new-clock template are harmless. See Adding & Editing Events if you need a refresher on adding events, and the Automation event reference for details on Pause-For and Interrupt.

Putting a Specialty Log on the Air

Once you've generated a specialty log, AutoCast puts it on the air with its Flip to Another Log… command:

  1. In AutoCast, right-click the program log and choose Flip to Another Log….
  2. Choose your specialty log from the list — double-click it, or select it and click Flip.

AutoCast switches to the specialty log for the rest of today and joins it at the current time of day. If your event is still hours away, AutoCast simply waits quietly in the Placeholder Hour clock until your event's hour arrives. Regular programming resumes automatically at midnight. To return sooner, right-click the program log again and choose Flip Back to Regular Programming. Your regular program log is never changed by any of this.

💡

If AutoCast declines to flip, it explains why — most often an hour that's missing or empty because it wasn't given the Placeholder Hour clock. Fix the master log in MasterBuilder, regenerate the specialty log, and try again. The AutoCast documentation covers every message you might see.

The Program Log List

The right panel of TuneStacker shows the current contents of your Program Logs folder, with the newest log at the top. The list updates automatically when generation finishes — you don't need to refresh it manually. Click Open program logs folder to reveal the folder in Finder.

ProximityGuard™

Below the library tally is a row labeled Proximity and Settings, flanking a small shield icon. Click anywhere in this row — on either label or on the shield itself — to open the ProximityGuard™ panel, which controls how far apart TuneStacker keeps repeats of the same artist and the same song.

ControlWhat it does
Artist sliderThe minimum number of songs that must play before the same artist can play again. Below the number, ProximityGuard shows roughly how long that is on the air (for example "≈ 6.3 hrs"), based on how many songs per hour your last Generate Logs run scheduled.
Title sliderThe same thing for the same song title.
Balanced song rotationGives every song a fair share of airtime. On by default. See Balanced Song Rotation below.
Test run resultTells you, in plain words, whether your settings will hold. See The Test Run below.
Use safe defaultsSets the sliders to a comfortable level with plenty of room to spare: Artist to about half, and Title to about 40%, of what your most limited category can sustain.

The top of the panel shows your library stats: total eligible tracks, unique artists, and unique titles in the categories your master logs use. ProximityGuard settings are saved automatically and apply to every Generate Logs run after that.

A new station starts with safe settings automatically. If your station was sitting at 0 and 0 (no repeat protection at all, as early System 7 installs did), ClockWork 1.1.169 switches it to safe settings once and shows a message saying so. If you set 0 and 0 again yourself afterward, ClockWork leaves them alone.

Balanced Song Rotation

ClockWork 1.1.167 and later. On by default.

This checkbox decides how TuneStacker chooses among all the songs that are allowed to play next.

In our own testing on a station with about 1,300 songs by 165 artists in its main category, turning Balanced on took the most-played song from about 43 plays a month down to about 19. Nearly every song in the once-an-hour feature categories got its turn, where before hundreds were never played at all.

Balanced never loosens your Artist and Title settings; it only changes which of the allowed songs gets picked. The one trade-off: in a small once-an-hour category, an artist with many songs in that category comes back to that slot more often, because each of those songs is getting its fair turn. They're still kept at least as far apart as your Artist setting (unless the library runs short, which the report card flags).

💡

Want to compare? Untick the box, generate a few days, then tick it again. The report card after each run (see After Generation) shows how close the nearest repeats came.

The Test Run

ClockWork 1.1.167 and later.

Whenever you open ProximityGuard, move a slider, or change the checkbox, ProximityGuard rehearses a few days of song picks from your own master logs with those settings. Nothing is written: no program logs, rotations, or other station files are touched. While it works, the number badges under the sliders turn gray and "Checking… stand by for results" flashes below them. After a few seconds the badges turn green, yellow, or red, and a short message below explains why:

Badge color and messageWhat it means
Green
"Your settings hold ✓"
Every song in the rehearsal met both settings, with room to spare. It also shows the closest artist and title repeats it found.
Yellow
"Holds, but just barely"
The settings held, but at times only a handful of songs qualified. Over a full month a few songs might have to play slightly sooner than you asked. Consider backing off a little.
Red
"… songs repeat too soon"
Your library can't keep up with these settings: some songs would have to play sooner than allowed. (A very small number shows yellow instead.) Lower one or both sliders.
Red
"Too tight for this library"
These values are more than your library can ever support, for example "DeepGrooves has only 165 artists". This shows up right away, without a rehearsal. Lower the slider named in the message.

TuneStacker never leaves a slot empty. If settings are too tight, it picks the songs that have waited longest and plays them as late as it can, so a red result means "some repeats will come sooner than you asked", not "logs will fail".

How TuneStacker Recognizes the Same Artist

For spacing purposes, TuneStacker ignores small differences in how a name is written: capitals, periods, quote marks, and "&" versus "and". For artists it also ignores a leading "The", and for song titles tags like "(Live)" or "(Remastered)". "R.E.O. Speedwagon" and "REO Speedwagon" count as one act, and so do "The Doobie Brothers" and "Doobie Brothers". Nothing in your library is renamed.

Genuine spelling differences, such as "Carol King" and "Carole King", aren't guessed at. Use Librarian's Spelling Check to find and fix those.

After Generation

When TuneStacker finishes, you'll see a success message in the status bar and a green flash on the speaker icon. The program log list refreshes automatically. If any errors occurred, they appear as red text in the status bar and are also written to the Logging tab (⌘L).

Starting with ClockWork 1.1.167, the status line also gives a quick report card, for example "Done. Closest repeats: artist 97 · title 604 ✓". A ✓ means every Random and Fill song met your ProximityGuard settings (FeatureGuard picks aren't graded). The Logging tab has the full report: