BogaudioModules

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

Assign.hpp (1416B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 
      5 extern Model* modelAssign;
      6 
      7 namespace bogaudio {
      8 
      9 struct Assign : BGModule {
     10 	enum ParamsIds {
     11 		CHANNELS_PARAM,
     12 		NUM_PARAMS
     13 	};
     14 
     15 	enum InputsIds {
     16 		PITCH_INPUT,
     17 		GATE_INPUT,
     18 		RESET_INPUT,
     19 		NUM_INPUTS
     20 	};
     21 
     22 	enum OutputsIds {
     23 		PITCH_OUTPUT,
     24 		GATE_OUTPUT,
     25 		NUM_OUTPUTS
     26 	};
     27 
     28 	int _channelsOut;
     29 	Trigger _resetTrigger;
     30 	Trigger _gateTrigger[maxChannels];
     31 	bool _gateHigh[maxChannels] {};
     32 	int _pitchInAssignment[maxChannels] {};
     33 	int _gateInAssignment[maxChannels] {};
     34 	int _pitchOutAssignment[maxChannels] {};
     35 	int _gateOutAssignment[maxChannels] {};
     36 	float _lastPitchOut[maxChannels] {};
     37 	unsigned long _assignedAtStep[maxChannels] {};
     38 	int _nextAssign = 0;
     39 	unsigned long _step = 0;
     40 
     41 	Assign() {
     42 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     43 		configParam(CHANNELS_PARAM, 1.0f, 16.0f, 0.0f, "Channels");
     44 		paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
     45 
     46 		configInput(PITCH_INPUT, "Pitch (1V/octave)");
     47 		configInput(GATE_INPUT, "Gate");
     48 		configInput(RESET_INPUT, "Reset");
     49 
     50 		configOutput(PITCH_OUTPUT, "Pitch (1V/octave)");
     51 		configOutput(GATE_OUTPUT, "Gate");
     52 	}
     53 
     54 	void reset() override;
     55 	int channels() override;
     56 	void addChannel(int c) override;
     57 	void removeChannel(int c) override;
     58 	void modulate() override;
     59 	void processChannel(const ProcessArgs& args, int c) override {};
     60 	void postProcess(const ProcessArgs& args) override;
     61 };
     62 
     63 } // namespace bogaudio