|
- #pragma once
-
- #include "bogaudio.hpp"
- #include "dsp/analyzer.hpp"
-
- using namespace bogaudio::dsp;
-
- extern Model* modelAnalyzer;
-
- namespace bogaudio {
-
- struct ChannelAnalyzer;
-
- struct Analyzer : Module {
- enum ParamsIds {
- RANGE_PARAM,
- SMOOTH_PARAM,
- QUALITY_PARAM,
- POWER_PARAM,
- NUM_PARAMS
- };
-
- enum InputsIds {
- SIGNALA_INPUT,
- SIGNALB_INPUT,
- SIGNALC_INPUT,
- SIGNALD_INPUT,
- NUM_INPUTS
- };
-
- enum OutputsIds {
- SIGNALA_OUTPUT,
- SIGNALB_OUTPUT,
- SIGNALC_OUTPUT,
- SIGNALD_OUTPUT,
- NUM_OUTPUTS
- };
-
- enum LightsIds {
- QUALITY_HIGH_LIGHT,
- QUALITY_GOOD_LIGHT,
- POWER_ON_LIGHT,
- NUM_LIGHTS
- };
-
- enum Quality {
- QUALITY_HIGH,
- QUALITY_GOOD
- };
-
- bool _running = false;
- int _averageN;
- ChannelAnalyzer* _channelA = NULL;
- ChannelAnalyzer* _channelB = NULL;
- ChannelAnalyzer* _channelC = NULL;
- ChannelAnalyzer* _channelD = NULL;
- float _range = 0.0;
- float _smooth = 0.0;
- Quality _quality = QUALITY_GOOD;
- const SpectrumAnalyzer::Overlap _overlap = SpectrumAnalyzer::OVERLAP_2;
- const int _binAverageN = 2;
-
- Analyzer() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
- onReset();
- }
- virtual ~Analyzer() {
- onReset();
- }
-
- void onReset() override;
- void onSampleRateChange() override;
- void resetChannels();
- SpectrumAnalyzer::Size size();
- void step() override;
- void stepChannel(ChannelAnalyzer*& channelPointer, bool running, Input& input, Output& output);
- };
-
- } // namespace bogaudio
|