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

Fixed-capacity control-side compilation and frame-side application of a zoomable spectral band layout. More...

#include <pulp/signal/spectral_frame_engine.hpp>
#include <algorithm>
#include <array>
#include <cmath>
#include <complex>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <type_traits>

Go to the source code of this file.

Classes

struct  pulp::signal::SpectralBandT< SampleType >
struct  pulp::signal::SpectralBandLayoutT< SampleType >
struct  pulp::signal::SpectralBandResolutionT< SampleType >
 Control-side report of how discrete FFT bin centers represent an authored viewport. More...
struct  pulp::signal::SpectralMaskTableT< SampleType >

Namespaces

namespace  pulp
namespace  pulp::signal
namespace  pulp::signal::detail
 Round-2 effect-wave vocabulary.

Typedefs

using pulp::signal::SpectralBand = SpectralBandT<float>
using pulp::signal::SpectralBand64 = SpectralBandT<double>
using pulp::signal::SpectralBandLayout = SpectralBandLayoutT<float>
using pulp::signal::SpectralBandLayout64 = SpectralBandLayoutT<double>
using pulp::signal::SpectralBandResolution = SpectralBandResolutionT<float>
using pulp::signal::SpectralBandResolution64 = SpectralBandResolutionT<double>
using pulp::signal::SpectralMaskTable = SpectralMaskTableT<float>
using pulp::signal::SpectralMaskTable64 = SpectralMaskTableT<double>

Enumerations

enum class  pulp::signal::SpectralBandSpacing : std::uint8_t { pulp::signal::linear , pulp::signal::logarithmic }
enum class  pulp::signal::SpectralBandEdgePolicy : std::uint8_t { pulp::signal::mute_outside , pulp::signal::extend_edge_band }
enum class  pulp::signal::SpectralMaskBoundaryKernel : std::uint8_t { pulp::signal::hard , pulp::signal::raised_cosine }

Functions

template<typename SampleType>
bool pulp::signal::detail::valid_spectral_band_layout (const SpectralBandLayoutT< SampleType > &layout, SampleType nyquist, SampleType &effective_min, SampleType &effective_max) noexcept
template<typename SampleType>
SampleType pulp::signal::detail::band_coordinate (SampleType hz, SampleType min_hz, SampleType max_hz, SpectralBandSpacing spacing) noexcept
template<typename SampleType>
SampleType pulp::signal::detail::frequency_at_coordinate (SampleType coordinate, SampleType min_hz, SampleType max_hz, SpectralBandSpacing spacing) noexcept
template<typename SampleType>
SampleType pulp::signal::detail::raised_cosine (SampleType position) noexcept
template<typename SampleType>
SampleType pulp::signal::detail::band_gain (const SpectralBandLayoutT< SampleType > &layout, std::uint32_t index) noexcept
template<typename SampleType>
std::uint32_t pulp::signal::detail::band_index_at_frequency (SampleType hz, SampleType min_hz, SampleType max_hz, SpectralBandSpacing spacing, std::uint32_t band_count) noexcept
template<typename SampleType>
bool pulp::signal::analyze_spectral_band_resolution (const SpectralBandLayoutT< SampleType > &layout, int fft_size, SampleType sample_rate, SpectralBandResolutionT< SampleType > &out_resolution) noexcept
 Report the number of discrete FFT bin centers directly owned by each band.
template<typename SampleType>
bool pulp::signal::build_spectral_mask (const SpectralBandLayoutT< SampleType > &layout, int fft_size, SampleType sample_rate, SpectralMaskTableT< SampleType > &out_table) noexcept
 Compile a complete positive-frequency gain table.
template<typename SampleType>
bool pulp::signal::apply_spectral_mask (std::complex< SampleType > *const *frames, int channels, int num_bins, const SpectralMaskTableT< SampleType > &table) noexcept
 Multiply one coherent positive-frequency frame group by a prepared mask.

Variables

constexpr std::size_t pulp::signal::kSpectralBandMaskMaximumBands = 64
constexpr std::size_t pulp::signal::kSpectralBandMaskMaximumBins
constexpr std::uint32_t pulp::signal::kSpectralBandMaskMaximumTransitionFrames = 4096

Detailed Description

Fixed-capacity control-side compilation and frame-side application of a zoomable spectral band layout.

SpectralBandLayoutT is a DSP contract, not a UI model. It keeps a stable maximum of 64 slots, represents mute categorically, and maps the active slots onto either a linear or logarithmic frequency viewport. The builder materializes one immutable positive-frequency table for a prepared FFT. Applying that table to a coherent channel group is allocation-free and preserves every bin's phase and inter-channel relationship.