You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.4KB

  1. #pragma once
  2. #include "bogaudio.hpp"
  3. #include "dsp/analyzer.hpp"
  4. using namespace bogaudio::dsp;
  5. extern Model* modelAnalyzer;
  6. namespace bogaudio {
  7. struct ChannelAnalyzer;
  8. struct Analyzer : Module {
  9. enum ParamsIds {
  10. RANGE_PARAM,
  11. SMOOTH_PARAM,
  12. QUALITY_PARAM,
  13. POWER_PARAM,
  14. NUM_PARAMS
  15. };
  16. enum InputsIds {
  17. SIGNALA_INPUT,
  18. SIGNALB_INPUT,
  19. SIGNALC_INPUT,
  20. SIGNALD_INPUT,
  21. NUM_INPUTS
  22. };
  23. enum OutputsIds {
  24. SIGNALA_OUTPUT,
  25. SIGNALB_OUTPUT,
  26. SIGNALC_OUTPUT,
  27. SIGNALD_OUTPUT,
  28. NUM_OUTPUTS
  29. };
  30. enum LightsIds {
  31. QUALITY_HIGH_LIGHT,
  32. QUALITY_GOOD_LIGHT,
  33. POWER_ON_LIGHT,
  34. NUM_LIGHTS
  35. };
  36. enum Quality {
  37. QUALITY_HIGH,
  38. QUALITY_GOOD
  39. };
  40. bool _running = false;
  41. int _averageN;
  42. ChannelAnalyzer* _channelA = NULL;
  43. ChannelAnalyzer* _channelB = NULL;
  44. ChannelAnalyzer* _channelC = NULL;
  45. ChannelAnalyzer* _channelD = NULL;
  46. float _range = 0.0;
  47. float _smooth = 0.0;
  48. Quality _quality = QUALITY_GOOD;
  49. const SpectrumAnalyzer::Overlap _overlap = SpectrumAnalyzer::OVERLAP_2;
  50. const int _binAverageN = 2;
  51. Analyzer() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
  52. onReset();
  53. }
  54. virtual ~Analyzer() {
  55. onReset();
  56. }
  57. void onReset() override;
  58. void onSampleRateChange() override;
  59. void resetChannels();
  60. SpectrumAnalyzer::Size size();
  61. void step() override;
  62. void stepChannel(ChannelAnalyzer*& channelPointer, bool running, Input& input, Output& output);
  63. };
  64. } // namespace bogaudio