Developer Audio

Online metronome

100 BPM Stopped

Sound generated in your browser · nothing downloaded or streamed

Local · synthesised in this page, not streamed

Set the tempo from 30 to 260 and the number of beats in a bar, then press play. The first beat of each bar sounds at 1600 Hz against 1000 Hz for the rest, so you can hear where the bar starts without counting.

How to use the metronome

1 Set the tempo. If you do not know it, tap it out on the BPM tapper and bring the number here.
2 Set how many beats are in a bar; four for most music, three for a waltz.
3 Press play. Moving either slider restarts the count from beat one, so set them before you start.
4 Practise slower than feels comfortable. Accuracy comes from the tempo you can actually play.

Every click is a short synthesised blip rather than a recorded sample: an oscillator at 1600 Hz for the downbeat and 1000 Hz for the rest, opened over a millisecond and shut over fifty. Nothing is downloaded, so the page keeps working with the network off and a two-hour session costs no bandwidth at all.

The timing is good enough for practice and is not a studio reference, and the difference is worth stating plainly. Each blip is handed to the Web Audio engine 20 milliseconds before it should sound, so the note itself lands cleanly and its envelope is sample-accurate. But the moment that hand-off happens comes from a JavaScript interval timer, and browsers deliver those on a best-effort basis: layout, garbage collection and anything else competing for the main thread can push a callback late by tens of milliseconds, and the click goes late with it. A tab left in the background is throttled harder still. Keep the tab in front, and treat a stray click as the browser rather than your counting.

There is a second, quieter effect that only shows up over a long take. An interval is set in whole milliseconds, and most tempos do not divide evenly into 60,000. At 137 BPM a beat should last 437.956 ms and the timer gets 437, so the metronome actually runs at 137.30 BPM and lays down about 1.2 beats more than it should across four minutes. The error is always in the fast direction and grows with the tempo: negligible at 90 BPM, a third of a per cent at 260. Seventeen tempos divide exactly and have no error at all: 30, 32, 40, 48, 50, 60, 75, 80, 96, 100, 120, 125, 150, 160, 200, 240 and 250. Anything you record to should be tracked against a DAW click rather than this one.

On practice itself: the tempo where you can play something cleanly is the tempo to practise at. Most people choose one about twenty per cent too fast and rehearse their mistakes into place.

What people use it for

  • Practising a passage slowly enough to play it cleanly
  • Holding the tempo through a section that always runs away
  • Bringing a piece up in steps of five BPM over a week
  • Checking a piece against the tempo marked on the score
  • Giving a group a count-in everyone can hear
  • Setting a walking or rowing cadence away from an instrument

Questions

It marks the downbeat at 1600 Hz against 1000 Hz for the others, so you can feel where the bar starts without counting.

MDN, Web Audio APIChris Wilson, A tale of two clocks: scheduling Web Audio preciselyMDN, setInterval()
Was this tool any good?
Internal signal only · I use it to find the tools worth rebuilding