Browse Source

Update SchmittTrigger calls

tags/v0.6.0
Andrew Belt 7 years ago
parent
commit
9a6f3d9b77
4 changed files with 7 additions and 13 deletions
  1. +1
    -3
      src/ADSR.cpp
  2. +3
    -4
      src/LFO.cpp
  3. +1
    -2
      src/Scope.cpp
  4. +2
    -4
      src/SequentialSwitch.cpp

+ 1
- 3
src/ADSR.cpp View File

@@ -35,9 +35,7 @@ struct ADSR : Module {
float env = 0.0f; float env = 0.0f;
SchmittTrigger trigger; SchmittTrigger trigger;


ADSR() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
trigger.setThresholds(0.0f, 1.0f);
}
ADSR() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {}
void step() override; void step() override;
}; };




+ 3
- 4
src/LFO.cpp View File

@@ -9,9 +9,8 @@ struct LowFrequencyOscillator {
bool offset = false; bool offset = false;
bool invert = false; bool invert = false;
SchmittTrigger resetTrigger; SchmittTrigger resetTrigger;
LowFrequencyOscillator() {
resetTrigger.setThresholds(0.0f, 0.01f);
}

LowFrequencyOscillator() {}
void setPitch(float pitch) { void setPitch(float pitch) {
pitch = fminf(pitch, 8.0f); pitch = fminf(pitch, 8.0f);
freq = powf(2.0f, pitch); freq = powf(2.0f, pitch);
@@ -21,7 +20,7 @@ struct LowFrequencyOscillator {
pw = clamp(pw_, pwMin, 1.0f - pwMin); pw = clamp(pw_, pwMin, 1.0f - pwMin);
} }
void setReset(float reset) { void setReset(float reset) {
if (resetTrigger.process(reset)) {
if (resetTrigger.process(reset / 0.01f)) {
phase = 0.0f; phase = 0.0f;
} }
} }


+ 1
- 2
src/Scope.cpp View File

@@ -116,12 +116,11 @@ void Scope::step() {
frameIndex++; frameIndex++;


// Must go below 0.1fV to trigger // Must go below 0.1fV to trigger
resetTrigger.setThresholds(params[TRIG_PARAM].value - 0.1f, params[TRIG_PARAM].value);
float gate = external ? inputs[TRIG_INPUT].value : inputs[X_INPUT].value; float gate = external ? inputs[TRIG_INPUT].value : inputs[X_INPUT].value;


// Reset if triggered // Reset if triggered
float holdTime = 0.1f; float holdTime = 0.1f;
if (resetTrigger.process(gate) || (frameIndex >= engineGetSampleRate() * holdTime)) {
if (resetTrigger.process(rescale(gate, params[TRIG_PARAM].value - 0.1f, params[TRIG_PARAM].value, 0.f, 1.f)) || (frameIndex >= engineGetSampleRate() * holdTime)) {
bufferIndex = 0; frameIndex = 0; return; bufferIndex = 0; frameIndex = 0; return;
} }




+ 2
- 4
src/SequentialSwitch.cpp View File

@@ -30,8 +30,6 @@ struct SequentialSwitch : Module {
SlewLimiter channelFilter[4]; SlewLimiter channelFilter[4];


SequentialSwitch() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { SequentialSwitch() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
clockTrigger.setThresholds(0.0f, 2.0f);
resetTrigger.setThresholds(0.0f, 2.0f);
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
channelFilter[i].rise = 0.01f; channelFilter[i].rise = 0.01f;
channelFilter[i].fall = 0.01f; channelFilter[i].fall = 0.01f;
@@ -40,10 +38,10 @@ struct SequentialSwitch : Module {


void step() override { void step() override {
// Determine current channel // Determine current channel
if (clockTrigger.process(inputs[CLOCK_INPUT].value)) {
if (clockTrigger.process(inputs[CLOCK_INPUT].value / 2.f)) {
channel++; channel++;
} }
if (resetTrigger.process(inputs[RESET_INPUT].value)) {
if (resetTrigger.process(inputs[RESET_INPUT].value / 2.f)) {
channel = 0; channel = 0;
} }
int channels = 4 - (int) params[CHANNELS_PARAM].value; int channels = 4 - (int) params[CHANNELS_PARAM].value;


Loading…
Cancel
Save