fix: remove adsr garbage code
This commit is contained in:
17
inc/ADSR.h
17
inc/ADSR.h
@@ -3,18 +3,14 @@
|
|||||||
#include "Ramp.h"
|
#include "Ramp.h"
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
struct ADSRParameters {
|
|
||||||
float attack_time; // Attack time in seconds
|
|
||||||
float decay_time; // Decay time in seconds
|
|
||||||
float sustain_level; // Sustain level (0 to 1)
|
|
||||||
float release_time;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum ADSRState { sOff, sAttack, sDecay, sSustain, sRelease };
|
|
||||||
|
|
||||||
class ADSR : public Effect {
|
class ADSR : public Effect {
|
||||||
|
enum ADSRState { sOff, sAttack, sDecay, sSustain, sRelease };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ADSRParameters m_parameters;
|
float m_attack_time;
|
||||||
|
float m_decay_time;
|
||||||
|
float m_sustain_level;
|
||||||
|
float m_release_time;
|
||||||
ADSRState m_state;
|
ADSRState m_state;
|
||||||
Ramp* m_ramp;
|
Ramp* m_ramp;
|
||||||
|
|
||||||
@@ -26,7 +22,6 @@ class ADSR : public Effect {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
ADSR(/* args */);
|
ADSR(/* args */);
|
||||||
ADSR(ADSRParameters param);
|
|
||||||
~ADSR();
|
~ADSR();
|
||||||
void Trigger() override;
|
void Trigger() override;
|
||||||
void Release() override;
|
void Release() override;
|
||||||
|
|||||||
27
src/ADSR.cpp
27
src/ADSR.cpp
@@ -3,15 +3,13 @@
|
|||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
ADSR::ADSR(/* args */) {
|
ADSR::ADSR(/* args */) {
|
||||||
m_parameters.attack_time = 1.f;
|
m_attack_time = 1.f;
|
||||||
m_parameters.decay_time = 0.4f;
|
m_decay_time = 0.4f;
|
||||||
m_parameters.sustain_level = 0.6f;
|
m_sustain_level = 0.6f;
|
||||||
m_parameters.release_time = 0.8f;
|
m_release_time = 0.8f;
|
||||||
m_ramp = new Ramp(0, SAMPLE_RATE);
|
m_ramp = new Ramp(0, SAMPLE_RATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ADSR::ADSR(ADSRParameters param) { m_parameters = param; }
|
|
||||||
|
|
||||||
ADSR::~ADSR() { delete m_ramp; }
|
ADSR::~ADSR() { delete m_ramp; }
|
||||||
|
|
||||||
bool ADSR::is_attack_elapsed() {
|
bool ADSR::is_attack_elapsed() {
|
||||||
@@ -31,8 +29,7 @@ void ADSR::recheck_state() {
|
|||||||
case sAttack:
|
case sAttack:
|
||||||
if (is_attack_elapsed()) {
|
if (is_attack_elapsed()) {
|
||||||
m_state = sDecay;
|
m_state = sDecay;
|
||||||
m_ramp->RampTo(m_parameters.sustain_level,
|
m_ramp->RampTo(m_sustain_level, m_decay_time);
|
||||||
m_parameters.decay_time);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case sDecay:
|
case sDecay:
|
||||||
@@ -58,7 +55,7 @@ void ADSR::process_sample(float* sample) {
|
|||||||
} else if (m_state == sDecay) {
|
} else if (m_state == sDecay) {
|
||||||
(*sample) = (*sample) * m_ramp->Process();
|
(*sample) = (*sample) * m_ramp->Process();
|
||||||
} else if (m_state == sSustain) {
|
} else if (m_state == sSustain) {
|
||||||
(*sample) = (*sample) * m_parameters.sustain_level;
|
(*sample) = (*sample) * m_sustain_level;
|
||||||
} else if (m_state == sRelease) {
|
} else if (m_state == sRelease) {
|
||||||
(*sample) = (*sample) * m_ramp->Process();
|
(*sample) = (*sample) * m_ramp->Process();
|
||||||
}
|
}
|
||||||
@@ -72,13 +69,13 @@ void ADSR::Trigger() {
|
|||||||
m_state = sAttack;
|
m_state = sAttack;
|
||||||
};
|
};
|
||||||
|
|
||||||
m_ramp->RampTo(1, m_parameters.attack_time);
|
m_ramp->RampTo(1, m_attack_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ADSR::Release() {
|
void ADSR::Release() {
|
||||||
write_log("Unset ADSR\n");
|
write_log("Unset ADSR\n");
|
||||||
m_state = sRelease;
|
m_state = sRelease;
|
||||||
m_ramp->RampTo(0, m_parameters.release_time);
|
m_ramp->RampTo(0, m_release_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ADSR::Process(std::vector<float>& samples) {
|
void ADSR::Process(std::vector<float>& samples) {
|
||||||
@@ -90,8 +87,8 @@ void ADSR::Process(std::vector<float>& samples) {
|
|||||||
|
|
||||||
void ADSR::SetParameters(float attack, float decay, float sustain,
|
void ADSR::SetParameters(float attack, float decay, float sustain,
|
||||||
float release) {
|
float release) {
|
||||||
m_parameters.attack_time = attack;
|
m_attack_time = attack;
|
||||||
m_parameters.decay_time = decay;
|
m_decay_time = decay;
|
||||||
m_parameters.sustain_level = sustain;
|
m_sustain_level = sustain;
|
||||||
m_parameters.release_time = release;
|
m_release_time = release;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user