MCPcopy Create free account
hub / github.com/VCVRack/AudibleInstruments / process

Method process

src/Kinks.cpp:40–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38 }
39
40 void process(const ProcessArgs& args) override {
41 // Gaussian noise generator
42 float noise = 2.0 * random::normal();
43
44 // S&H
45 if (trigger.process(inputs[TRIG_INPUT].getVoltage() / 0.7)) {
46 sample = inputs[SH_INPUT].getNormalVoltage(noise);
47 }
48
49 // lights
50 lights[SIGN_POS_LIGHT].setSmoothBrightness(fmaxf(0.0, inputs[SIGN_INPUT].getVoltage() / 5.0), args.sampleTime);
51 lights[SIGN_NEG_LIGHT].setSmoothBrightness(fmaxf(0.0, -inputs[SIGN_INPUT].getVoltage() / 5.0), args.sampleTime);
52 float logicSum = inputs[LOGIC_A_INPUT].getVoltage() + inputs[LOGIC_B_INPUT].getVoltage();
53 lights[LOGIC_POS_LIGHT].setSmoothBrightness(fmaxf(0.0, logicSum / 5.0), args.sampleTime);
54 lights[LOGIC_NEG_LIGHT].setSmoothBrightness(fmaxf(0.0, -logicSum / 5.0), args.sampleTime);
55 lights[SH_POS_LIGHT].setBrightness(fmaxf(0.0, sample / 5.0));
56 lights[SH_NEG_LIGHT].setBrightness(fmaxf(0.0, -sample / 5.0));
57
58 // outputs
59 outputs[INVERT_OUTPUT].setVoltage(-inputs[SIGN_INPUT].getVoltage());
60 outputs[HALF_RECTIFY_OUTPUT].setVoltage(fmaxf(0.0, inputs[SIGN_INPUT].getVoltage()));
61 outputs[FULL_RECTIFY_OUTPUT].setVoltage(fabsf(inputs[SIGN_INPUT].getVoltage()));
62 outputs[MAX_OUTPUT].setVoltage(fmaxf(inputs[LOGIC_A_INPUT].getVoltage(), inputs[LOGIC_B_INPUT].getVoltage()));
63 outputs[MIN_OUTPUT].setVoltage(fminf(inputs[LOGIC_A_INPUT].getVoltage(), inputs[LOGIC_B_INPUT].getVoltage()));
64 outputs[NOISE_OUTPUT].setVoltage(noise);
65 outputs[SH_OUTPUT].setVoltage(sample);
66 }
67};
68
69

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected