Level-independent transient detector: the normalized excess of a fast envelope follower over a slow one.
More...
template<typename SampleType = float>
class pulp::signal::TransientDetectorT< SampleType >
Level-independent transient detector: the normalized excess of a fast envelope follower over a slow one.
out = max(0, (fast - slow) / max(slow, epsilon))
The division is what makes it level-independent: the same musical gesture at -6 dBFS and at -30 dBFS produces the same output, because both followers scale with the input and the ratio does not. An absolute-difference detector needs its threshold re-tuned for every source; this one does not.
RT contract: two BallisticsFilterT instances of scalar state. process() and reset() allocate nothing.
USE: input duckers; adaptive transient shapers; "how hard was that hit" as a modulation source; striking an LpgT from a live input's attacks so an effect breathes with the playing rather than with a fixed clock.