Quantized capture and bounded repeat gestures over FreezeLoopSamplerT. More...
#include <pulp/signal/freeze_loop_sampler.hpp>#include <pulp/signal/transition_mixer.hpp>#include <pulp/timebase/beat_division.hpp>#include <pulp/timebase/compiled_tempo_map.hpp>#include <algorithm>#include <cmath>#include <cstddef>#include <cstdint>#include <limits>#include <new>#include <stdexcept>#include <utility>#include <vector>Go to the source code of this file.
Namespaces | |
| namespace | pulp |
| namespace | pulp::signal |
| namespace | pulp::signal::detail |
| Round-2 effect-wave vocabulary. | |
Typedefs | |
| using | pulp::signal::BeatRepeatKernel = BeatRepeatKernelT<float> |
| using | pulp::signal::BeatRepeatKernel64 = BeatRepeatKernelT<double> |
Functions | |
| bool | pulp::signal::detail::beat_repeat_checked_add (std::int64_t lhs, std::int64_t rhs, std::int64_t &result) noexcept |
| bool | pulp::signal::detail::beat_repeat_checked_subtract (std::int64_t lhs, std::int64_t rhs, std::int64_t &result) noexcept |
| bool | pulp::signal::detail::beat_repeat_ceil_tick (std::int64_t value, std::int64_t quantum, std::int64_t &result) noexcept |
| BeatRepeatPlanResult | pulp::signal::lower_beat_repeat_capture (const timebase::CompiledTempoMap &tempo, timebase::BeatDivision division, timebase::SamplePosition requested_sample) noexcept |
| Lower the first grid edge strictly after requested_sample and the exact preceding grid interval into integer host samples. | |
Quantized capture and bounded repeat gestures over FreezeLoopSamplerT.
Capture timing is lowered from CompiledTempoMap and the canonical BeatDivision tick lattice. The kernel therefore has no independent BPM or floating-point transport clock. It records dry input only, captures an exact recent interval without clamping, and layers finite/infinite repeat, gate, reverse, seek, retrigger, and click-safe transitions over the reused sampler storage.
RT contract: prepare(), snapshot(), and restore() may allocate. After a successful prepare(), trigger(), stop(), seek(), reset(), transport_discontinuity(), parameter setters, and process() allocate nothing and take no locks.