BogaudioModules

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

Detune.hpp (1312B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 #include "dsp/pitch.hpp"
      5 
      6 using namespace bogaudio::dsp;
      7 
      8 extern Model* modelDetune;
      9 
     10 namespace bogaudio {
     11 
     12 struct Detune : BGModule {
     13 	enum ParamsIds {
     14 		CENTS_PARAM,
     15 		NUM_PARAMS
     16 	};
     17 
     18 	enum InputsIds {
     19 		CV_INPUT,
     20 		IN_INPUT,
     21 		NUM_INPUTS
     22 	};
     23 
     24 	enum OutputsIds {
     25 		THRU_OUTPUT,
     26 		OUT_PLUS_OUTPUT,
     27 		OUT_MINUS_OUTPUT,
     28 		NUM_OUTPUTS
     29 	};
     30 
     31 	float _cents[maxChannels] {};
     32 	float _lastCents[maxChannels];
     33 	float _lastInCV[maxChannels];
     34 	float _plusCV[maxChannels] {};
     35 	float _minusCV[maxChannels] {};
     36 
     37 	Detune() {
     38 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     39 		configParam(CENTS_PARAM, 0.0f, 50.0f, 0.0f, "Cents");
     40 		paramQuantities[CENTS_PARAM]->snapEnabled = true;
     41 
     42 		configInput(CV_INPUT, "Detune CV");
     43 		configInput(IN_INPUT, "Pitch (1V/octave)");
     44 
     45 		configOutput(THRU_OUTPUT, "Pitch through (1V/octave)");
     46 		configOutput(OUT_PLUS_OUTPUT, "Raised pitch (1V/octave)");
     47 		configOutput(OUT_MINUS_OUTPUT, "Lowered pitch (1V/octave)");
     48 
     49 		for (int i = 0; i < maxChannels; ++i) {
     50 			_lastCents[i] = -1.0f;
     51 			_lastInCV[i] = -1000.0f;
     52 		}
     53 	}
     54 
     55 	bool active() override;
     56 	int channels() override;
     57 	void modulateChannel(int c) override;
     58 	void processChannel(const ProcessArgs& args, int c) override;
     59 	void processBypass(const ProcessArgs& args) override;
     60 };
     61 
     62 } // namespace bogaudio