Skip to content

Drone mode for the Pad (pedal point + cadence retriggers) #7

Description

@philoking

Summary

Extend the Pad into a proper drone / pedal-point voice. Today the Pad is one sustained, voice-led chord tone that moves with each chord (padMode: 'note', with a 'chord' option already in state). Add a mode that holds a fixed root/pedal regardless of chord changes, plus an option to retrigger the pad on a chosen cadence instead of only re-sounding on chord changes.

Why it fits

The held drone and the moving pedal point are core ambient/modular textures, and the Pad is the natural home for them. A pedal tone under shifting harmony is one of the easiest ways to make a long Modular Riffs jam feel intentional and cinematic.

Proposed scope

Pad behaviour (js/generator.js)

  • Add to the existing padMode: pedal (or root) — the Pad locks to the key's tonic (or a chosen scale degree) and ignores chord changes, becoming a drone under the moving parts.
  • Retrigger cadence: instead of only sounding on chord change, optionally re-strike on a selectable pattern — e.g. on 1, on 1 & 3, on every beat, or off (pure sustain). Reuse the existing gate-length control for how long each strike holds.
  • Keep voice-leading behaviour intact for the existing 'note' mode.

UI (js/app.js)

  • Pad ⚙ gains a mode select (note / chord / pedal) and, when retrigger is on, a cadence picker.
  • Optional pedal degree chooser (default tonic) so the drone can sit on the 5th, etc.

Where

js/generator.js (pad generation, retrigger timing), js/app.js (Pad ⚙ controls + state).

Done when

  • Pad can hold a fixed pedal/root that ignores chord changes.
  • Pad can retrigger on a selectable cadence, or sustain.
  • Existing note / chord modes unchanged.
  • Settings persist in presets / JSON.

Open questions

  • The pedal degree should follow key changes automatically — confirm how it interacts with per-section transposition.
  • Retrigger timing under per-part clock divide — define which clock the cadence counts in.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions