Browse Source

Use SchmittTrigger instead of slope trigger for Kinks S&H trigger input

tags/v0.4.0
Andrew Belt 7 years ago
parent
commit
10524f5c9d
1 changed files with 5 additions and 10 deletions
  1. +5
    -10
      src/Kinks.cpp

+ 5
- 10
src/Kinks.cpp View File

@@ -1,10 +1,6 @@
#include "AudibleInstruments.hpp" #include "AudibleInstruments.hpp"




// If the trigger input is rising at a rate of at least DTRIG, the S&H will be triggered
#define DTRIG 5000.0


struct Kinks : Module { struct Kinks : Module {
enum ParamIds { enum ParamIds {
NUM_PARAMS NUM_PARAMS
@@ -28,11 +24,13 @@ struct Kinks : Module {
NUM_OUTPUTS NUM_OUTPUTS
}; };


float lastTrig = 0.0;
SchmittTrigger trigger;
float sample = 0.0; float sample = 0.0;
float lights[3] = {}; float lights[3] = {};


Kinks() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {}
Kinks() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {
trigger.setThresholds(0.0, 0.7);
}
void step(); void step();
}; };


@@ -42,12 +40,9 @@ void Kinks::step() {
float noise = 2.0 * randomNormal(); float noise = 2.0 * randomNormal();


// S&H // S&H
float trig = inputs[TRIG_INPUT].value;
float dtrig = (trig - lastTrig) * gSampleRate;
if (dtrig > DTRIG) {
if (trigger.process(inputs[TRIG_INPUT].value)) {
sample = inputs[SH_INPUT].normalize(noise); sample = inputs[SH_INPUT].normalize(noise);
} }
lastTrig = trig;


// lights // lights
lights[0] = inputs[SIGN_INPUT].value; lights[0] = inputs[SIGN_INPUT].value;


Loading…
Cancel
Save