|
|
@@ -102,6 +102,12 @@ public: |
|
|
|
{
|
|
|
|
envelopeVal = 0.0f;
|
|
|
|
currentState = State::idle;
|
|
|
|
|
|
|
|
if (resetReleaseRate)
|
|
|
|
{
|
|
|
|
releaseRate = static_cast<float> (sustainLevel / (currentParameters.release * sr));
|
|
|
|
resetReleaseRate = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Starts the attack phase of the envelope. */
|
|
|
@@ -120,7 +126,10 @@ public: |
|
|
|
if (releaseRate > 0.0f)
|
|
|
|
{
|
|
|
|
if (currentState != State::sustain)
|
|
|
|
{
|
|
|
|
releaseRate = static_cast<float> (envelopeVal / (currentParameters.release * sr));
|
|
|
|
resetReleaseRate = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
currentState = State::release;
|
|
|
|
}
|
|
|
@@ -229,11 +238,8 @@ private: |
|
|
|
Parameters currentParameters;
|
|
|
|
|
|
|
|
double sr = 0.0;
|
|
|
|
|
|
|
|
float envelopeVal = 0.0f;
|
|
|
|
|
|
|
|
float sustainLevel = 0.0f;
|
|
|
|
float attackRate = 0.0f, decayRate = 0.0f, releaseRate = 0.0f;
|
|
|
|
float envelopeVal = 0.0f, sustainLevel = 0.0f, attackRate = 0.0f, decayRate = 0.0f, releaseRate = 0.0f;
|
|
|
|
bool resetReleaseRate = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace juce
|