Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
beat_repeat_kernel.hpp File Reference

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.

Classes

struct  pulp::signal::BeatRepeatCapturePlan
struct  pulp::signal::BeatRepeatPlanResult
class  pulp::signal::BeatRepeatKernelT< SampleType >
struct  pulp::signal::BeatRepeatKernelT< SampleType >::Config
struct  pulp::signal::BeatRepeatKernelT< SampleType >::Snapshot

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>

Enumerations

enum class  pulp::signal::BeatRepeatPlanError {
  pulp::signal::None , pulp::signal::InvalidDivision , pulp::signal::TickRangeExceeded , pulp::signal::SampleRangeExceeded ,
  pulp::signal::CaptureRangeExceeded , pulp::signal::HistoryCapacityExceeded , pulp::signal::Unprepared , pulp::signal::SampleRateMismatch ,
  pulp::signal::ReleaseInProgress , pulp::signal::StaleRequest
}

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.

Detailed Description

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.