Transposing tempos
If you have a track in one of the following common tempos, and want to pitch it up or down by a few semitones, changing its key and tempo proportionally, this table will tell you its new tempo.
If you're adventurous, you can sidestep this whole issue by using what I like to call pitched tempos.
Tempo (BPM) | -2 semitones | -1 semitone | +1 semitone | +2 semitones |
---|---|---|---|---|
80 | 71.272 | 75.510 | 84.757 | 89.797 |
85 | 75.726 | 80.229 | 90.054 | 95.409 |
90 | 80.181 | 84.949 | 95.352 | 101.022 |
95 | 84.635 | 89.668 | 100.649 | 106.634 |
100 | 89.090 | 94.387 | 105.946 | 112.246 |
105 | 93.544 | 99.107 | 111.244 | 117.859 |
110 | 97.999 | 103.826 | 116.541 | 123.471 |
115 | 102.453 | 108.546 | 121.838 | 129.083 |
120 | 106.908 | 113.265 | 127.136 | 134.695 |
125 | 111.362 | 117.984 | 132.433 | 140.308 |
130 | 115.817 | 122.704 | 137.730 | 145.920 |
135 | 120.271 | 127.423 | 143.028 | 151.532 |
140 | 124.726 | 132.142 | 148.325 | 157.145 |
Source code
I tabulated these using a simple C program, transpose-bpm.c
:
/* BPM transposer, for ANSI C, by Zoe Blade, 2024-04-04 */ #include <stdio.h> #include <stdlib.h> #include <math.h> void transposeBeatsPerMinute(int beatsPerMinute) { int semitones; /* * The new tempo = the old tempo * 2 ^ (the pitch change in semitones / 12) */ for (semitones = -2; semitones < 3; semitones++) { printf("%3d\t%+3d\t%7.3f\n", beatsPerMinute, semitones, beatsPerMinute * pow(2, semitones / 12.0)); } return; } int main(int argc, char *argv[]) { int beatsPerMinute; printf("BPM\tSts\tBPM\n"); printf("===\t===\t=======\n\n"); if (argc == 1) { for (beatsPerMinute = 80; beatsPerMinute < 145; beatsPerMinute += 5) { transposeBeatsPerMinute(beatsPerMinute); } } else { transposeBeatsPerMinute(atoi(argv[1])); } return 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