PULSE & BAR
Methods & sources
The arithmetic, the audio clock and the limits behind the numbers.
Tap tempo
We use performance.now() to timestamp each accepted tap. At most 17 taps are kept, forming 16 intervals. BPM = 60,000 ÷ mean interval in ms. Variation = population standard deviation ÷ mean interval × 100. No outlier is silently removed. A gap longer than 3 seconds starts a new series; results outside 20–300 BPM cannot be sent to the other tools. Variation is descriptive, not a confidence interval, accuracy score or health measurement.
Practice timing
Each main pulse represents one quarter note. A bar groups 1–12 main pulses. Subdivisions divide one pulse into 1, 2, 3 or 4 equal clicks. A stage lasts bars × beats per bar × 60 ÷ BPM seconds. Both endpoints of a ladder are included, with a shorter final increment if necessary. The complete last bar plays before the plan stops. There is no count-in.
Sound is synthesized locally with Web Audio oscillators and short gain envelopes. A short lookahead schedules events against the audio clock, rather than relying on a JavaScript timer for each audible click. Visual indicators follow the scheduled events and can lag behind sound. The metronome stops when its tab is hidden. Browser and device latency remain relevant, especially with wireless output.
Delay and reverb arithmetic
A quarter note is 60,000 ÷ BPM ms. Straight note lengths scale from that value. Dotted lengths multiply by 1.5, triplets by 2/3, and a cyclic rate in Hz is 1,000 ÷ duration in ms. Reverb budget = target duration − pre-delay; it does not predict a real reverberation tail or room acoustics. Inputs are limited and invalid results are withheld.
Rounding and files
Calculations use JavaScript numbers without intermediate display rounding. Displays use up to two decimal places for BPM and milliseconds; CSV timing values preserve three decimals. Practice time displays round to the nearest second. JSON files store validated settings. CSV files use quoted cells and a UTF-8 marker; names and imported text are never executed as code.
Reference material
- MDN: performance.now(), monotonic browser timestamps.
- MDN: audio sequencing techniques, scheduling and lookahead.
- MDN: AudioContext baseLatency, output latency limits.
- Musicca metronome, reference explanation of BPM.
- Tuneform BPM to ms, independent explanation of the quarter-note formula.
References checked 31 October 2026. Our text and implementation are original; no competitor code, song, recording or sample library is included. Calculations do not require a live external data source.