BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

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