Description:
Add native BPM controls as first-class
widget parameters
so any button/stepper/menu can set, step, multiply/divide, or tap tempo with quantized, show-safe behavior—plus quick preset menus (e.g., 90/100/120/128), dotted/triplet ratios, and coarse/fine nudges.
Problem:
Tempo changes live require digging into actions or building custom macros. Common needs—tap tempo, ±1/±0.1 BPM nudges, x2/÷2, dotted (×1.5), triplet (×2/3), or recalling a preset—aren’t available as drop-in widget parameters with guard rails, feedback, or per-page defaults.
Proposed Solution:
  • Widget Parameters (attach to Button/Stepper/Radio/Dropdown):
-
Set BPM (absolute)
,
Nudge ±Δ
(0.1/0.5/1/2/5),
Multiply/Divide
(×2, ÷2, ×1.5, ×2/3, custom),
Cycle Presets
,
Select Preset by Index/Name
,
Tap Tempo
with adaptive averaging.
-
Quantize change
to
Beat/Bar/Loop
; optional
deferred apply
HUD (“Tempo at next bar”).
-
Coarse/Fine modes
via long-press/modifier;
min/max clamp
and “safe range” per page.
  • Preset System:
    Per-project/page
    BPM Preset List
    (named values, e.g.,
    Ballad 72
    ,
    Club 128
    ). Widgets can show a
    BPM menu
    (dropdown/stepper) sourced from this list.
  • Ratios & Math:
    Built-in ratios (×2, ÷2, dotted, triplet, 3/2, 4/3) and custom expressions (e.g.,
    bpm * (swing ? 1.5 : 1)
    ).
  • Tap Tempo Enhancements:
    Weighted moving average, outlier rejection,
    minimum taps
    (2–4),
    timeout reset
    , and optional
    tap quantize
    .
  • Feedback & UI:
    Live
    BPM readout
    token for labels (
    {tempo.bpm}
    ), blink/pulse during apply, and conflict guard when other tempo sources are active.
  • Actions & Variables:
- Actions:
Set BPM
,
Nudge BPM
,
Multiply/Divide BPM
,
Apply BPM Preset
,
Tap Tempo
,
Quantize Tempo Change (on/off)
.
- Vars:
tempo.bpm
,
tempo.targetBpm
,
tempo.changePending
,
tempo.lastTapInterval
,
tempoPresetIndex
.
  • Safety & Integration:
    Works with
    Minimum Count-In
    ,
    Late-Toggle Guard
    ,
    Cycle-Synced Ramps
    ; option to
    lock tempo
    globally; full undo.
Benefits:
  • One-tap, musician-friendly tempo control directly on the canvas.
  • Cleaner layouts (no macro sprawl) and safer, quantized tempo changes on stage.
  • Consistent presets across projects/pages with clear feedback and limits.
Examples:
  • A stepper widget: short press
    ±0.5 BPM
    , long-press
    ±2 BPM
    ; changes apply at the
    next bar
    .
  • A dropdown shows
    BPM Presets
    (
    90 · 100 · 120 · 128
    ); selecting queues the change with a HUD countdown.
  • A “Feel” button toggles
    dotted
    (×1.5) echoes by multiplying BPM-synced delays while
    BPM ÷ 2
    for halftime breakdowns.
  • A tap widget with
    3-tap average
    sets tempo; if tapped < 1/8 beat before the bar, it
    defers to next bar
    to avoid stutters.
This summary was automatically generated by GPT-5 Thinking on 2025-09-26.
Original Post:
Add BPM menu parameters to widgets
I wanted to create a simple halftime and double time button. I assumed this would be easy - but widgets only allow specific BPM info - not concepts like divide and multiply BPM.