Analyzer.hpp (1813B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "analyzer_base.hpp" 5 6 extern Model* modelAnalyzer; 7 8 namespace bogaudio { 9 10 struct Analyzer : AnalyzerBase { 11 enum ParamsIds { 12 RANGE_PARAM, // no longer used 13 SMOOTH_PARAM, 14 QUALITY_PARAM, 15 POWER_PARAM, // no longer used 16 WINDOW_PARAM, 17 RANGE2_PARAM, 18 NUM_PARAMS 19 }; 20 21 enum InputsIds { 22 SIGNALA_INPUT, 23 SIGNALB_INPUT, 24 SIGNALC_INPUT, 25 SIGNALD_INPUT, 26 NUM_INPUTS 27 }; 28 29 enum OutputsIds { 30 SIGNALA_OUTPUT, 31 SIGNALB_OUTPUT, 32 SIGNALC_OUTPUT, 33 SIGNALD_OUTPUT, 34 NUM_OUTPUTS 35 }; 36 37 enum LightsIds { 38 QUALITY_HIGH_LIGHT, 39 QUALITY_GOOD_LIGHT, 40 POWER_ON_LIGHT, 41 QUALITY_ULTRA_LIGHT, 42 WINDOW_NONE_LIGHT, 43 WINDOW_HAMMING_LIGHT, 44 WINDOW_KAISER_LIGHT, 45 NUM_LIGHTS 46 }; 47 48 float _sampleRate = 1000.0f; 49 50 Analyzer() : AnalyzerBase(4, NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { 51 configParam(RANGE2_PARAM, -1.0f, 1.0f, 0.0f, "Range"); 52 configParam(SMOOTH_PARAM, 0.0f, 1.0f, 0.5f, "Smoothing", " ms", 0.0f, 500.0f); 53 configSwitch(QUALITY_PARAM, 1.0f, 3.0f, 1.0f, "Analysis quality", {"Good", "High", "Ultra"}); 54 configSwitch(WINDOW_PARAM, 1.0f, 3.0f, 1.0f, "Analysis window type", {"Kaiser", "Hamming", "None"}); 55 56 configInput(SIGNALA_INPUT, "Signal A"); 57 configInput(SIGNALB_INPUT, "Signal B"); 58 configInput(SIGNALC_INPUT, "Signal C"); 59 configInput(SIGNALD_INPUT, "Signal D"); 60 61 configOutput(SIGNALA_OUTPUT, "Signal A"); 62 configOutput(SIGNALB_OUTPUT, "Signal B"); 63 configOutput(SIGNALC_OUTPUT, "Signal C"); 64 configOutput(SIGNALD_OUTPUT, "Signal D"); 65 } 66 virtual ~Analyzer() { 67 reset(); 68 } 69 70 void reset() override; 71 void sampleRateChange() override; 72 json_t* saveToJson(json_t* root) override; 73 void loadFromJson(json_t* root) override; 74 void modulate() override; 75 void processAll(const ProcessArgs& args) override; 76 }; 77 78 } // namespace bogaudio