#include <stn_decomposer.hpp>
Public Attributes | |
| int | num_bins = 1025 |
| fft_size/2 + 1 | |
| int | time_median = 9 |
| odd; frames for the horizontal (tonal) median | |
| int | freq_median = 9 |
| odd; bins for the vertical (transient) median | |
| float | beta = 2.0f |
| Soft-mask separation factor (Fitzgerald β): the bin is assigned to a class when that class's filtered magnitude exceeds the other by this factor. | |
| bool | causal = false |
| Align the masks to the NEWEST pushed frame instead of the ring's center frame. | |
| float pulp::signal::StnConfig::beta = 2.0f |
Soft-mask separation factor (Fitzgerald β): the bin is assigned to a class when that class's filtered magnitude exceeds the other by this factor.
1.0 = binary Wiener-style split at the crossover.
| bool pulp::signal::StnConfig::causal = false |
Align the masks to the NEWEST pushed frame instead of the ring's center frame.
The centered evaluation is less biased (it sees future frames) but lags the input by (time_median-1)/2 frames, so a caller that applies the mask to the frame it just pushed (e.g. the noise- morph split in RealtimePitchTimeProcessor) gets a STALE mask: at a transient onset the newest frame holds the transient while the mask still describes a pre-onset (mostly-noise) frame, so the onset's broadband energy is misrouted into the noise path and decohered. Causal mode evaluates the time-median as a trailing window ending at the newest frame and the freq-median on that same frame, so the mask and the frame it is applied to are aligned (latency 0). This is the standard real-time HPSS approximation (trailing vs centered median).
| int pulp::signal::StnConfig::freq_median = 9 |
odd; bins for the vertical (transient) median
| int pulp::signal::StnConfig::num_bins = 1025 |
fft_size/2 + 1
| int pulp::signal::StnConfig::time_median = 9 |
odd; frames for the horizontal (tonal) median