A 1.125-second budget, and why 85% is the line

Separation runs on a window 1.5 seconds wide that advances every 1.125 seconds. That hop is the budget: every 1.125 seconds of wall clock, 1.125 seconds of audio has to come out finished, or the backing track breaks up. It is a hard deadline in the sense that missing it is audible immediately.

What it costs on real machines

Measured on an M2 Max with the app’s own runtime and session options: 268 ms with all cores available, 335 ms limited to four threads, 565 ms limited to two.

Against a 1125 ms budget, the full-core figure is 24% — about four times the headroom required. The four-thread number is the more useful one, because four threads is roughly an M1’s performance cores; allowing for clock and memory bandwidth differences puts an M1 somewhere around 35–50%. Still comfortable.

The machines that genuinely cannot keep up are more than four times slower than this one, which is the dual-core Intel tier — and those are excluded anyway, because the app requires Apple Silicon.

Why the warning fires at 85%

The app reports what fraction of the budget this Mac is using. Below 60% there is room. Between 60% and 85% it keeps up. Above 85% it is treated as failing.

The obvious threshold would be 100% — under budget is under budget. That is wrong, and it is wrong for a reason that only shows up when you watch a machine sitting at 90%.

A 90% average is not a machine with 10% to spare. It is a machine whose slowest windows are already over. Ordinary scheduler jitter — another process waking, a thermal step, a page fault — eats far more than the last sixth of a budget, and the failure it produces is not gradual. A window that arrives late does not arrive slightly quieter; it does not arrive, and the listener hears a gap. Averaging hides that: the mean stays under budget while the tail is already dropping windows.

So the threshold is placed where the tail starts failing rather than where the mean does. 85% is the point at which a machine has stopped having margin, even though it has not yet stopped having average.

Why the number is visible at all

The percentage is reported by the engine itself and can be switched on in the app’s settings. Showing it is a deliberate choice: performance claims about other people’s hardware are unverifiable by the person making them, and a user on a machine we have never tested is better served by a number they can read than by a promise we cannot check.

It also makes the failure mode legible. A user whose backing track stutters can see whether they are at 45% and hitting something else, or at 95% and out of machine.

Engineering notes