Skip to content

Mini-project: inject a master clock/gate to render input-driven ("playable") patches #7

Description

@dommango

Idea (tabled)

The headless render loads a patch and lets it free-run for 10s with no external input. So it only captures self-playing patches (free-running oscillators, drones, self-clocked/generative). Patches that are instruments waiting to be played — gated behind a MIDI keyboard, a stopped sequencer/clock, or a trigger/strike input — emit silence.

Empirically, of the 228 successfully-rendered patches, 137 self-play and 91 are silent (89 of those are literal digital zero). The silent ones skew more complex (median 29 vs 20 modules) and more often contain MIDI-input modules (32% vs 13%). See data/output/patch_playability.json for the split.

Proposed enhancement

Wake up "playable" patches during render by injecting stimulus the same way render_patch.inject_recorder injects the Recorder + gate LFO:

  • Inject a running master clock (pulse/square) and drive common clock inputs (sequencers, clock-divider modules, transport run params).
  • Inject a gate/trigger into trigger-mode voices (drums, Plaits strike, resonator excitation) and envelope gate inputs.
  • Possibly flip run/play params to on where present.

Why it's a mini-project, not a tweak

"Find the clock/gate input" is patch- and module-specific across hundreds of different sequencer/clock/trigger modules (different plugins, different port indices, different conventions). Needs a per-module map of clock/gate input ports (similar to the hand-verified PORT_MAPS), plus heuristics for which inputs to drive. Non-trivial and easy to get wrong (driving the wrong input = garbage or no change).

Value

Would substantially raise the sounding-render yield beyond the ~60% self-playing fraction, unlocking acoustic ground truth for the large class of sequenced/played patches — the more musically interesting ones.

Tabled for a future session. For now we focus on the self-playing set (patch_playability.jsonself_playing).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions