MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
Spectral.hpp File Reference

Short-time Fourier domain primitives for MayaFlux::Kinesis. More...

+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  MayaFlux
 Main namespace for the Maya Flux audio engine.
 
namespace  MayaFlux::Kinesis
 
namespace  MayaFlux::Kinesis::Discrete
 

Typedefs

using MayaFlux::Kinesis::Discrete::SpectrumProcessor = std::function< void(std::vector< std::complex< double > > &, size_t)>
 Callable type for per-frame spectrum modification Receives the one-sided complex spectrum (bins 0..N/2 inclusive) and the frame index.
 

Functions

std::vector< double > MayaFlux::Kinesis::Discrete::apply_spectral (std::span< const double > src, uint32_t window_size, uint32_t hop_size, const SpectrumProcessor &processor)
 Apply a per-frame spectrum processor via WOLA analysis-synthesis.
 
std::vector< double > MayaFlux::Kinesis::Discrete::spectral_filter (std::span< const double > src, double lo_hz, double hi_hz, double sample_rate, uint32_t window_size=1024, uint32_t hop_size=256)
 Hard bandpass filter: zero all bins outside [lo_hz, hi_hz].
 
std::vector< double > MayaFlux::Kinesis::Discrete::spectral_invert (std::span< const double > src, uint32_t window_size=1024, uint32_t hop_size=256)
 Spectral phase inversion (conjugate all bins)
 
std::vector< double > MayaFlux::Kinesis::Discrete::harmonic_enhance (std::span< const double > src, double enhancement_factor, uint32_t window_size=1024, uint32_t hop_size=256)
 Linear spectral tilt: scale each bin by a factor that rises linearly from 1 at bin 0 to enhancement_factor at the Nyquist bin.
 
std::vector< double > MayaFlux::Kinesis::Discrete::spectral_gate (std::span< const double > src, double threshold_db, uint32_t window_size=1024, uint32_t hop_size=256)
 Hard spectral gate: zero bins whose magnitude is below the threshold.
 
std::vector< double > MayaFlux::Kinesis::Discrete::phase_vocoder_stretch (std::span< const double > src, double stretch_factor, uint32_t window_size=2048, uint32_t analysis_hop=512)
 Time-stretch via phase vocoder analysis-synthesis.
 
std::vector< double > MayaFlux::Kinesis::Discrete::pitch_shift (std::span< const double > src, double semitones, uint32_t window_size=2048, uint32_t analysis_hop=512)
 Pitch-shift by resampling around a phase vocoder stretch.
 

Detailed Description

Short-time Fourier domain primitives for MayaFlux::Kinesis.

Pure functions operating on contiguous double-precision spans. No MayaFlux type dependencies. Domain-agnostic: the same primitives serve audio, control, and any other sampled sequence.

All functions that modify frequency content use weighted overlap-add (WOLA) synthesis with a Hann analysis window. The synthesis window is the same Hann window; at 75% overlap (hop = N/4) the OLA normalisation factor is constant and the reconstruction is exact up to numerical noise.

Eigen FFT dependency is confined to the .cpp translation unit.

Definition in file Spectral.hpp.