Univibe-style phase vibrato: four allpass stages at deliberately unequal corners, all swept together by one lamp-and-photocell control chain.
More...
|
| static constexpr int | kStageCount = 4 |
| static constexpr std::array< double, kStageCount > | kStageBaseHz {200.0, 430.0, 900.0, 1900.0} |
| | Staggered base corners, roughly a geometric 2.1x spread across the guitar midrange.
|
| static constexpr double | kDefaultRateHz = 3.0 |
| | [design parameter] default 3.0 Hz, range 0.3 .. 8 Hz.
|
| static constexpr double | kMinRateHz = 0.3 |
| static constexpr double | kMaxRateHz = 8.0 |
| static constexpr double | kDefaultDepth = 0.7 |
| | [design parameter] default 0.7, range 0 .. 1.
|
| static constexpr double | kSweepOctaves = 1.0 |
| | [design parameter] default 1.0 octave, range 0.5 .. 2.0.
|
| static constexpr double | kVactrolRiseMs = 0.8 |
| | Vactrol timings for a lamp-driven photocell.
|
| static constexpr double | kVactrolFallMs = 35.0 |
| static constexpr double | kControlExponent = 1.2 |
| | Control-to-corner-scale shaping exponent, the same c^k convention the lowpass gate uses.
|
| static constexpr double | kVibratoMix = 0.9 |
| | Wet proportion in vibrato mode — near-total, mono.
|
| static constexpr double | kChorusBlend = 0.5 |
| | Wet proportion on the right output in chorus mode; the left stays dry.
|
| static constexpr double | kSinusoidalGainBound = 1.0 |
| | As PhaseVibratoT::kSinusoidalGainBound, and for the same reason.
|
template<typename SampleType = float>
class pulp::signal::UniVibeT< SampleType >
Univibe-style phase vibrato: four allpass stages at deliberately unequal corners, all swept together by one lamp-and-photocell control chain.
Two things make this not a phaser and not PhaseVibratoT:
- The four corners are staggered, so some part of the band is always sitting in a region of strong phase shift no matter where the sweep currently is. The stagger is documented topology; the actual four frequencies below are design parameters, because no standardised capacitor set exists across published circuit descriptions, so the model uses its own explicit calibration rather than any one clone's values.
- The control passes through a vactrol, not straight from the LFO. The photoresistor's conductance rises in under a millisecond and decays over tens, so the sweep is late arriving and later leaving. That asymmetry is the "loping, behind-the-beat" quality; symmetric would be a phaser.
All four stages move by the SAME multiplicative scale, so the staggered ratios hold at every instant — one dimensionless shape over four base frequencies, not four independently fitted curves.
template<typename SampleType = float>
Staggered base corners, roughly a geometric 2.1x spread across the guitar midrange.
Unequal is the documented fact; these values are [design parameter], defaults with ranges 100-500, 250-900, 500-1800, and 1000-3800 Hz respectively.