#pragma once #include #include #include #include // Round up to next 5KHz multiple frequency #define OUTPUT_SR_ROUND 5000.0f class VFO { public: VFO(); void init(cdsp::stream* input, float offset, float sampleRate, float bandWidth, int bufferSize); void start(); void stop(); void setOffset(float freq); void setBandwidth(float bandwidth); void setSampleRate(int sampleRate); int getOutputSampleRate(); cdsp::stream* output; private: cdsp::ComplexSineSource lo; cdsp::Multiplier mixer; cdsp::IQInterpolator interp; cdsp::DecimatingFIRFilter decFir; std::vector decimTaps; int _interp; int _decim; float _inputSampleRate; float _outputSampleRate; float _bandWidth; int _bufferSize; int outputSampleRate; cdsp::stream* _input; };