|
| static constexpr double | kScanHz = 6.9 |
| | [design parameter] scanner rate 6.9 Hz, range 6.0 .
|
| static constexpr double | kScanHz50 = kScanHz * 50.0 / 60.0 |
| | [design parameter] the 50 Hz-mains rate, 5.75 Hz, range 4.5 .
|
| static constexpr double | kLineDelayMs = 1.0 |
| | [design parameter] total line delay 1.0 ms, range 0.6 .
|
| static constexpr int | kScannerTaps = 18 |
| | [design parameter] 18 taps, range 12 .
|
| static constexpr double | kV1 = 0.33 |
| | [design parameter] the three vibrato depths, as fractions of the line.
|
| static constexpr double | kV2 = 0.66 |
| static constexpr double | kV3 = 1.00 |
| static constexpr double | kChorusMix = 0.5 |
| | [design parameter] chorus dry blend 0.5, range 0 .
|
| static constexpr double | kMaxLineDelayMs = 1.4 |
| | Parameter-range maxima used for buffer sizing.
|
| static constexpr double | kWorstCaseGain = 1.5 |
| | The measured constructive-sum bound, in linear gain.
|
template<typename SampleType = float>
class pulp::signal::ScannerVibratoT< SampleType >
The motor-scanned tapped delay line.
template<typename SampleType = float>
The peak fractional pitch shift this setting produces, |Δf/f|.
A linearly ramping delay is a CONSTANT pitch shift, so the depth follows from the slope alone: the scanner traverses depth·line seconds of delay in each half period, giving Δf/f = depth·line / (1/(2·rate)). Published here so the acceptance test can predict the shift from the shipped constants instead of restating a number.
template<typename SampleType = float>
[design parameter] scanner rate 6.9 Hz, range 6.0 .
. 7.5 Hz.
Honest-gap note: the documented Hammond vibrato sweeps at roughly 7 Hz and the scanner is geared off the synchronous motor, so the rate is mains-locked rather than free. The exact figure is model- and mains-dependent and was not pinned to a verified primary source, so this is a calibration constant, not a citation.
template<typename SampleType = float>
[design parameter] the 50 Hz-mains rate, 5.75 Hz, range 4.5 .
. 6.5 Hz. Derived rather than asserted: kScanHz · 50/60, the mains-ratio scaling of the same motor gearing, because the European rate was not independently verified either and inventing a second number would be worse than scaling the first.
template<typename SampleType = float>
[design parameter] 18 taps, range 12 .
. 24.
This is a build-time calibration constant and deliberately NOT a live parameter, because it does not appear in the shipped arithmetic at all — see process for why. It records how many taps the physical line box is being taken to have; the range is bounded by "enough that the tap
crossfade is indistinguishable from a continuous sweep".
template<typename SampleType = float>
The measured constructive-sum bound, in linear gain.
Feedforward, so this is dry + wet peaking together, not a loop gain. The suite's sweep measures 1.16 across the whole mode and parameter space; this is that maximum rounded up, with the headroom covering grid coarseness rather than covering a guess. [design parameter] default 1.5 (+3.5 dB), range 1.2 .. 4.0.