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

Discrete sequence analysis 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
 

Functions

size_t MayaFlux::Kinesis::Discrete::num_windows (size_t data_size, uint32_t window_size, uint32_t hop_size) noexcept
 Compute the number of analysis windows for a given data size.
 
std::vector< double > MayaFlux::Kinesis::Discrete::rms (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 RMS energy per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::peak (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Peak amplitude per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::power (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Power (sum of squares) per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::dynamic_range (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Dynamic range in dB per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::zero_crossing_rate (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Zero-crossing rate per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::spectral_energy (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Spectral energy per window using Hann-windowed FFT.
 
std::vector< double > MayaFlux::Kinesis::Discrete::low_frequency_energy (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, double low_bin_fraction=0.125)
 Low-frequency spectral energy per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::mean (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Arithmetic mean per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::variance (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, bool sample_variance=true)
 Variance per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::std_dev (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, bool sample_variance=true)
 Standard deviation per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::skewness (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Skewness (standardised third central moment) per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::kurtosis (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Excess kurtosis (fourth central moment - 3) per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::median (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Median per window via nth_element partial sort.
 
std::vector< double > MayaFlux::Kinesis::Discrete::percentile (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, double percentile_value)
 Arbitrary percentile per window via linear interpolation.
 
std::vector< double > MayaFlux::Kinesis::Discrete::entropy (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, size_t num_bins=0)
 Shannon entropy per window using Sturges-rule histogram.
 
std::vector< double > MayaFlux::Kinesis::Discrete::min (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Minimum value per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::max (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Maximum value per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::range (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Value range (max - min) per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::sum (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Sum per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::count (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Sample count per window (as double for pipeline uniformity)
 
std::vector< double > MayaFlux::Kinesis::Discrete::mad (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Median absolute deviation per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::coefficient_of_variation (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, bool sample_variance=true)
 Coefficient of variation (std_dev / mean) per window.
 
std::vector< double > MayaFlux::Kinesis::Discrete::mode (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
 Mode per window via tolerance-bucketed frequency count.
 
std::vector< double > MayaFlux::Kinesis::Discrete::mean_zscore (std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, bool sample_variance=true)
 Mean z-score per window.
 
std::vector< size_t > MayaFlux::Kinesis::Discrete::zero_crossing_positions (std::span< const double > data, double threshold=0.0)
 Sample indices of zero crossings in the full span.
 
std::vector< size_t > MayaFlux::Kinesis::Discrete::peak_positions (std::span< const double > data, double threshold=0.0, size_t min_distance=1)
 Sample indices of local peak maxima in the full span.
 
std::vector< size_t > MayaFlux::Kinesis::Discrete::onset_positions (std::span< const double > data, uint32_t window_size, uint32_t hop_size, double threshold=0.1)
 Sample indices of onsets detected via spectral flux.
 

Detailed Description

Discrete sequence analysis primitives for MayaFlux::Kinesis.

Pure numerical functions operating on contiguous double-precision spans. No MayaFlux type dependencies. All functions are domain-agnostic — the same primitives serve audio, visual, control, and any other sampled sequence.

Design constraints

  • Inputs are immutable spans; outputs are value-returning vectors
  • All windowed functions require pre-computed num_windows from the caller
  • Parallelism is handled internally via MayaFlux::Parallel
  • Spectral functions carry an Eigen::FFT dependency and are not portable to compute shader contexts; a future kernel-compatible variant will be a separate function set

SIMD portability

All non-spectral, non-position functions are auto-vectorisable with -O2 -march=native. Spectral functions are not — they delegate to Eigen::FFT. Position-finding functions (zero crossings, peaks, onsets) produce sparse output and are inherently scalar.

Definition in file Analysis.hpp.