Aquila is an open source and cross-platform DSP (Digital Signal Processing) library for C++11.
#include "aquila/aquila.h"
int main()
{
// input signal parameters
const std::size_t SIZE = 64;
const Aquila::FrequencyType sampleFreq = 2000, f1 = 125, f2 = 700;
Aquila::SineGenerator sine1(sampleFreq);
sine1.setAmplitude(32).setFrequency(f1).generate(SIZE);
Aquila::SineGenerator sine2(sampleFreq);
sine2.setAmplitude(8).setFrequency(f2).setPhase(0.75).generate(SIZE);
auto sum = sine1 + sine2;
Aquila::TextPlot plot("Input signal");
plot.plot(sum);
// calculate the FFT
auto fft = Aquila::FftFactory::getFft(SIZE);
Aquila::SpectrumType spectrum = fft->fft(sum.toArray());
plot.setTitle("Spectrum");
plot.plotSpectrum(spectrum);
return 0;
}
For more usage examples see the examples
directory or
browse them online.
- various signal sources (generators, text/binary/WAVE files)
- signal windowing and filtering
- performing operations on a frame-by-frame basis
- calculating energy, power, FFT and DCT of a signal
- feature extraction, including MFCC and HFCC features, widely used in speech recognition
- pattern matching with DTW (dynamic time warping) algorithm
The following dependencies are required to build the library from source.
- a modern C++11 compiler
- CMake >= 2.8