Krotos Modules 3
Loading...
Searching...
No Matches
FFTConvolver.h
Go to the documentation of this file.
1// ==================================================================================
2// Copyright (c) 2017 HiFi-LoFi
3//
4// Permission is hereby granted, free of charge, to any person obtaining a copy
5// of this software and associated documentation files (the "Software"), to deal
6// in the Software without restriction, including without limitation the rights
7// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8// copies of the Software, and to permit persons to whom the Software is furnished
9// to do so, subject to the following conditions:
10//
11// The above copyright notice and this permission notice shall be included in
12// all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
19// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20// ==================================================================================
21namespace fftconvolver
22{
23
44 {
45 public:
47 virtual ~FFTConvolver();
48
56 bool init(size_t blockSize, const Sample* ir, size_t irLen);
57
64 void process(const Sample* input, Sample* output, size_t len);
65
69 void reset();
70
71 private:
72 size_t _blockSize;
73 size_t _segSize;
74 size_t _segCount;
76 std::vector<SplitComplex*> _segments;
77 std::vector<SplitComplex*> _segmentsIR;
83 size_t _current;
86
87 // Prevent uncontrolled usage
90 };
91
92} // End of namespace fftconvolver
Performs 1D FFTs.
Definition AudioFFT.h:106
Implementation of a partitioned FFT convolution algorithm with uniform block size.
Definition FFTConvolver.h:44
size_t _current
Definition FFTConvolver.h:83
size_t _segSize
Definition FFTConvolver.h:73
size_t _inputBufferFill
Definition FFTConvolver.h:85
SplitComplex _conv
Definition FFTConvolver.h:81
SplitComplex _preMultiplied
Definition FFTConvolver.h:80
void reset()
Resets the convolver and discards the set impulse response.
Definition FFTConvolver.cpp:39
std::vector< SplitComplex * > _segments
Definition FFTConvolver.h:76
size_t _fftComplexSize
Definition FFTConvolver.h:75
SampleBuffer _fftBuffer
Definition FFTConvolver.h:78
size_t _segCount
Definition FFTConvolver.h:74
void process(const Sample *input, Sample *output, size_t len)
Convolves the the given input samples and immediately outputs the result.
Definition FFTConvolver.cpp:124
audiofft::AudioFFT _fft
Definition FFTConvolver.h:79
FFTConvolver & operator=(const FFTConvolver &)
SampleBuffer _overlap
Definition FFTConvolver.h:82
virtual ~FFTConvolver()
Definition FFTConvolver.cpp:37
FFTConvolver(const FFTConvolver &)
SampleBuffer _inputBuffer
Definition FFTConvolver.h:84
bool init(size_t blockSize, const Sample *ir, size_t irLen)
Initializes the convolver.
Definition FFTConvolver.cpp:63
FFTConvolver()
Definition FFTConvolver.cpp:31
std::vector< SplitComplex * > _segmentsIR
Definition FFTConvolver.h:77
size_t _blockSize
Definition FFTConvolver.h:72
Buffer for split-complex representation of FFT results.
Definition Utilities.h:173
Definition FFTConvolver.cpp:29
float Sample
Type of one sample.
Definition Utilities.h:157