‹ Metronome

Link Parameters

Every setting on the tuner and the metronome can travel in the URL, so a setup is something you send rather than something you describe. Paste ?bpm=92&sig=7/8&sub=triplet&accents=2002002 after /metronome and it opens in exactly that state, on any device, with nothing saved anywhere.

The short version

  • Every parameter is optional and independent. Give one, give all of them, give none.
  • A link overrides what your browser had saved, for the settings it mentions. It leaves the rest alone.
  • Anything unrecognised or out of range is ignored, silently. A mangled link opens a working tool, never an error.
  • You do not have to write these by hand: “Share this practice” is at the foot of the metronome (copy the link, or send it straight from your phone’s share sheet), and “Copy link to this setup” is in the tuner’s settings panel behind the gear icon (and on the dial itself), and at the foot of each of the three kalimba tools. All of them also keep the address bar up to date as you work, so the link in it is always the one worth sending.

Metronome — /metronome

ParameterAcceptsWhat it doesExample
bpm10–1000Tempo, in beats per minute. The beat is the lower number of the time signature, so 6/8 at 120 clicks six times a bar.bpm=92
sig1–16 over 2, 4, 8 or 16Time signature. The canonical way to set the bar — this is what a copied link carries.sig=7/8
beats1–16Beats per bar on its own, overriding the top of `sig`. Accepted for hand-written links; never emitted.beats=5
beatnote2 · 4 · 8 · 16Which note value gets one click, overriding the bottom of `sig`. Accepted for hand-written links; never emitted.beatnote=8
subquarter · eighth · triplet · sixteenth · swing · dottedWhat happens inside each beat: plain quarters, eighths, triplets, sixteenths, swung eighths, or a dotted eighth and a sixteenth.sub=triplet
accents1–16 digits, each 0–3One digit per beat, loudest first: 3 accent, 2 normal, 1 soft, 0 silent. `2002002` is seven beats clicking on 1, 4 and 7.accents=2002002
soundwoodblock · click · beep · cowbell · drums · mechanicalThe click itself. `drums` is a kit — kick on the accent, snare on the beat — and `mechanical` is a wind-up metronome with a bell on the downbeat.sound=woodblock
poly0 (off) or 2–16A second pulse spread evenly across the bar — `3` in a bar of 4 is the classic three-against-four. Notes that land on a beat are dropped, so what you hear is only the cross-rhythm.poly=3
speedfrom-to, then ×step and /bars — e.g. 80-140x5/4The speed trainer: ramp the tempo from one BPM to another, `step` BPM at a time, every `bars` bars. Ramping down is a real drill and works the same way — `140-80x5/4` proves a passage you own at 140 is still clean at 80. `x` and `/` are optional; without them the ramp uses 5 BPM every 4 bars.speed=80-140x5/4
gapplay/silent, each 1–32 bars, then an optional ×cycles up to 99The gap trainer: the click plays for the first number of bars and sits out the next, while the bar and beat counters keep running. When it comes back you find out whether you drifted — that gap is the exercise. `x5` repeats the cycle five times and then stops, closing with one bar of click so you can hear where you landed; without it the drill runs until you stop it. Off is the parameter being absent, not `0/0`.gap=4/2x5
timer1–120 minutesPractice timer, in minutes: the metronome stops itself when the time is up. The panel offers 1, 3, 5, 10 and 20; a link may name any whole number of minutes up to two hours.timer=10
flash1 · 0 (true/false, yes/no and on/off are read too)Flash the panel on every beat as well as clicking. The half of the metronome that works with headphones off, in a quiet house, or for a player who cannot hear the click over their own instrument.flash=1
preseta preset id — lowercase letters, digits and hyphensThe practice preset a speed-training link was built from, e.g. `alternate-picking`. Cosmetic: the setup itself travels in `speed`, `sig`, `sub` and `accents`, and an unrecognised id is ignored rather than changing what you hear.preset=alternate-picking
nameup to 60 letters, digits, spaces and simple punctuationWhat the practice is called — shown as the title of the card a shared practice opens with, e.g. `Alternate+picking+warm-up`. A label only: it changes nothing you hear. A name containing a web address, an email, symbols or emoji is ignored, and the card falls back to describing the settings.name=Alternate+picking+warm-up
instguitar · bass · drum · piano · voice · ukulele · violin · viola · cello · mandolin · banjo · flute · clarinet · saxophone · trumpet · tromboneWhich instrument the practice is for, shown on the card as “Guitar practice”. A label only — the metronome sounds the same for every instrument.inst=guitar
rec0 · 1 · 2 · 4 (bars of count-in)Opens Recording Mode — a steady click to record against, with this many bars of count-in before bar 1 (`0` for none). The practice drills are switched off in this mode, so a link that also carries `gap` or `speed` opens without them.rec=2
msgup to 280 letters, digits and simple punctuation, over at most 6 linesInstructions from whoever sent the link — shown on the card a shared practice opens with, under “Note from the sender”, e.g. `Keep+the+wrist+loose`. A label only: it changes nothing you hear. Anyone who has the link can read it, so it is no place for names or contact details; a message containing a web address, an email, symbols or emoji is ignored.msg=Keep+the+wrist+loose

