The physical tier for one channel.
More...
#include <tape_physical.hpp>
|
| void | prepare (double fs) |
| void | reset () noexcept |
| void | recover_audio_fault () noexcept |
| | Fresh-state recovery without clearing dynamically sized FIR storage.
|
| void | set_seeds (std::uint32_t base) noexcept |
| void | set_speed_ips (double ips) |
| | Control-thread only: redesigns both filters and starts the crossfade.
|
| double | speed_ips () const noexcept |
| const std::vector< double > & | gap_coefficients () const noexcept |
| TapeLossIirParams | loss_parameters () const noexcept |
| void | update (double age) noexcept |
| | Control-rate update. In this tier character_amount IS the age axis.
|
| double | pre_process (double x) noexcept |
| | Record EQ → oversampled hysteresis → makeup → playback EQ.
|
| double | post_process (double x) noexcept |
| | Wallace loss → head bump → hiss → chew → degrade → DC block.
|
| double | in_loop_delay_samples () const noexcept |
| | Total in-loop delay this tier contributes ahead of the delay line's read: the oversampler's group delay plus both halves of the loss cascade.
|
| std::size_t | chew_state_index () const noexcept |
The physical tier for one channel.
◆ chew_state_index()
| std::size_t pulp::signal::chardelay::TapePhysicalChannel::chew_state_index |
( |
| ) |
const |
|
inlinenoexcept |
◆ gap_coefficients()
| const std::vector< double > & pulp::signal::chardelay::TapePhysicalChannel::gap_coefficients |
( |
| ) |
const |
|
inlinenoexcept |
◆ in_loop_delay_samples()
| double pulp::signal::chardelay::TapePhysicalChannel::in_loop_delay_samples |
( |
| ) |
const |
|
inlinenoexcept |
Total in-loop delay this tier contributes ahead of the delay line's read: the oversampler's group delay plus both halves of the loss cascade.
The engine subtracts this from the requested line delay so the echo still lands on the requested time and latency_samples() can stay 0.
◆ loss_parameters()
| TapeLossIirParams pulp::signal::chardelay::TapePhysicalChannel::loss_parameters |
( |
| ) |
const |
|
inlinenoexcept |
◆ oversampler_latency_samples()
| int pulp::signal::chardelay::TapePhysicalChannel::oversampler_latency_samples |
( |
| ) |
|
|
inlinestaticnoexcept |
Group delay the oversampling wrap adds inside the loop, in host samples.
◆ post_process()
| double pulp::signal::chardelay::TapePhysicalChannel::post_process |
( |
double | x | ) |
|
|
inlinenoexcept |
Wallace loss → head bump → hiss → chew → degrade → DC block.
◆ pre_process()
| double pulp::signal::chardelay::TapePhysicalChannel::pre_process |
( |
double | x | ) |
|
|
inlinenoexcept |
Record EQ → oversampled hysteresis → makeup → playback EQ.
◆ prepare()
| void pulp::signal::chardelay::TapePhysicalChannel::prepare |
( |
double | fs | ) |
|
|
inline |
◆ recover_audio_fault()
| void pulp::signal::chardelay::TapePhysicalChannel::recover_audio_fault |
( |
| ) |
|
|
inlinenoexcept |
Fresh-state recovery without clearing dynamically sized FIR storage.
◆ reset()
| void pulp::signal::chardelay::TapePhysicalChannel::reset |
( |
| ) |
|
|
inlinenoexcept |
◆ set_seeds()
| void pulp::signal::chardelay::TapePhysicalChannel::set_seeds |
( |
std::uint32_t | base | ) |
|
|
inlinenoexcept |
◆ set_speed_ips()
| void pulp::signal::chardelay::TapePhysicalChannel::set_speed_ips |
( |
double | ips | ) |
|
|
inline |
Control-thread only: redesigns both filters and starts the crossfade.
The outgoing design keeps running in its OWN complete filter instance and the two outputs are crossfaded — never a blend of coefficients, which for the recursive half would apply mixed coefficients to state belonging to neither design. The incoming stage inherits the outgoing one's FIR history (delayed input samples, meaningful under any coefficients) and starts its recursive half from zero, which the crossfade covers because the incoming stage's weight is still near zero while it warms.
◆ speed_ips()
| double pulp::signal::chardelay::TapePhysicalChannel::speed_ips |
( |
| ) |
const |
|
inlinenoexcept |
◆ update()
| void pulp::signal::chardelay::TapePhysicalChannel::update |
( |
double | age | ) |
|
|
inlinenoexcept |
Control-rate update. In this tier character_amount IS the age axis.
The documentation for this class was generated from the following file:
- /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/character_delay/tape_physical.hpp