I experimenting with making music on Pico-8. One thing I'm confused about is the speed value. How does that Number translate into BPM (Beats per Minute)?
The speed is the amount of "ticks" each note lasts, so a speed of 1 means 1 tick per note and a speed of 16 means 16 ticks per note. Exactly how long a tick is is undocumented, but from my own testing I think it's approximately one 120th of a second (if someone knows the exact value please let me know!).
If you want to convert the speed to BPM you first need to decide how many notes you consider to be a beat (usually 4 or 8). Then you could use the following formula:
bpm = 60 / (speed / (120 / notes_per_beat))
Or as Pico-8 code:
function speed_to_bpm(speed, notes_per_beat) return 60 / (speed / (120 / notes_per_beat)) end print(speed_to_bpm(15, 4)) -- output: 120 |
Hope this helps!
I simplified the equation
BPM=7200/(Notes*Speed)
And here's one for BPM to Speed
Speed=7200/(Notes*BPM)
Using @AdamJ's more precise value of 22,050/183 instead of 120, the simplified formulae are
BPM=7229.50819/(Notes_per_beat*Speed)
Speed=7229.50819/(Notes_per_beat*BPM)
Yes, it's a quibble, but if you are syncing sound and graphics, the 7200 value will cause things to drift out of sync faster. Can also be a factor if you are using PCM as a fifth channel for your music.
Edited. Thanks for the correction @0xFFFF967F.
[Please log in to post a comment]