sig is the canonical way to set the bar and the only one a copied link uses. beats and beatnote are accepted so a hand-written link can change one half of a meter without restating the other; where they disagree with sig, they win. If you give accents and nothing else, the number of digits sets the length of the bar.

92 BPM in 7/8, triplets inside every beat, clicking on 1, 4 and 7.

A slow 4/4 backbeat on the kit: accent on 1, ghost notes on 2 and 4.

A fast waltz counted in one — the downbeat sounds, the other two are silent.

The practice tools

poly, speed, gap, timer and flash reach the drawer below the transport, and they are the parameters worth the most in a link: “four bars on, two off, climbing five BPM every four bars” is four instructions and a good chance of a misunderstanding, and one query string otherwise. Each is off unless the link says otherwise — a practice drill is something you are doing now, not a preference, so none of them is remembered between visits and a link is the only thing that can switch one on.

speed and gap are each one parameter rather than four, because each is one instruction: a truncated link that arrived as a ramp with a destination and no step would be three quarters of a drill, and you would have no way to see which quarter was missing. Both are dropped whole if any part of them is unusable.

The standard speed drill: climb from 80 to 140, five BPM at a time, every four bars.

Gap training: four bars of click, two of silence, five times, then one more bar of click so you hear where you landed — and a summary of what you got through.

The same drill with no end: two on, two off, repeating until you stop it. The cycle count is what turns a mode into an exercise with a finish line.

Three against four: a second pulse spread evenly across the bar, with the notes that land on a beat dropped.

A ten-minute practice block that stops itself, flashing on every beat as well as clicking.

name and inst are labels, not settings: they change nothing you hear, and turn a setup into a practice somebody can recognise. A link that sets anything opens with a card saying what it set — the name, the subdivision and the tempo, then the drills — and one Start practice button. The name is the one piece of free text any tool here reads, so it is filtered hard: letters, numbers, spaces and simple punctuation only, up to 60 characters, and never anything that looks like a web address or an email. A name that fails is ignored and the card describes the settings instead.

A shared practice: opens on a card reading “Alternate Picking — 16th notes — 120 BPM”, climbing five BPM every four bars with a two-on, two-off gap, five times.

Every metronome parameter at once, in the order a copied link writes them — the template to edit rather than to memorise.

Tuner — / and every /tuner/… page

ParameterAcceptsWhat it doesExample
hz400–500, one decimalConcert A, in hertz. 440 is the modern standard; 415 is baroque pitch, 432 the alternative-tuning one, and a pipe band lives near 480.hz=442
temperamentequal · pythagorean · just · meantone4 · meantone3 · meantone6 · kirnberger3 · vallotti · werckmeister3 · aeu-rast · aeu-ussak · aeu-hicaz · customWhich temperament the dial judges you against. `equal` is the default; `custom` reads its twelve offsets from `cents`.temperament=vallotti
rootc · db · d · eb · e · f · gb · g · ab · a · bb · b (c#, cs and C♯ are read too)The note the temperament is built on — where its pure thirds and its wolf actually sit. A historical temperament without one is only two thirds of a tuning: Vallotti on C and Vallotti on D put the wolf in different keys, and a link that named the temperament and not the root would arrive meaning whatever the reader last set. Ignored under `temperament=equal`, which has no root to have.root=d
centstwelve numbers, −50–50, comma-separatedThe Custom temperament itself: twelve cent offsets from equal temperament, starting at the root and rising by semitone. Read only when `temperament=custom`, and sent only then — without it, a link naming the Custom temperament would arrive meaning whatever the reader had last set up, which is nobody’s temperament.cents=0,-10,4,-6,-14,2,-12,-2,-8,-16,0,-11
transposec · db · d · eb · e · f · gb · g · ab · a · bb · bThe key your instrument is written in. A B♭ trumpet playing its written A sees A, not the concert G it sounds.transpose=bb
modemic · toneWhich way round the tuner works: `mic` listens to you, `tone` plays a reference note for you to tune to by ear.mode=tone
noteC0 – B8, e.g. A4, E2, Bb3The reference-tone note, in scientific pitch notation, always at concert pitch — it does not move when `transpose` does. Takes effect when the tuner is in, or is switched into, `mode=tone`.note=E2
tol1–15 centsHow many cents either side of the note still count as in tune — the width of the green. A guitar lesson lives at the default 10; a piano technician or a string quartet works at 3, and sending that number is most of what "tune it properly" means.tol=5
namingletters · numbersNote names as letters (C, D, E) or as movable scale degrees (1–7). The numbers are the ear-training display, and they need `nkey` to say which note is 1.naming=numbers
nkeyc · db · d · eb · e · f · gb · g · ab · a · bb · b (c#, cs and C♯ are read too)Which note is "1" when `naming=numbers`. Sent whenever the numbers are, because a degree without a key is not a note.nkey=g
dirdown · upWhich way the note ruler runs, left to right: `down` is high-to-low (the default), `up` is low-to-high. The cents indicator follows it, so sharp is always the side the notes rise toward.dir=up

note is always a concert pitch, so it does not move when transpose does — note=A4 is 440 Hz at hz=440 whatever instrument the tuner is set for. Sharps can be written A#4, A♯4 or As4, flats Bb3 or B♭3; a copied link escapes the sharp as %23 because a raw # would end the URL.

root and cents are what make a temperament a tuning rather than a name. Vallotti on C and Vallotti on D put the wolf in different keys, so a historical temperament always travels with its root; temperament=custom always travels with the twelve offsets themselves, because otherwise it would arrive meaning whatever the reader happened to have typed into that grid last.

The four display settings behave differently on purpose. hz, temperament, root, cents, transpose, mode and note are always written into a copied link, because they are what “in tune” means and a reader must not be quietly left at their own concert pitch. tol, naming, nkey and dir are written only when you have changed them — they are preferences of the person looking at the screen, and pushing a reader back to letters because the sender never touched the control would be taking something away rather than sending something. All four are read whenever they appear.

One setting is deliberately not a parameter at all: sensitivity. It describes a room and a microphone, not a tuning, and a link that quietly turned somebody’s gate up or down would be changing the one setting whose right value only they can know. The metronome’s volume is left out for the same reason.

A violin tuner at A=442, the pitch most European orchestras tune to.

Straight to the reference tone for a guitar’s low E — no microphone needed.

Baroque pitch in Vallotti — a semitone below modern, unequal by design.

An alto sax reading its own written notes rather than concert pitch.

The same baroque pitch, but rooted on D — which is what decides where Vallotti’s pure thirds and its wolf actually fall.

A technician’s tolerance: the green closes to ±3 cents, where a piano is either in tune or is not.

Scale degrees instead of letters, with G as 1, on a ruler that runs low to high — the ear-training layout.

Every tuner parameter at once, in the order a copied link writes them — the template to edit rather than to memorise.

The kalimba tools

Three kalimba tools take parameters, on the same terms as everything above: optional, independent, and ignored when they are not a value the tool can use. Two of them live inside the guides they apply — the retune planner in the alternate-tunings guide and the buzz diagnostic in the buzz guide — and scroll themselves into view when a link arrives carrying their parameters. They are worth linking with because the answer is the thing worth sending — “your F4 has to move 1.7 mm” is a link, not a paragraph.

Retune planner — /blog/kalimba-alternate-tunings

ParameterAcceptsWhat it doesExample
size7 · 8 · 10 · 17 · 21Which kalimba. The tine count, so `17` is the standard instrument and `21` the one with the four bass tines.size=21
fromC · B · Bb · A · G · F · DThe key the instrument is in now.from=C
toC · B · Bb · A · G · F · DThe key you want it in.to=G
modesignature · transposeWhich job. `signature` keeps the instrument in its own register and moves only the tines whose accidental changes; `transpose` moves every tine and turns it into the same instrument at a different pitch.mode=signature
len3–200 mm, one decimalMeasured free length of the centre tine. Give it and every millimetre figure becomes arithmetic on your measurement instead of a prediction about steel.len=61.2

The commonest kalimba retune there is: a 17-key from C to G major, which is two tines.

A 21-key to D major, with the centre tine measured — every millimetre figure then scales off that instead of off an assumption about steel.

Tine length — /reference/kalimba-tine-length

ParameterAcceptsWhat it doesExample
len3–200 mm, one decimalFree length of the tine — bridge to tip, the part that vibrates. The one measurement the retune direction needs.len=61.2
thick0.2–5 mm, two decimalsThickness of the steel. Typical factory stock is 1.0–1.2 mm; thicker sounds higher at the same length.thick=1.2
matspring-steel · stainless · brass · phosphor-bronzeWhat the tines are made of. Only the two directions that involve the material read it — the millimetres a retune needs do not depend on it at all.mat=brass
noteC0 – B8, e.g. C4, F3The note the tine sounds now, in scientific pitch notation.note=F4
targetC0 – B8, e.g. Gb4, A4The note you want it to sound. With `note` and `len`, this is the millimetre answer. Spelled flat in the example on purpose: a raw `#` ends a URL and starts the fragment, so the sharp of the same pitch has to be written `F%234` (or `Fs4`) to survive being sent. All four spellings are read.target=Gb4

Which of the page’s two directions opens is read off the parameters rather than named by one of its own: note and target together are the move question, while thick or mat without note is the predict-a-pitch question. A link is about the instrument, not about our tabs.

How far a 48 mm F4 tine has to move to become an F♯ — the one tine a C-to-G retune is about.

What a 61.2 mm brass tine actually sounds, which is a long way below the same geometry in steel.

Buzz diagnostic — /blog/kalimba-buzzing-fix

ParameterAcceptsWhat it doesExample
stepa step id from the diagnostic pathWhich step of the buzz diagnostic to open on. Every step has one, so an answer to somebody else’s question is a link rather than a description.step=shim

step is validated against the diagnostic tree itself, so a link can only ever point at a step that exists and a stale bookmark opens the first question rather than nothing.

Straight to the paper shim — and to the cost of it that most guides leave out.

Playable instruments — /play/…

The playable instruments take three parameters: two that say which instrument is in front of you, and song, which loads a melody from the public-domain library so a printed tabcan open ready to play. The values are each instrument’s own: a kalimba’s sizeis a tine count, a handpan’s is a scale name, an oud’s is a tuning tradition — so the table below is the kalimba’s, and every other player publishes its own set in the controls above its board.

ParameterAccepts (on /play/kalimba)What it doesExample
size7 · 8 · 10 · 17 · 21Which size of the instrument is drawn. The values are the instrument's own — tine counts for a kalimba, scales for a handpan, sizes for a harp — so a link that names one the page does not have opens the page's default rather than an empty board.size=7
keyC · B · Bb · A · G · F · DWhich key the instrument is tuned to. Case-insensitive when read; written back in the spelling a musician would use.key=C
songa song slug from the public-domain libraryWhich library song to load, ready to play or practise. A song the chosen size cannot reach still loads, and the page names the notes it is missing. Tabs you write yourself travel in the link’s #fragment instead, never here.song=hot-cross-buns

What is played on the instrument does not travel here. A tab you write is encoded into the URL fragment by the Share button in the editor, and a fragment is never sent to a server — so an arrangement of a song somebody else wrote is not uploaded, not stored and not served by this site. The link is the only copy. That is a deliberate line, and these two parameters sit on the near side of it.

A 21-key kalimba tuned to G, which is the instrument most alternate-tuning guides are written for.

The handpan in E Amara — a scale rather than a size, because that is what a handpan's variants are.

The 34-string lever harp with its levers set for F major.

Other languages, same parameters

The localized tuners are real pages at their own addresses, not translations layered over an English one, so the query string reaches them untouched. The parameters themselves are never translated — a German player and an Arabic-speaking one can send each other the same link and it means the same thing on both ends.

The German guitar tuner, at 442 Hz, on the low E reference tone.

The Arabic oud tuner, sounding the D course.

Notes for anyone linking to this from their own site

  • Links are stable. These parameter names are part of the site’s public surface now; new ones may be added, but an existing one will not change meaning underneath a link somebody already published.
  • Order does not matter when reading. A copied link writes them in the order of the tables above, and re-copying an already-canonical link gives back exactly the same string.
  • The embeddable tuner takes them too — see the embed page for the iframe snippet, and add the query to its src.
  • Nothing is tracked per link. There is no redirect, no shortener and no record that a link was opened.

Frequently asked questions

What happens if a parameter is wrong or out of range?

It is ignored, and that setting falls back to whatever your browser had stored — or to the default if it had nothing. Nothing errors and nothing blanks out. A link that arrives truncated or mangled still opens a working tool; you just get fewer of the settings the sender meant to send. Out-of-range values are dropped rather than clamped on purpose: being handed 1000 BPM because a link said 5000 would be worse than being handed the tempo you already had, because you would have no way to tell which one you were looking at.

Do the parameters override my own saved settings?

Yes, on arrival — a link is an explicit instruction from whoever sent it, and your stored settings are a memory of what you did last, so the link wins. Anything the link does not mention is left exactly as you had it. Once the page is open, changing a control updates the address bar, so the link in it is always the link worth sending.

Do they work on the instrument and non-English pages?

Yes. Every tuner page runs the same tuner, so /tuner/guitar, /de/stimmgeraet/gitarre and /ar/tuner/oud all take the same parameters as the front page. Nothing about the parameters is translated — hz, note names and temperament slugs are the same everywhere, which is what makes a link sendable between people who do not share a language.

Is anything stored on your servers when I share a link?

No. The settings are in the link itself — there is no short-link service, no database row and no account. Nothing is uploaded, which also means a link cannot expire or be revoked: whoever has it has the setup.

Why does my copied link say note=A%234 instead of note=A#4?

Because a raw # ends the URL and starts the fragment, so it has to be escaped as %23 to survive being sent. Both spellings are accepted when reading, and A#4, A♯4, As4 and Bb4 all work if you are writing one by hand.

Why does a temperament need a root note in the link?

Because a temperament is a pattern of twelve offsets and the root is where that pattern starts. Vallotti on C and Vallotti on D are different tunings — the pure thirds land in different keys and so does the wolf — so a link that named the temperament and not the root would arrive meaning whatever root the reader happened to have set. Equal temperament is the exception and sends no root: it is the same in every key, which is the whole point of it. The Custom temperament goes one further and sends its twelve cent offsets as `cents`, because the name alone would arrive meaning whatever that browser last had typed into the grid.

Can a link set up a practice drill, not just a tempo?

Yes. `speed=80-140x5/4` is the speed trainer — climb from 80 to 140, five BPM at a time, every four bars — and `140-80x5/4` ramps down, which is the harder and more useful half of the same drill. `gap=4/2x5` is the gap trainer — play four bars, sit out two, five times, closing with one more bar of click — and `gap=2/2` without the `x` repeats until you stop it. `poly=3` adds a second pulse across the bar, `timer=10` stops the metronome after ten minutes, and `flash=1` flashes the panel on every beat. None of them is remembered between visits: a drill is something you are doing now rather than a preference, so a link is the only thing that switches one on — and that is exactly what makes them worth sending to a student.

Is there anything a link cannot carry?

Two things, both left out on purpose. The tuner’s microphone sensitivity and the metronome’s volume describe a room, a pair of headphones and a microphone — not a tuning or a tempo — and a link that quietly turned somebody’s gate up or their volume down would be changing the one setting whose right value only they can know. Everything else on both tools travels.

Can I link to the metronome without setting everything?

Yes — every parameter is optional and they are independent. ?bpm=92 on its own changes only the tempo. The one place the parameters interact is the length of the bar: beats wins if you give it, then the top of sig, then the number of digits in accents, so ?accents=2002002 alone gives you a seven-beat bar.

Try it

Open the metronome, set it the way you want it, and use “Share this practice” at the foot of the panel.

Open the metronome