MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
ConvolutionHelper.hpp File Reference
#include "MayaFlux/Nodes/Filters/FIR.hpp"
#include "MayaFlux/Yantra/OperationSpec/OperationHelper.hpp"
#include <unsupported/Eigen/FFT>
+ Include dependency graph for ConvolutionHelper.hpp:
+ 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::Yantra
 

Functions

template<typename OperationFunc >
std::vector< double > MayaFlux::Yantra::fft_convolve_helper (std::span< const double > data_span, std::span< const double > kernel, OperationFunc &&operation, bool return_full_size=true)
 Common FFT convolution helper to eliminate code duplication.
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_convolve_with_fir (DataType &input, const std::vector< double > &impulse_response)
 Direct convolution using existing FIR filter infrastructure (IN-PLACE) This leverages the existing, well-tested filter implementation.
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_convolve_with_fir (DataType &input, const std::vector< double > &impulse_response, std::vector< std::vector< double > > &working_buffer)
 Direct convolution using existing FIR filter infrastructure (OUT-OF-PLACE) This leverages the existing, well-tested filter implementation.
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_convolve (DataType &input, const std::vector< double > &impulse_response)
 Convolution transformation using existing infrastructure with C++20 ranges (IN-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_convolve (DataType &input, const std::vector< double > &impulse_response, std::vector< std::vector< double > > &working_buffer)
 Convolution transformation using existing infrastructure with C++20 ranges (OUT-OF-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_cross_correlate (DataType &input, const std::vector< double > &template_signal, bool normalize=true)
 Cross-correlation using FFT (convolution with time-reversed impulse) (IN-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_cross_correlate (DataType &input, const std::vector< double > &template_signal, bool normalize, std::vector< std::vector< double > > &working_buffer)
 Cross-correlation using FFT (convolution with time-reversed impulse) (OUT-OF-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_auto_correlate_fft (DataType &input, bool normalize=true)
 Auto-correlation using FFT (IN-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_auto_correlate_fft (DataType &input, std::vector< std::vector< double > > &working_buffer, bool normalize=true)
 Auto-correlation using FFT (OUT-OF-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_matched_filter (DataType &input, const std::vector< double > &reference_signal)
 Matched filter using cross-correlation for signal detection (IN-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_matched_filter (DataType &input, const std::vector< double > &reference_signal, std::vector< std::vector< double > > &working_buffer)
 Matched filter using cross-correlation for signal detection (OUT-OF-PLACE)
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_deconvolve (DataType &input, const std::vector< double > &impulse_to_remove, double regularization=1e-6)
 Deconvolution using frequency domain division (IN-PLACE) Useful for removing known impulse responses.
 
template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_deconvolve (DataType &input, const std::vector< double > &impulse_to_remove, double regularization, std::vector< std::vector< double > > &working_buffer)
 Deconvolution using frequency domain division (OUT-OF-PLACE) Useful for removing known impulse responses.