60 float decayTimeSeconds,
62 float releaseTimeSeconds)
63 :
attack (attackTimeSeconds),
64 decay (decayTimeSeconds),
218 template <
typename FloatType>
221 jassert (startSample + numSamples <= buffer.getNumSamples());
225 buffer.clear (startSample, numSamples);
231 buffer.applyGain (startSample, numSamples,
parameters.sustain);
235 auto numChannels = buffer.getNumChannels();
237 while (--numSamples >= 0)
241 for (
int i = 0;
i < numChannels; ++
i)
242 buffer.getWritePointer (
i)[startSample] *= env;
252 auto getRate = [] (
float distance,
float timeInSeconds,
double sr)
254 return timeInSeconds > 0.0f ? (float) (distance / (timeInSeconds * sr)) : -1.0f;
288 enum class State { idle, attack, decay, sustain, release };
#define noexcept
Definition DistrhoDefines.h:72
void setSampleRate(double newSampleRate) noexcept
Definition juce_ADSR.h:103
void noteOff() noexcept
Definition juce_ADSR.h:137
bool isActive() const noexcept
Definition juce_ADSR.h:96
void reset() noexcept
Definition juce_ADSR.h:111
float getNextSample() noexcept
Definition juce_ADSR.h:158
float decayRate
Definition juce_ADSR.h:294
void setParameters(const Parameters &newParameters)
Definition juce_ADSR.h:80
State state
Definition juce_ADSR.h:290
float envelopeVal
Definition juce_ADSR.h:294
void goToNextState() noexcept
Definition juce_ADSR.h:269
double sampleRate
Definition juce_ADSR.h:293
void recalculateRates() noexcept
Definition juce_ADSR.h:250
State
Definition juce_ADSR.h:288
@ sustain
Definition juce_ADSR.h:288
@ release
Definition juce_ADSR.h:288
@ decay
Definition juce_ADSR.h:288
@ idle
Definition juce_ADSR.h:288
@ attack
Definition juce_ADSR.h:288
void noteOn() noexcept
Definition juce_ADSR.h:118
Parameters parameters
Definition juce_ADSR.h:291
const Parameters & getParameters() const noexcept
Definition juce_ADSR.h:93
float releaseRate
Definition juce_ADSR.h:294
void applyEnvelopeToBuffer(AudioBuffer< FloatType > &buffer, int startSample, int numSamples)
Definition juce_ADSR.h:219
float attackRate
Definition juce_ADSR.h:294
ADSR()
Definition juce_ADSR.h:44
Definition juce_AudioSampleBuffer.h:34
register unsigned i
Definition inflate.c:1575
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Definition juce_ADSR.h:56
float attack
Definition juce_ADSR.h:70
Parameters(float attackTimeSeconds, float decayTimeSeconds, float sustainLevel, float releaseTimeSeconds)
Definition juce_ADSR.h:59
float sustain
Definition juce_ADSR.h:70
float release
Definition juce_ADSR.h:70
float decay
Definition juce_ADSR.h:70
#define const
Definition zconf.h:137