BPM2MS2HZ — User Manual

Web app + ReaScript for REAPER // Version 1.0.0 // TimTechlor

BPM2MS2HZ turns the tempo into numbers you can type into a plug-in: every note value from 1/1 to 1/32 — plain, dotted and triplet — as milliseconds and Hertz, plus whole bars as seconds. For delay times, LFO rates, release and sidechain settings. It runs in your browser with no install, and as a script inside REAPER that follows the project tempo.

01Three editions

All three editions compute the same numbers with the same formulas. They differ only in where the tempo comes from and how you read the result.

EditionTempo fromGet it
Web editiontyped in, slider or TAPtimtechlor.de/BPM2MS2HZ — runs in any browser, nothing to install
REAPER window (ReaImGui)the project tempo, or a manual tempoReaPack package BPM2MS2HZ Calculator (section 02)
Console editionthe project tempoTT_BPM_Converter.lua, download from the web edition; prints the table into the REAPER console
BPM2MS2HZ web edition in popup mode at 128 BPM: tempo field and slider on top, below the console table with note values 1/1 to 1/32 (plain, dotted, triplet) in milliseconds and Hertz and whole bars in seconds
WEBThe web edition in popup mode at 128 BPM. Tempo on top, the console table below: note values in ms and Hz, whole bars in seconds and Hz. The layout reproduces the console output of the REAPER script line by line.

02Install

The web edition needs nothing. For REAPER:

  1. Install ReaPack (one file into the UserPlugins folder, restart REAPER).
  2. Extensions → ReaPack → Import repositories…, paste
    https://raw.githubusercontent.com/timtechlor/reapack-TimTechlor/main/index.xml
  3. Extensions → ReaPack → Browse packages, search for BPM2MS2HZ Calculator, install, Apply.
  4. The window edition needs ReaImGui (“ReaImGui: ReaScript binding for Dear ImGui”, repository ReaTeam Extensions, which ReaPack ships with). Install it the same way and restart REAPER.
  5. Run it from Actions → Show action list → search “BPM2MS2HZ”. Bind it to a key or a toolbar button if you use it often.
The console edition has no dependencies: Actions → Show action list → New action → Load ReaScript… and pick TT_BPM_Converter.lua. Each run clears the console and prints the table for the current project tempo.

03Reading the table

ms  = 60000 / BPM × beats      (1 beat = 1 quarter note)
Hz  = 1000 / ms
LabelMeaningFactor
1/4plain note value, here one beat×1
1/4.dotted×1.5
1/4Ttriplet×2/3
1 barwhole bars, as seconds4 beats per bar in 4/4

The note table runs from 1/1 to 1/32. The web and console editions list bars from 1 to 32 and assume 4/4; the REAPER window goes up to 64 bars and lets you pick the time signature.

Example at 128 BPM: one beat is 60000 / 128 = 468.75 ms, so 1/4 reads 468.8 ms and 2.133 Hz, and one bar is 1.875 s.

04In practice

Delay times

Read the MS column and type the value into a delay that has no host sync. At 128 BPM the dotted eighth (1/8., 351.6 ms) is the classic ping-pong spacing; a plain 1/4 is 468.8 ms.

LFO rates

The HZ column is the LFO speed that locks to the grid: at 128 BPM, 1/4 = 2.133 Hz and 1/16 = 8.533 Hz. Auto-pan, tremolo and filter sweeps then move with the track instead of drifting against it.

Release and sidechain

Whole bars come as seconds: 1 bar = 1.875 s at 128 BPM. A compressor release of one bar keeps the pump breathing with the track instead of choking it; for a tight kick duck, start from the 1/8 or 1/16 value.

05Web edition

06REAPER window

07Troubleshooting