From 1509e8a327da00d161098ebb2fc5f64c48f05260 Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Sun, 7 Nov 2021 21:30:27 -0500 Subject: [PATCH] AD display text --- src/droplets/ad_droplet.cpp | 62 +++++++++++++++++++++++++++++++++++-- src/droplets/ad_droplet.h | 10 ++++-- 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/src/droplets/ad_droplet.cpp b/src/droplets/ad_droplet.cpp index f69678c..4d7cd16 100644 --- a/src/droplets/ad_droplet.cpp +++ b/src/droplets/ad_droplet.cpp @@ -11,6 +11,7 @@ void AD::Init(DaisyPatch* m_patch, env.SetCurve(0.0f); attack_param.Init(attack_knob, .01f, 3.0f, Parameter::EXPONENTIAL); decay_param.Init(decay_knob, .01f, 3.0f, Parameter::EXPONENTIAL); + curve_param.Init(attack_knob, -10.f, 10.0f, Parameter::LINEAR); } void AD::Process(DacHandle::Channel chn, @@ -19,8 +20,10 @@ void AD::Process(DacHandle::Channel chn, env.Trigger(); } - env.SetTime(ADENV_SEG_ATTACK, attack_param.Process()); - env.SetTime(ADENV_SEG_DECAY, decay_param.Process()); + attack = attack_param.Process(); + decay = decay_param.Process(); + env.SetTime(ADENV_SEG_ATTACK, attack); + env.SetTime(ADENV_SEG_DECAY, decay); sig = env.Process(); patch->seed.dac.WriteValue(chn, @@ -31,6 +34,18 @@ float AD::GetSignal() { return sig; } +float AD::GetAttack() { + return attack; +} + +float AD::GetDecay() { + return decay; +} + +float AD::GetCurve() { + return curve; +} + ADDroplet::ADDroplet(DaisyPatch* m_patch, DropletState m_state, float sample_rate) : @@ -90,5 +105,48 @@ void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer o } void ADDroplet::Draw() { + WriteString(Patch(), + GetScreenMin(), + 10, + Font_6x8, + "A: " + + std::to_string(static_cast(1000*ad[0].GetAttack())) + + "ms"); + WriteString(Patch(), + GetScreenMin(), + 20, + Font_6x8, + "D: " + + std::to_string(static_cast(1000*ad[0].GetDecay())) + + "ms"); + WriteString(Patch(), + GetScreenMin(), + 30, + Font_6x8, + "C: " + + std::to_string(static_cast(1000*ad[0].GetCurve()))); + if(GetState() == DropletState::kFull) { + int mid = (GetScreenMax() - GetScreenMin())/2; + WriteString(Patch(), + mid, + 10, + Font_6x8, + "A: " + + std::to_string(static_cast(1000*ad[1].GetAttack())) + + "ms"); + WriteString(Patch(), + mid, + 20, + Font_6x8, + "D: " + + std::to_string(static_cast(1000*ad[1].GetDecay())) + + "ms"); + WriteString(Patch(), + mid, + 30, + Font_6x8, + "C: " + + std::to_string(static_cast(1000*ad[1].GetCurve()))); + } DrawName("AD"); } diff --git a/src/droplets/ad_droplet.h b/src/droplets/ad_droplet.h index 7c08ead..5c35b3f 100644 --- a/src/droplets/ad_droplet.h +++ b/src/droplets/ad_droplet.h @@ -15,6 +15,7 @@ using namespace daisysp; class AD { private: AdEnv env; + float attack, decay, curve = 0; Parameter attack_param; Parameter decay_param; Parameter curve_param; @@ -22,13 +23,16 @@ private: DaisyPatch* patch; public: void Init(DaisyPatch* m_patch, - float samplerate, - AnalogControl attackKnob, - AnalogControl decaynob); + float sample_rate, + AnalogControl attack_knob, + AnalogControl decay_knob); void Process(DacHandle::Channel chn, DaisyPatch::GateInput gate); float GetSignal(); + float GetAttack(); + float GetDecay(); + float GetCurve(); }; class ADDroplet: public Droplet {