BPM to milliseconds
For working out things like delay lengths, it's useful to be able to convert tempos in BPMs into lengths of time in milliseconds. Here are some popular examples:
Simple metre
Tempo (BPM) | 1/16 (♬) | 2/16 (♪) | 3/16 (♪.) | 4/16 (♩) |
---|---|---|---|---|
80 | 187.50 | 375.00 | 562.50 | 750.00 |
85 | 176.47 | 352.94 | 529.41 | 705.88 |
90 | 166.67 | 333.33 | 500.00 | 666.67 |
95 | 157.89 | 315.79 | 473.68 | 631.58 |
100 | 150.00 | 300.00 | 450.00 | 600.00 |
105 | 142.86 | 285.71 | 428.57 | 571.43 |
110 | 136.36 | 272.73 | 409.09 | 545.45 |
115 | 130.43 | 260.87 | 391.30 | 521.74 |
120 | 125.00 | 250.00 | 375.00 | 500.00 |
125 | 120.00 | 240.00 | 360.00 | 480.00 |
130 | 115.38 | 230.77 | 346.15 | 461.54 |
135 | 111.11 | 222.22 | 333.33 | 444.44 |
140 | 107.14 | 214.29 | 321.43 | 428.57 |
Compound metre / triplets
Tempo (BPM) | 1/12 (♪3) | 2/12 (♩3) | 3/12 (♩) |
---|---|---|---|
80 | 250.00 | 500.00 | 750.00 |
85 | 235.29 | 470.59 | 705.88 |
90 | 222.22 | 444.44 | 666.67 |
95 | 210.53 | 421.05 | 631.58 |
100 | 200.00 | 400.00 | 600.00 |
105 | 190.48 | 380.95 | 571.43 |
110 | 181.82 | 363.64 | 545.45 |
115 | 173.91 | 347.83 | 521.74 |
120 | 166.67 | 333.33 | 500.00 |
125 | 160.00 | 320.00 | 480.00 |
130 | 153.85 | 307.69 | 461.54 |
135 | 148.15 | 296.30 | 444.44 |
140 | 142.86 | 285.71 | 428.57 |
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 | Transposing tempos
Electronic music making tables: BPM to milliseconds | DX21 guide | Interval | MicroVerb III guide | Pitched tempos | Pitches | S1000 page map | ST MIDI sequencer timeline | Transposing tempos