mirror of
https://github.com/AquaMorph/Droplets.git
synced 2025-05-21 01:36:59 +00:00
Basic AD switching
This commit is contained in:
parent
c9a10c9b2e
commit
13f7ea65d5
@ -19,11 +19,15 @@ void AD::Process(DacHandle::Channel chn,
|
|||||||
if(patch->gate_input[gate].Trig()) {
|
if(patch->gate_input[gate].Trig()) {
|
||||||
env.Trigger();
|
env.Trigger();
|
||||||
}
|
}
|
||||||
|
if (curve_menu) {
|
||||||
|
curve = curve_param.Process();
|
||||||
|
} else {
|
||||||
attack = attack_param.Process();
|
attack = attack_param.Process();
|
||||||
|
}
|
||||||
decay = decay_param.Process();
|
decay = decay_param.Process();
|
||||||
env.SetTime(ADENV_SEG_ATTACK, attack);
|
env.SetTime(ADENV_SEG_ATTACK, attack);
|
||||||
env.SetTime(ADENV_SEG_DECAY, decay);
|
env.SetTime(ADENV_SEG_DECAY, decay);
|
||||||
|
env.SetCurve(curve);
|
||||||
|
|
||||||
sig = env.Process();
|
sig = env.Process();
|
||||||
patch->seed.dac.WriteValue(chn,
|
patch->seed.dac.WriteValue(chn,
|
||||||
@ -46,6 +50,14 @@ float AD::GetCurve() {
|
|||||||
return curve;
|
return curve;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AD::GetMenu() {
|
||||||
|
return curve_menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AD::ToggleCurve() {
|
||||||
|
curve_menu = !curve_menu;
|
||||||
|
}
|
||||||
|
|
||||||
ADDroplet::ADDroplet(DaisyPatch* m_patch,
|
ADDroplet::ADDroplet(DaisyPatch* m_patch,
|
||||||
DropletState m_state,
|
DropletState m_state,
|
||||||
float sample_rate) :
|
float sample_rate) :
|
||||||
@ -80,7 +92,16 @@ ADDroplet::ADDroplet(DaisyPatch* m_patch,
|
|||||||
|
|
||||||
ADDroplet::~ADDroplet() {}
|
ADDroplet::~ADDroplet() {}
|
||||||
|
|
||||||
void ADDroplet::Control() {}
|
void ADDroplet::Control() {
|
||||||
|
if (Patch()->encoder.Pressed()) {
|
||||||
|
if (Patch()->encoder.TimeHeldMs() < 10) {
|
||||||
|
ad[0].ToggleCurve();
|
||||||
|
if (GetState() == DropletState::kFull) {
|
||||||
|
ad[1].ToggleCurve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer out, size_t size) {
|
void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer out, size_t size) {
|
||||||
Patch()->ProcessAnalogControls();
|
Patch()->ProcessAnalogControls();
|
||||||
@ -106,22 +127,22 @@ void ADDroplet::Process(AudioHandle::InputBuffer in, AudioHandle::OutputBuffer o
|
|||||||
|
|
||||||
void ADDroplet::Draw() {
|
void ADDroplet::Draw() {
|
||||||
WriteString(Patch(),
|
WriteString(Patch(),
|
||||||
GetScreenMin(),
|
GetScreenMin()+3,
|
||||||
10,
|
11,
|
||||||
Font_6x8,
|
Font_6x8,
|
||||||
"A: " +
|
"A: " +
|
||||||
FloatToString(ad[0].GetAttack(), 2) +
|
FloatToString(ad[0].GetAttack(), 2) +
|
||||||
"s");
|
"s");
|
||||||
WriteString(Patch(),
|
WriteString(Patch(),
|
||||||
GetScreenMin(),
|
GetScreenMin()+3,
|
||||||
20,
|
21,
|
||||||
Font_6x8,
|
Font_6x8,
|
||||||
"D: " +
|
"D: " +
|
||||||
FloatToString(ad[0].GetDecay(), 2) +
|
FloatToString(ad[0].GetDecay(), 2) +
|
||||||
"s");
|
"s");
|
||||||
WriteString(Patch(),
|
WriteString(Patch(),
|
||||||
GetScreenMin(),
|
GetScreenMin()+3,
|
||||||
30,
|
31,
|
||||||
Font_6x8,
|
Font_6x8,
|
||||||
"C: " +
|
"C: " +
|
||||||
FloatToString(ad[0].GetCurve(), 2));
|
FloatToString(ad[0].GetCurve(), 2));
|
||||||
@ -129,24 +150,32 @@ void ADDroplet::Draw() {
|
|||||||
int mid = (GetScreenMax() - GetScreenMin())/2;
|
int mid = (GetScreenMax() - GetScreenMin())/2;
|
||||||
WriteString(Patch(),
|
WriteString(Patch(),
|
||||||
mid,
|
mid,
|
||||||
10,
|
11,
|
||||||
Font_6x8,
|
Font_6x8,
|
||||||
"A: " +
|
"A: " +
|
||||||
FloatToString(ad[1].GetAttack(), 2) +
|
FloatToString(ad[1].GetAttack(), 2) +
|
||||||
"s");
|
"s");
|
||||||
WriteString(Patch(),
|
WriteString(Patch(),
|
||||||
mid,
|
mid,
|
||||||
20,
|
21,
|
||||||
Font_6x8,
|
Font_6x8,
|
||||||
"D: " +
|
"D: " +
|
||||||
FloatToString(ad[1].GetDecay(), 2) +
|
FloatToString(ad[1].GetDecay(), 2) +
|
||||||
"s");
|
"s");
|
||||||
WriteString(Patch(),
|
WriteString(Patch(),
|
||||||
mid,
|
mid,
|
||||||
30,
|
31,
|
||||||
Font_6x8,
|
Font_6x8,
|
||||||
"C: " +
|
"C: " +
|
||||||
FloatToString(ad[1].GetCurve(), 2));
|
FloatToString(ad[1].GetCurve(), 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ad[0].GetMenu()) {
|
||||||
|
DrawSolidRect(Patch(), GetScreenMin(), 30, GetScreenMin()+1, 39, true);
|
||||||
|
} else {
|
||||||
|
DrawSolidRect(Patch(), GetScreenMin(), 10, GetScreenMin()+1, 19, true);
|
||||||
|
}
|
||||||
|
DrawSolidRect(Patch(), GetScreenMin(), 20, GetScreenMin()+1, 29, true);
|
||||||
|
|
||||||
DrawName("AD");
|
DrawName("AD");
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ private:
|
|||||||
Parameter curve_param;
|
Parameter curve_param;
|
||||||
float sig;
|
float sig;
|
||||||
DaisyPatch* patch;
|
DaisyPatch* patch;
|
||||||
|
bool curve_menu = false;
|
||||||
public:
|
public:
|
||||||
void Init(DaisyPatch* m_patch,
|
void Init(DaisyPatch* m_patch,
|
||||||
float sample_rate,
|
float sample_rate,
|
||||||
@ -33,6 +34,8 @@ public:
|
|||||||
float GetAttack();
|
float GetAttack();
|
||||||
float GetDecay();
|
float GetDecay();
|
||||||
float GetCurve();
|
float GetCurve();
|
||||||
|
bool GetMenu();
|
||||||
|
void ToggleCurve();
|
||||||
};
|
};
|
||||||
|
|
||||||
class ADDroplet: public Droplet {
|
class ADDroplet: public Droplet {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user