MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ convolve()

std::vector< double > MayaFlux::Kinesis::Discrete::convolve ( std::span< const double >  src,
std::span< const double >  ir 
)

Linear FFT convolution.

Parameters
srcInput signal
irImpulse response
Returns
Convolved output, same length as src

Definition at line 71 of file Convolution.cpp.

72{
73 if (ir.size() == 1) {
74 std::vector<double> out(src.size());
75 const double g = ir[0];
76 P::transform(P::par_unseq, src.begin(), src.end(), out.begin(),
77 [g](double x) { return x * g; });
78 return out;
79 }
80
81 return apply_convolution(src, ir,
82 [](const auto& s, const auto& k, auto& r) {
83 P::transform(P::par_unseq, s.begin(), s.end(), k.begin(), r.begin(),
84 [](const std::complex<double>& a, const std::complex<double>& b) {
85 return a * b;
86 });
87 });
88}
size_t a
size_t b

References a, apply_convolution(), and b.

+ Here is the call graph for this function: