Tempo Change

Tempo Change

A tempo_change object represents a control point in a tempo curve. A tempo curve is a series of points in time, each specifying a tempo at that time. The tempo at any intermediate time is the linear interpolation of the previous and next points at the specified time. For example, to create an accelerando or ritardando, set two tempo changes at different tempi at different points in time.

NOTE: The time for each tempo_change is relative to the start of the active span. This can be thought of as “the event happens at time X of the span.”

Data Item Type Required/ Optional Description
time number required The time, in seconds, at which the tempo exists
tempo number required The tempo, in beats per minute, active at this time

Example:

{
    "time": 10.0,
    "tempo": 90.0
}

To create an abrupt change in tempo, place a tempo change with the previous tempo at the time to change tempo followed by a second tempo change at the new tempo. Ensure the changes occur in order, the new tempo should start slightly after the original tempo ends.

Example – a sudden change from 60 to 120 at time 15:

[
    {
        "time": 14.999,
        "tempo": 60
    },
    {
        "time": 15,
        "tempo": 120
    }
]

Example – a 5 second accelerando from 90 to 120 starting at time 15:

[
    {
        "time": 15,
        "tempo": 90
    },
    {
        "time": 20,
        "tempo": 120
    }
]