Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
spectral_stack.hpp File Reference
#include <complex>
#include <cstdint>
#include <memory>
#include <string>
#include <vector>
#include <pulp/render/gpu_compute.hpp>
#include <pulp/signal/fft.hpp>
#include <pulp/signal/windowing.hpp>

Go to the source code of this file.

Classes

class  pulp::gpu_audio::SpectralStack
 A stack of N captured spectral "moments" (layers) that can be sustained and morphed. More...
class  pulp::gpu_audio::CpuSpectralStack
 CPU reference + always-available fallback. More...
class  pulp::gpu_audio::GpuSpectralStack
 GPU-resident engine: the captured layer spectra live on the GPU and every hop runs advance + smear + weighted-sum + one inverse FFT on the device, reading back only the single synthesized frame. More...
struct  pulp::gpu_audio::SpectralFreezeControls
 Per-hop control values handed to the framer (read on whatever thread drives the framer — the audio thread for the CPU engine, the GPU worker for the GPU engine). More...
class  pulp::gpu_audio::SpectralFreezeFramer
 STFT freeze framer: turns an arbitrary-length input stream into hop-spaced analysis frames, drives a SpectralStack (capture on a Freeze rising edge, render every hop), and overlap-adds the synthesized frames back into an arbitrary-length output stream. More...

Namespaces

namespace  pulp
namespace  pulp::gpu_audio
namespace  pulp::gpu_audio::detail

Functions

void pulp::gpu_audio::detail::circular_box_blur (const std::vector< float > &m, std::vector< float > &out, std::uint32_t radius, float inv_kernel, std::uint32_t n)
 Circular box blur of width (2*radius+1) over m[0..n) into out[0..n), in O(n) via a sliding running sum (not O(n*radius) direct summation, and not a prefix sum — a windowed add-one/drop-one sum, which only ever holds the current window and so does not accumulate the precision loss of subtracting two large cumulative totals).