|
| void | prepare (double sample_rate) |
| void | set_refractory_ms (double ms) |
| void | set_thresholds (double high, double low) |
| | Sets the hysteresis window used for all three inputs, so a patch running at ±5 V and one running at 0/1 configure in one call.
|
| void | reset () |
| Frame | process (SampleType run, SampleType reset_in, SampleType clock) |
| | Decodes run, reset and clock levels for one sample.
|
| Frame | process (SampleType run, SampleType reset_in) |
| | Run and reset only, for a caller whose clock edge already arrives as a boolean (a ClockDividerT output, say).
|
template<typename SampleType = float>
class pulp::signal::TransportEdgeT< SampleType >
Converts a run level and a reset level into the (run_high,
reset_edge) pair the sequencers consume, and optionally detects the clock edge alongside them.
It exists so that "what is a reset edge" has exactly one answer in the library. It carries no musical state at all: hand it the same three signals and it produces the same three booleans regardless of which sequencer is downstream.
The reset input gets a refractory window on top of the kit's hysteresis. Hysteresis alone already rejects a clock hovering at the threshold, but a reset jack is often driven by a physical switch or a long cable, where the signal genuinely crosses the window several times in a millisecond. A refractory window is the debounce for that, and it lives here rather than in TriggerDetectT because a clock must never be debounced — a debounced clock silently drops fast subdivisions.
RT contract: as the header. No allocation, no locks.