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

Prepared, frame-quantized spectral delay built on SpectralFrameEngineT. More...

#include <pulp/runtime/seqlock.hpp>
#include <pulp/runtime/triple_buffer.hpp>
#include <pulp/signal/checked_allocation.hpp>
#include <pulp/signal/spectral_frame_engine.hpp>
#include <algorithm>
#include <cmath>
#include <complex>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <memory>
#include <optional>
#include <type_traits>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

struct  pulp::signal::SpectralDelayBreakpoint
struct  pulp::signal::SpectralDelayMatrixRecipe
struct  pulp::signal::SpectralDelayMatrixTable
struct  pulp::signal::SpectralDelayMatrixConfig
struct  pulp::signal::SpectralDelayMatrixGeometry< SampleType >
class  pulp::signal::SpectralDelayMatrixT< SampleType >

Namespaces

namespace  pulp
namespace  pulp::signal

Typedefs

using pulp::signal::SpectralDelayMatrix = SpectralDelayMatrixT<float>
using pulp::signal::SpectralDelayMatrix64 = SpectralDelayMatrixT<double>

Functions

template<typename SampleType>
std::optional< SpectralDelayMatrixGeometry< SampleType > > pulp::signal::checked_spectral_delay_matrix_geometry (const SpectralDelayMatrixConfig &config, std::uint64_t target_max_bytes=kTargetAddressMaximumBytes) noexcept
bool pulp::signal::compile_spectral_delay_matrix_table (const SpectralDelayMatrixRecipe &recipe, int num_bins, int analysis_hop, double sample_rate, int maximum_delay_frames, SpectralDelayMatrixTable &out_table)

Variables

constexpr std::size_t pulp::signal::kSpectralDelayMinimumRetainedBytes = std::size_t{1} << 20u
constexpr std::size_t pulp::signal::kSpectralDelayMaximumRetainedBytes = std::size_t{1} << 29u

Detailed Description

Prepared, frame-quantized spectral delay built on SpectralFrameEngineT.

RT contract: prepare(), compile_table(), and publish_table() are control-thread operations. After prepare(), process(), reset(), and purge() allocate no memory, take no locks, perform no I/O, and throw no exceptions. Complete tables cross to the audio thread through a three-slot latest-value publication and are adopted only between spectral frames.