BogaudioModules

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

Unison.hpp (986B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 
      5 extern Model* modelUnison;
      6 
      7 namespace bogaudio {
      8 
      9 struct Unison : BGModule {
     10 	enum ParamsIds {
     11 		CHANNELS_PARAM,
     12 		DETUNE_PARAM,
     13 		NUM_PARAMS
     14 	};
     15 
     16 	enum InputsIds {
     17 		DETUNE_INPUT,
     18 		PITCH_INPUT,
     19 		GATE_INPUT,
     20 		NUM_INPUTS
     21 	};
     22 
     23 	enum OutputsIds {
     24 		PITCH_OUTPUT,
     25 		GATE_OUTPUT,
     26 		NUM_OUTPUTS
     27 	};
     28 
     29 	const float maxDetuneCents = 50.0f;
     30 	int _channels = 0;
     31 	float _cents = 0.0f;
     32 
     33 	Unison() {
     34 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     35 		configParam(CHANNELS_PARAM, 1.0f, 16.0f, 1.0f, "Channels");
     36 		paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
     37 		configParam(DETUNE_PARAM, 0.0f, maxDetuneCents, 0.0f, "Detune");
     38 
     39 		configInput(DETUNE_INPUT, "Detune CV");
     40 		configInput(PITCH_INPUT, "Pitch (1V/octave)");
     41 		configInput(GATE_INPUT, "Gate");
     42 
     43 		configOutput(PITCH_OUTPUT, "Pitch (1V/octave)");
     44 		configOutput(GATE_OUTPUT, "Gate");
     45 	}
     46 
     47 	void modulate() override;
     48 	void processAll(const ProcessArgs& args) override;
     49 };
     50 
     51 } // namespace bogaudio