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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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