Skip to content

Tempo ​

Your project has one tempo, and it lives in the footer. Everything that cares about tempo reads the same number.

Click it to type a tempo, or press TAP and tap it in. The edit applies when you press Enter, click the tick, or click away. Esc leaves it alone.

What follows it ​

Every plugin you host. A tempo-matched delay, an arpeggiator, a tremolo or an LFO now runs at your song's tempo rather than at whatever it assumed. Plugins that sync to the host get the tempo, the time signature and the musical position.

If a plugin still does not follow

Check the plugin's own sync control first. Many delays are set to milliseconds rather than note values by default, and a plugin in milliseconds mode will never follow any host. Some effects built into amp sims have no sync option at all.

Every Metronome card. Change the tempo in the footer and the card follows, and vice versa: drag the card's BPM knob and the footer follows. They are two views of one value, so they cannot disagree.

On the Stage ​

Two bindings put tempo on your performer surface.

Tap tempo binds to a pad, a button, an LED button or a sustain pedal. Each press is one tap. A control bound to tap also flashes on the beat, accented on the first beat of the bar, so it doubles as a click you can see without hearing one.

Master tempo binds to a label, which shows the tempo. Put {bpm} anywhere in the label's text and it fills in, so ♩ {bpm} reads as ♩ 128.

Knobs and faders deliberately cannot bind to tempo. Thirty to three hundred BPM across one sweep is about three BPM per degree, which is not a control anyone can set a tempo with on a stage.

In a setlist ​

A song's ChordPro sheet can carry a tempo:

text
{title: Opener}
{tempo: 128}

Recalling that song sets the tempo. A song with no {tempo:} directive leaves the tempo alone rather than resetting it, so you only have to put it on the songs that need it.

From a script ​

ts
tempo.get();            // 128
tempo.set(140);         // sets the project tempo
tempo.beatsPerBar();    // 4

onTempoChange((bpm, beatsPerBar) => {
  console.log('now at', bpm);
});

Unsaved changes ​

Setting the tempo yourself marks the project unsaved, because it is part of your rig and you would not want to lose it.

A tempo that arrives from a song recall or from a script does not, for the same reason riding the master volume does not: stepping through a setlist should not light the unsaved badge on every song.