Skip to content

Markers and tempo ​

The ruler holds the song's markers, above the bar numbers, and its tempo changes, beside the bar each one starts on. Both are part of the timeline state, so they undo, save and load with the tracks.

Press Space to play. Click the ruler to move the playhead, then split and drag the pieces. Drag on the ruler to pick a range to loop, or on the tracks to select clips. Drag the Keys volume curve, and right-click the ruler to add a marker or tempo change. The library button opens the browser: listen to a sound, then drag it onto a track. Arm a track with R and press the red button to record over the music. The sliders button opens the mixer, where + adds an Echo or Drive plugin to a track. Double-click the Lead or Beat clip to edit its notes in the piano roll, where Sound opens its instrument's knobs.

Markers ​

Markers name places in the song, like Verse or Chorus.

GestureWhat it does
Double-click above the bar numbersAdds a marker there and puts its name up for editing
Right-click the ruler, Add marker hereThe same, from a menu
Click a markerMoves the playhead to it
Drag a markerMoves it, snapping to the grid; hold Alt to move freely
Double-click a marker, or right-click itRename it, or open its menu to rename or delete it

From code: addMarker(time?, name?), updateMarker(id, { name?, time?, color? }), removeMarker(id) and editMarkerName(id). markers lists them by time.

Tempo and meter changes ​

The first tempo and meter come from the grid (grid: { bpm, meter }) and are changed in the transport display. A tempo change takes over from a bar later in the song:

GestureWhat it does
Right-click the ruler, Add tempo change at this barAdds a change at the nearest bar, keeping the tempo there
Click a changeSet its tempo, pick a meter (2/4 to 12/8) or delete it
Drag a changeMoves it from bar line to bar line

Each change starts a new section of the grid. Bar numbers, grid lines, snapping, the transport display, loops, the metronome and the tempo sent to plugins all follow the section under them. With the playhead past a change, the display's tempo and meter edit that change.

Clips keep their times in seconds when the tempo changes, so audio never moves or stretches.

From code: addTempoChange(time?, bpm?, meter?), updateTempoChange(id, { time?, bpm?, meter? }) and removeTempoChange(id). On the grid, sections lists every stretch of one tempo, and sectionAt(time), position(time), barTime(bar), bars(from, to) and beats(from, to) work across them, as do quarters(time) and timeAtQuarters(quarters), which convert between seconds and quarter notes from the start.

The ruler grows a little taller to fit the markers. Pass markers: false or tempoTrack: false to leave either out, and rulerLabels to rename what they show.

Released under the MIT License.