|
|
@ -3,7 +3,8 @@ |
|
|
|
|
|
|
|
#include "daisysp.h" |
|
|
|
#include "instr_abstract.hh" |
|
|
|
|
|
|
|
#include "utils.hh" |
|
|
|
#include "globals.hh" |
|
|
|
namespace dsp = daisysp; |
|
|
|
|
|
|
|
namespace Heck { |
|
|
@ -20,7 +21,7 @@ namespace Heck { |
|
|
|
decay_.SetTime(dsp::ADENV_SEG_DECAY, 0.1); |
|
|
|
decay_.SetMax(1); |
|
|
|
decay_.SetMin(0); |
|
|
|
decay_.SetCurve(-18); |
|
|
|
decay_.SetCurve(-50); |
|
|
|
|
|
|
|
// Vol
|
|
|
|
ctl_volume_ = 0.; |
|
|
@ -28,11 +29,12 @@ namespace Heck { |
|
|
|
// Filter
|
|
|
|
ladder_.Init(Constants::SAMPLERATE); |
|
|
|
ladder_.SetFilterMode(daisysp::LadderFilter::FilterMode::LP24); |
|
|
|
ladder_.SetRes(0.7); |
|
|
|
ladder_.SetRes(0.4); |
|
|
|
ladder_.SetInputDrive(1.3); |
|
|
|
|
|
|
|
// Drive
|
|
|
|
od_.Init(); |
|
|
|
od_.SetDrive(0.425); |
|
|
|
} |
|
|
|
|
|
|
|
float nextsample() |
|
|
@ -54,7 +56,7 @@ namespace Heck { |
|
|
|
|
|
|
|
void decay(float val) |
|
|
|
{ |
|
|
|
decay_.SetTime(dsp::ADENV_SEG_DECAY, 0.01 + val * 8.); |
|
|
|
decay_.SetTime(dsp::ADENV_SEG_DECAY, 0.01 + val * 12.); |
|
|
|
} |
|
|
|
|
|
|
|
void volume(float vol) |
|
|
@ -70,7 +72,7 @@ namespace Heck { |
|
|
|
|
|
|
|
void drive(float amt) |
|
|
|
{ |
|
|
|
od_.SetDrive(0.35 + amt * 0.15); |
|
|
|
od_.SetDrive(scalen_min_max(amt, 0.35, 0.5)); |
|
|
|
} |
|
|
|
|
|
|
|
// range: 0-1
|
|
|
@ -80,14 +82,17 @@ namespace Heck { |
|
|
|
|
|
|
|
// MID
|
|
|
|
if (ctl_filtermode_ < 0.33) { |
|
|
|
hw.PrintLine("Track: Filter BP"); |
|
|
|
ladder_.SetFilterMode(daisysp::LadderFilter::FilterMode::BP24); |
|
|
|
} |
|
|
|
// HIGH
|
|
|
|
if (ctl_filtermode_ >= 0.33 && ctl_filtermode_ < 0.66) { |
|
|
|
hw.PrintLine("Track: Filter HP"); |
|
|
|
ladder_.SetFilterMode(daisysp::LadderFilter::FilterMode::HP24); |
|
|
|
} |
|
|
|
// LOW
|
|
|
|
if (ctl_filtermode_ >= 0.66) { |
|
|
|
hw.PrintLine("Track: Filter LP"); |
|
|
|
ladder_.SetFilterMode(daisysp::LadderFilter::FilterMode::LP24); |
|
|
|
} |
|
|
|
} |
|
|
|