35MAYAFLUX_API
double mean(
const std::vector<double>& data);
43MAYAFLUX_API std::vector<double>
mean_per_channel(
const std::vector<Kakshya::DataVariant>& channels);
50MAYAFLUX_API
double mean_combined(
const std::vector<Kakshya::DataVariant>& channels);
57MAYAFLUX_API
double rms(
const std::vector<double>& data);
65MAYAFLUX_API std::vector<double>
rms_per_channel(
const std::vector<Kakshya::DataVariant>& channels);
72MAYAFLUX_API
double rms_combined(
const std::vector<Kakshya::DataVariant>& channels);
79MAYAFLUX_API
double std_dev(
const std::vector<double>& data);
87MAYAFLUX_API std::vector<double>
std_dev_per_channel(
const std::vector<Kakshya::DataVariant>& channels);
94MAYAFLUX_API
double std_dev_combined(
const std::vector<Kakshya::DataVariant>& channels);
101MAYAFLUX_API
double dynamic_range(
const std::vector<double>& data);
123MAYAFLUX_API
double peak(
const std::vector<double>& data);
131MAYAFLUX_API
double peak(
const std::vector<Kakshya::DataVariant>& channels);
138MAYAFLUX_API std::vector<double>
peak_per_channel(
const std::vector<Kakshya::DataVariant>& channels);
146MAYAFLUX_API
double peak_channel(
const std::vector<Kakshya::DataVariant>& channels,
size_t channel_index);
158MAYAFLUX_API std::vector<size_t>
zero_crossings(
const std::vector<double>& data,
double threshold = 0.0);
167MAYAFLUX_API std::vector<std::vector<size_t>>
zero_crossings_per_channel(
const std::vector<Kakshya::DataVariant>& channels,
double threshold = 0.0);
175MAYAFLUX_API
double zero_crossing_rate(
const std::vector<double>& data,
size_t window_size = 0);
192MAYAFLUX_API
double spectral_centroid(
const std::vector<double>& data,
double sample_rate = 48000.0);
201MAYAFLUX_API std::vector<double>
spectral_centroid_per_channel(
const std::vector<Kakshya::DataVariant>& channels,
double sample_rate = 48000.0);
210MAYAFLUX_API std::vector<double>
detect_onsets(
const std::vector<double>& data,
double sample_rate = 48000.0,
double threshold = 0.1);
220MAYAFLUX_API std::vector<std::vector<double>>
detect_onsets_per_channel(
const std::vector<Kakshya::DataVariant>& channels,
double sample_rate = 48000.0,
double threshold = 0.1);
239MAYAFLUX_API std::pair<Kakshya::DataVariant, Kakshya::DataVariant>
stereo_to_mid_side(
const std::vector<Kakshya::DataVariant>& lr_channels);
247MAYAFLUX_API std::pair<Kakshya::DataVariant, Kakshya::DataVariant>
mid_side_to_stereo(
const std::vector<Kakshya::DataVariant>& ms_channels);
255MAYAFLUX_API
double stereo_width(
const std::vector<Kakshya::DataVariant>& lr_channels);
301MAYAFLUX_API
void apply_gain(std::vector<double>& data,
double gain_factor);
309MAYAFLUX_API
void apply_gain_channels(std::vector<Kakshya::DataVariant>& channels,
double gain_factor);
317MAYAFLUX_API
void apply_gain_per_channel(std::vector<Kakshya::DataVariant>& channels,
const std::vector<double>& gain_factors);
325MAYAFLUX_API std::vector<double>
with_gain(
const std::vector<double>& data,
double gain_factor);
334MAYAFLUX_API std::vector<Kakshya::DataVariant>
with_gain_channels(
const std::vector<Kakshya::DataVariant>& channels,
double gain_factor);
341MAYAFLUX_API
void normalize(std::vector<double>& data,
double target_peak = 1.0);
349MAYAFLUX_API
void normalize_channels(std::vector<Kakshya::DataVariant>& channels,
double target_peak = 1.0);
356MAYAFLUX_API
void normalize_together(std::vector<Kakshya::DataVariant>& channels,
double target_peak = 1.0);
364MAYAFLUX_API std::vector<double>
normalized(
const std::vector<double>& data,
double target_peak = 1.0);
373MAYAFLUX_API std::vector<Kakshya::DataVariant>
normalized_channels(
const std::vector<Kakshya::DataVariant>& channels,
double target_peak = 1.0);
379MAYAFLUX_API
void reverse(std::vector<double>& data);
386MAYAFLUX_API
void reverse_channels(std::vector<Kakshya::DataVariant>& channels);
393MAYAFLUX_API std::vector<double>
reversed(
const std::vector<double>& data);
401MAYAFLUX_API std::vector<Kakshya::DataVariant>
reversed_channels(
const std::vector<Kakshya::DataVariant>& channels);
413MAYAFLUX_API std::vector<double>
magnitude_spectrum(
const std::vector<double>& data,
size_t window_size = 0);
430MAYAFLUX_API std::vector<double>
power_spectrum(
const std::vector<double>& data,
size_t window_size = 0);
439MAYAFLUX_API std::vector<std::vector<double>>
power_spectrum_per_channel(
const std::vector<Kakshya::DataVariant>& channels,
size_t window_size = 0);
453MAYAFLUX_API
double estimate_pitch(
const std::vector<double>& data,
double sample_rate = 48000.0,
454 double min_freq = 80.0,
double max_freq = 2000.0);
456 double min_freq = 80.0,
double max_freq = 2000.0);
466MAYAFLUX_API std::vector<double>
estimate_pitch_per_channel(
const std::vector<Kakshya::DataVariant>& channels,
double sample_rate = 48000.0,
467 double min_freq = 80.0,
double max_freq = 2000.0);
482 size_t min_silence_duration);
485 size_t min_silence_duration);
506MAYAFLUX_API
void apply_window(std::vector<double>& data,
const std::string& window_type =
"hann");
514MAYAFLUX_API
void apply_window_channels(std::vector<Kakshya::DataVariant>& channels,
const std::string& window_type =
"hann");
523MAYAFLUX_API std::vector<std::vector<double>>
windowed_segments(
const std::vector<double>& data,
548MAYAFLUX_API std::vector<std::pair<size_t, size_t>>
detect_silence(
const std::vector<double>& data,
549 double threshold = 0.01,
550 size_t min_silence_duration = 1024);
552 double threshold = 0.01,
553 size_t min_silence_duration = 1024);
562MAYAFLUX_API std::vector<std::vector<std::pair<size_t, size_t>>>
detect_silence_per_channel(
const std::vector<Kakshya::DataVariant>& channels,
563 double threshold = 0.01,
564 size_t min_silence_duration = 1024);
575MAYAFLUX_API std::vector<double>
mix(
const std::vector<std::vector<double>>& streams);
576MAYAFLUX_API std::vector<double>
mix(
const std::vector<Kakshya::DataVariant>& streams);
585MAYAFLUX_API std::vector<double>
mix_with_gains(
const std::vector<std::vector<double>>& streams,
586 const std::vector<double>& gains);
587MAYAFLUX_API std::vector<double>
mix_with_gains(
const std::vector<Kakshya::DataVariant>& streams,
588 const std::vector<double>& gains);
609MAYAFLUX_API std::vector<std::vector<double>>
to_double_vectors(
const std::vector<Kakshya::DataVariant>& channels);
616MAYAFLUX_API std::vector<Kakshya::DataVariant>
to_data_variants(
const std::vector<std::vector<double>>& channel_data);
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
std::vector< std::vector< double > > to_double_vectors(const std::vector< Kakshya::DataVariant > &channels)
Convert multi-channel data to vector of double vectors.
std::vector< size_t > zero_crossings(const std::vector< double > &data, double threshold)
Detect zero crossings in single-channel signal.
MAYAFLUX_API double stereo_width(const std::vector< Kakshya::DataVariant > &lr_channels)
Calculate stereo width measure for L/R channels.
Kakshya::DataVariant to_data_variant(const std::vector< double > &data)
Convert vector<double> to DataVariant.
std::vector< double > zero_crossing_rate_per_channel(const std::vector< Kakshya::DataVariant > &channels, size_t window_size)
Calculate zero crossing rate per channel for multi-channel data.
std::vector< Kakshya::DataVariant > with_gain_channels(const std::vector< Kakshya::DataVariant > &channels, double gain_factor)
Apply gain to multi-channel data (non-destructive)
std::vector< double > dynamic_range_per_channel(const std::vector< Kakshya::DataVariant > &channels)
Calculate dynamic range per channel for multi-channel data.
double std_dev_combined(const std::vector< Kakshya::DataVariant > &channels)
Calculate standard deviation across all channels (mix then analyze)
std::vector< std::vector< double > > magnitude_spectrum_per_channel(const std::vector< Kakshya::DataVariant > &channels, size_t window_size)
Compute magnitude spectrum per channel for multi-channel data.
std::vector< double > estimate_pitch_per_channel(const std::vector< Kakshya::DataVariant > &channels, double sample_rate, double min_freq, double max_freq)
Estimate fundamental frequency per channel for multi-channel data.
double estimate_pitch(const std::vector< double > &data, double sample_rate, double min_freq, double max_freq)
Estimate fundamental frequency using autocorrelation for single-channel data.
std::vector< Kakshya::DataVariant > reversed_channels(const std::vector< Kakshya::DataVariant > &channels)
Reverse time order of multi-channel data (non-destructive)
std::vector< double > peak_per_channel(const std::vector< Kakshya::DataVariant > &channels)
Find peak amplitude per channel for multi-channel data.
double zero_crossing_rate(const std::vector< double > &data, size_t window_size)
Calculate zero crossing rate for single-channel data.
void reverse(std::vector< double > &data)
Reverse time order of single-channel data (in-place)
std::vector< double > mean_per_channel(const std::vector< Kakshya::DataVariant > &data)
Calculate mean per channel for multi-channel data.
void apply_gain_channels(std::vector< Kakshya::DataVariant > &channels, double gain_factor)
Apply gain to multi-channel data (in-place)
MAYAFLUX_API MultiChannelFeatures analyze_channels(const std::vector< Kakshya::DataVariant > &channels)
Comprehensive multi-channel analysis in single operation.
void normalize_together(std::vector< Kakshya::DataVariant > &channels, double target_peak)
Normalize multi-channel data relative to global peak (in-place)
MAYAFLUX_API std::pair< Kakshya::DataVariant, Kakshya::DataVariant > stereo_to_mid_side(const std::vector< Kakshya::DataVariant > &lr_channels)
Convert stereo L/R channels to Mid/Side format.
std::vector< double > to_double_vector(const Kakshya::DataVariant &data)
Convert DataVariant to vector<double> if possible.
std::vector< std::vector< std::vector< double > > > windowed_segments_per_channel(const std::vector< Kakshya::DataVariant > &channels, size_t window_size, size_t hop_size)
Split multi-channel data into overlapping windows per channel.
std::vector< double > with_gain(const std::vector< double > &data, double gain_factor)
Apply gain to single-channel data (non-destructive)
double dynamic_range(const std::vector< double > &data)
Calculate dynamic range (max/min ratio in dB) of single-channel data.
std::vector< std::pair< size_t, size_t > > detect_silence(const std::vector< double > &data, double threshold, size_t min_silence_duration)
Detect silence regions in single-channel data.
double rms(const std::vector< double > &data)
Calculate RMS (Root Mean Square) energy of single-channel data.
void normalize_channels(std::vector< Kakshya::DataVariant > &channels, double target_peak)
Normalize each channel independently to specified peak level (in-place)
void reverse_channels(std::vector< Kakshya::DataVariant > &channels)
Reverse time order of multi-channel data (in-place)
double peak_channel(const std::vector< Kakshya::DataVariant > &channels, size_t channel_index)
Find peak amplitude in specific channel.
std::vector< double > extract_zero_crossing_regions(const std::vector< double > &data, double threshold, size_t region_size)
Extract zero crossing regions from single-channel data.
std::vector< double > std_dev_per_channel(const std::vector< Kakshya::DataVariant > &channels)
Calculate standard deviation per channel for multi-channel data.
std::vector< double > reversed(const std::vector< double > &data)
Reverse time order of single-channel data (non-destructive)
std::vector< std::vector< double > > power_spectrum_per_channel(const std::vector< Kakshya::DataVariant > &channels, size_t window_size)
Compute power spectrum per channel for multi-channel data.
std::vector< Kakshya::DataVariant > to_data_variants(const std::vector< std::vector< double > > &channel_data)
Convert vector of double vectors to multi-channel DataVariant format.
std::vector< double > extract_silent_data(const std::vector< double > &data, double threshold, size_t min_silence_duration)
Extract silent regions from single-channel data.
MAYAFLUX_API std::pair< Kakshya::DataVariant, Kakshya::DataVariant > mid_side_to_stereo(const std::vector< Kakshya::DataVariant > &ms_channels)
Convert Mid/Side channels to stereo L/R format.
double dynamic_range_global(const std::vector< Kakshya::DataVariant > &channels)
Calculate dynamic range across all channels (global min/max)
std::vector< double > magnitude_spectrum(const std::vector< double > &data, size_t window_size)
Compute magnitude spectrum for single-channel data.
void apply_window_channels(std::vector< Kakshya::DataVariant > &channels, const std::string &window_type)
Apply window function to multi-channel data (in-place)
std::vector< std::vector< double > > detect_onsets_per_channel(const std::vector< Kakshya::DataVariant > &channels, double sample_rate, double threshold)
Detect onset times per channel for multi-channel signal.
MAYAFLUX_API std::vector< double > channel_correlation_matrix(const std::vector< Kakshya::DataVariant > &channels)
Calculate correlation matrix between all channel pairs.
void normalize(std::vector< double > &data, double target_peak)
Normalize single-channel data to specified peak level (in-place)
void apply_window(std::vector< double > &data, const std::string &window_type)
Apply window function to single-channel data (in-place)
double rms_combined(const std::vector< Kakshya::DataVariant > &channels)
Calculate RMS energy across all channels (mix then analyze)
std::vector< std::vector< double > > windowed_segments(const std::vector< double > &data, size_t window_size, size_t hop_size)
Split single-channel data into overlapping windows.
std::vector< double > mix_with_gains(const std::vector< std::vector< double > > &streams, const std::vector< double > &gains)
Mix multiple data streams with specified gains.
std::vector< Kakshya::DataVariant > normalized_channels(const std::vector< Kakshya::DataVariant > &channels, double target_peak)
Normalize each channel independently (non-destructive)
MAYAFLUX_API double phase_correlation(const Kakshya::DataVariant &channel1, const Kakshya::DataVariant &channel2)
Calculate phase correlation between two channels.
std::vector< double > spectral_centroid_per_channel(const std::vector< Kakshya::DataVariant > &channels, double sample_rate)
Find spectral centroid per channel for multi-channel data.
double spectral_centroid(const std::vector< double > &data, double sample_rate)
Find spectral centroid (brightness measure) for single-channel data.
void initialize_yantra()
Initialize Yantra subsystem with default configuration.
double std_dev(const std::vector< double > &data)
Calculate standard deviation of single-channel data.
std::vector< double > normalized(const std::vector< double > &data, double target_peak)
Normalize single-channel data (non-destructive)
double mean(const std::vector< double > &data)
Calculate mean of single-channel data.
double mean_combined(const std::vector< Kakshya::DataVariant > &channels)
Calculate mean across all channels (mix then analyze)
std::vector< double > detect_onsets(const std::vector< double > &data, double sample_rate, double threshold)
Detect onset times in single-channel signal.
std::vector< std::vector< size_t > > zero_crossings_per_channel(const std::vector< Kakshya::DataVariant > &channels, double threshold)
Detect zero crossings per channel for multi-channel signal.
double peak(const std::vector< double > &data)
Find peak amplitude in single-channel data.
MAYAFLUX_API Kakshya::DataVariant mix_to_mono(const std::vector< Kakshya::DataVariant > &channels)
Mix multi-channel data to mono using equal weighting.
void apply_gain(std::vector< double > &data, double gain_factor)
Apply gain to single-channel data (in-place)
void apply_gain_per_channel(std::vector< Kakshya::DataVariant > &channels, const std::vector< double > &gain_factors)
Apply different gain to each channel (in-place)
std::vector< double > mix(const std::vector< std::vector< double > > &streams)
Mix multiple data streams with equal weighting.
std::vector< double > rms_per_channel(const std::vector< Kakshya::DataVariant > &channels)
Calculate RMS energy per channel for multi-channel data.
std::vector< std::vector< std::pair< size_t, size_t > > > detect_silence_per_channel(const std::vector< Kakshya::DataVariant > &channels, double threshold, size_t min_silence_duration)
Detect silence regions per channel for multi-channel data.
std::vector< double > power_spectrum(const std::vector< double > &data, size_t window_size)
Compute power spectrum for single-channel data.
Main namespace for the Maya Flux audio engine.
double channel_balance
Balance measure (0.5 = perfectly balanced)
std::vector< double > per_channel_peak
Peak amplitude per channel.
size_t num_channels
Number of input channels.
double overall_peak
Peak amplitude across all channels.
std::vector< double > per_channel_rms
RMS energy per channel.
std::vector< double > correlation_matrix
Channel correlation matrix (flat)
std::vector< double > per_channel_mean
Mean value per channel.
Multi-channel feature analysis result.