Compare observations without hiding their spread
The tempo window comparator is for two to four BPM measurements you made as separate finite windows. Each row has its own count, boundary convention, and elapsed seconds. The browser normalizes the counts, calculates a BPM for every window, and summarizes their center and spread.
It does not collect clicks continuously, hear a performance, or decide why values differ. Showing each row protects useful variation from being erased by one average.
Prepare comparable windows
Use the same pulse level across rows. If Window A counts quarter-note pulses and Window B counts half-time backbeats, the numerical difference describes your counting choice rather than tempo drift. Write pulse and boundary details in your own notes because the tool stores only numeric rows.
Choose similar musical spans where possible: adjacent eight-bar phrases, repeated choruses, or repeated timings of the same section. Mixing a free introduction with a quantized chorus can be informative, but label that comparison externally.
The count convention can differ by row. One note might record 33 audible events including endpoints while another records 32 completed intervals. Both normalize to 32 if they describe the same boundary span.
Statistics shown
Per-window BPM equals normalized intervals × 60 ÷ seconds. The arithmetic mean adds valid BPM values and divides by row count. The median is the middle sorted value, or the mean of the two middle values for an even row count. Every statistic and comparison uses the unrounded values at full available numeric precision. BPM and summary values may be rounded to two decimals for display only.
Range equals maximum minus minimum. Percent spread equals range divided by median, multiplied by 100. This is a descriptive ratio, not uncertainty, probability, standard error, or proof of drift.
Two readings whose unrounded BPM values differ by no more than 0.000000001 BPM are treated as equal. The A-versus-B statement therefore has three complete states: first faster, first slower, or equal. Chronological trend is up only when every adjacent value rises by more than that tolerance, down only when every adjacent value falls by more than it, and plateau only when all adjacent values are equal within it. Any other sequence is mixed, including ties combined with rises or falls. A trend label does not establish that the underlying music accelerated; boundary bias can also move consistently.
Worked example: repeated timings near 120
Enter three completed-interval windows:
- A: 32 intervals, 16.0 seconds = 120 BPM.
- B: 32 intervals, 16.2 seconds ≈ 118.52 BPM.
- C: 32 intervals, 15.8 seconds ≈ 121.52 BPM.
The median is 120 BPM. The range is approximately 3.00 BPM, from 118.52 to 121.52. Percent spread is about 2.50%. Direction is mixed because the sequence falls and then rises.
That pattern could reflect manual boundary differences around a stable rate. It could also reflect a real local fluctuation. Repeat with longer equivalent boundaries or compare adjacent passages before choosing language such as “steady.”
Worked example: a rising series
Now compare three adjacent passages, each containing 48 completed intervals:
- A: 30 seconds = 96 BPM.
- B: 29 seconds ≈ 99.31 BPM.
- C: 28 seconds ≈ 102.86 BPM.
Every value rises, so the result says “strictly increasing entered readings.” The median is about 99.31 BPM, and the range about 6.86 BPM.
This is evidence worth investigating, not automatic tempo-drift detection. Confirm that each passage truly contains 48 intervals, starts and ends on equivalent landmarks, and uses the same pulse. If those checks hold, document an accelerando or increasing local tempo rather than reducing the performance to the mean.
Mean or median?
The mean uses every magnitude and moves toward an unusually high or low row. The median is less affected by one extreme value in a small list. Neither should be chosen only because it matches expectation.
With two rows, mean and median are identical under the standard definition. With three or four, display both and inspect the per-row table. If one row has a clear count mistake, correct or remove it based on evidence rather than statistics.
A diagnostic order
When spread surprises you, check:
- Same recording and playback speed.
- Same pulse level.
- Same event-versus-interval convention.
- Equivalent first and last landmarks.
- Complete count with no missed pulse.
- Passage drift, rubato, pause, or edit.
- Stopwatch precision and manual reaction.
The comparator cannot perform those checks; its investigation list keeps them visible.
Limits
Two to four observations are not a statistical study. The percent spread has no universal threshold for “stable.” A click-produced studio track, expressive solo performance, and dance rehearsal require different interpretation. Chronological direction ignores the magnitude and timing of change within each window.
All rows are ephemeral. There is no chart history, account, saved session, upload, or remote processing. Copy the row table if you need a record.
Frequently asked questions
Should I average half-time and double-time values?
No. Normalize the pulse level first. They describe different metric levels, not noisy samples of one rate.
Does a rising label prove acceleration?
No. It reports the order of entered values. Validate count and boundary consistency.
Why require complete optional rows?
Silently dropping an incomplete row could make the summary look more reliable than the input.
Can I compare more than four windows?
Not in this tool. Preserve larger series in an appropriate analysis system.
Enter at least two well-labeled observations and choose “Compare entered windows.” Read the row table before the summary, then test the most plausible source of spread.
