The four-stage chain for one channel.
More...
#include <diffusion.hpp>
|
| void | prepare (double fs) |
| void | reset () |
| void | update (double character_amount) noexcept |
| | Recompute stage delays and gains for a character amount.
|
| double | process_diffuser (double x, double decorrelation) noexcept |
| | The bare allpass diffuser — the only part safe to RECIRCULATE.
|
| double | process_cloud (double x, double decorrelation) noexcept |
| | The reverb tank, crossfaded in — OUTPUT ONLY, never in the loop.
|
| double | process (double x, double decorrelation) noexcept |
| | One-pass smear for the cross-character output blend: diffuser + cloud.
|
| void | tick_modulation () noexcept |
| | Advance the two anti-metallic LFOs by one sample.
|
The four-stage chain for one channel.
◆ prepare()
| void pulp::signal::chardelay::DiffusionChain::prepare |
( |
double | fs | ) |
|
|
inline |
◆ process()
| double pulp::signal::chardelay::DiffusionChain::process |
( |
double | x, |
|
|
double | decorrelation ) |
|
inlinenoexcept |
One-pass smear for the cross-character output blend: diffuser + cloud.
◆ process_cloud()
| double pulp::signal::chardelay::DiffusionChain::process_cloud |
( |
double | x, |
|
|
double | decorrelation ) |
|
inlinenoexcept |
The reverb tank, crossfaded in — OUTPUT ONLY, never in the loop.
The tank rings longer than a typical loop period, so it must not feed back through the delay line and compose two resonators into net growth. On the output it is excited afresh by every repeat (the cloud still blooms per repeat), but its energy never re-enters the line. Tank decay < 1 and loop feedback < 1 therefore guarantee their own halves of the stability contract independently.
◆ process_diffuser()
| double pulp::signal::chardelay::DiffusionChain::process_diffuser |
( |
double | x, |
|
|
double | decorrelation ) |
|
inlinenoexcept |
The bare allpass diffuser — the only part safe to RECIRCULATE.
An allpass is unity-gain by construction, so the delay's feedback loop can pass repeats through it forever and the always-decays contract survives. decorrelation scales the modulation depth (1.0 left, kStereoDecorr right).
◆ reset()
| void pulp::signal::chardelay::DiffusionChain::reset |
( |
| ) |
|
|
inline |
◆ tick_modulation()
| void pulp::signal::chardelay::DiffusionChain::tick_modulation |
( |
| ) |
|
|
inlinenoexcept |
Advance the two anti-metallic LFOs by one sample.
◆ update()
| void pulp::signal::chardelay::DiffusionChain::update |
( |
double | character_amount | ) |
|
|
inlinenoexcept |
Recompute stage delays and gains for a character amount.
Cheap enough to run at control rate; the odd-sample rounding means the delays step rather than glide, which is inaudible under the allpass.
The documentation for this class was generated from the following file:
- /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/character_delay/diffusion.hpp