Zoë Blade's notebook

BPM to milliseconds

For working out things like delay lengths, it's useful to be able to convert BPMs into milliseconds. Here are some popular examples:

Simple metre

Tempo 1/16 (♬) 2/16 (♪) 3/16 (♪.) 4/16 (♩)
80 BPM 187.50 ms 375.00 ms 562.50 ms 750.00 ms
85 BPM 176.47 ms 352.94 ms 529.41 ms 705.88 ms
90 BPM 166.67 ms 333.33 ms 500.00 ms 666.67 ms
95 BPM 157.89 ms 315.79 ms 473.68 ms 631.58 ms
100 BPM 150.00 ms 300.00 ms 450.00 ms 600.00 ms
105 BPM 142.86 ms 285.71 ms 428.57 ms 571.43 ms
110 BPM 136.36 ms 272.73 ms 409.09 ms 545.45 ms
115 BPM 130.43 ms 260.87 ms 391.30 ms 521.74 ms
120 BPM 125.00 ms 250.00 ms 375.00 ms 500.00 ms
125 BPM 120.00 ms 240.00 ms 360.00 ms 480.00 ms
130 BPM 115.38 ms 230.77 ms 346.15 ms 461.54 ms
135 BPM 111.11 ms 222.22 ms 333.33 ms 444.44 ms
140 BPM 107.14 ms 214.29 ms 321.43 ms 428.57 ms

Compound metre / triplets

Tempo 1/12 (♪3) 2/12 (♩3) 3/12 (♩)
80 BPM 250.00 ms 500.00 ms 750.00 ms
85 BPM 235.29 ms 470.59 ms 705.88 ms
90 BPM 222.22 ms 444.44 ms 666.67 ms
95 BPM 210.53 ms 421.05 ms 631.58 ms
100 BPM 200.00 ms 400.00 ms 600.00 ms
105 BPM 190.48 ms 380.95 ms 571.43 ms
110 BPM 181.82 ms 363.64 ms 545.45 ms
115 BPM 173.91 ms 347.83 ms 521.74 ms
120 BPM 166.67 ms 333.33 ms 500.00 ms
125 BPM 160.00 ms 320.00 ms 480.00 ms
130 BPM 153.85 ms 307.69 ms 461.54 ms
135 BPM 148.15 ms 296.30 ms 444.44 ms
140 BPM 142.86 ms 285.71 ms 428.57 ms

Source code

I tabulated these using a simple C program, bpm-to-ms.c:

/* BPM to MS converter, for ANSI C, by Zoe Blade, 2015-12-06 */

#include <stdio.h>
#include <stdlib.h>

void beatsPerMinuteToMilliseconds(int beatsPerMinute) {
    float millisecondsPerBeat;
    int sixteenths;

    /*
     * MS per beat = 60 seconds / BPM * 1000 MS in a second
     *             = 60000 MS per minute / BPM
     */

    millisecondsPerBeat = 60000.0 / beatsPerMinute;

    for (sixteenths = 1; sixteenths < 17; sixteenths++) {
        printf("%3d\t   %2d\t%7.2f\n", beatsPerMinute, sixteenths, millisecondsPerBeat / 4 * sixteenths);
    }

    return;
}

int main(int argc, char *argv[]) {
    int beatsPerMinute;

    printf("BPM\t16ths\tMS\n");
    printf("===\t=====\t=======\n\n");

    if (argc == 1) {
        for (beatsPerMinute = 80; beatsPerMinute < 145; beatsPerMinute += 5) {
            beatsPerMinuteToMilliseconds(beatsPerMinute);
        }
    } else {
        beatsPerMinuteToMilliseconds(atoi(argv[1]));
    }

    return 0;
}

To use compound instead of simple metre, replace 60000.0 with 80000.0.

C programs: BPM to milliseconds

Electronic music making tables: BPM to milliseconds | DX21 guide | MicroVerb III guide | Pitched tempos | Pitches | S1000 page map | ST MIDI sequencer timeline