104 float frequency = 0.0f;
106 float amplitude = 0.0f;
124 float grainAmplitude;
126 float grainFrequency;
132 uint8_t grainChannel;
150 Grain(uint8_t channel, WaveType waveType);
153 void setAttack(
float frequency,
float amplitude,
int duration);
156 void setDecay(
float frequency,
float amplitude,
int duration);
159 void setSustain(
float frequency,
float amplitude,
int duration);
162 void setRelease(
float frequency,
float amplitude,
int duration);
grainState
Definition Grain.h:16
@ READY
Definition Grain.h:17
@ ATTACK
Definition Grain.h:18
@ DECAY
Definition Grain.h:19
@ RELEASE
Definition Grain.h:21
@ SUSTAIN
Definition Grain.h:20
FreqEnv getFreqEnv()
Returns the frequncy envelope struct containing state data.
void setDecay(float frequency, float amplitude, int duration)
Updates grain parameters in the decay state.
Definition Grain.cpp:63
void setWaveType(WaveType waveType)
Sets grain wave type (SINE, COSINE, SQUARE, TRIANGLE, SAWTOOTH)
Definition Grain.cpp:115
float getFrequency()
Returns the current frequency of the grain.
Definition Grain.cpp:285
bool markedForDeletion
Flag to check if a dynamic grain has finished triggering.
Definition Grain.h:143
void setAttack(float frequency, float amplitude, int duration)
Updates grain parameters in the attack state.
Definition Grain.cpp:49
void setRelease(float frequency, float amplitude, int duration)
Updates grain parameters in the release state.
Definition Grain.cpp:93
int getDecayDuration()
Returns the decay duration.
Definition Grain.cpp:305
void setSustain(float frequency, float amplitude, int duration)
Updates grain parameters in the sustain state.
Definition Grain.cpp:78
void transitionTo(grainState newState)
Helper function to perform necessary operations on grain parameters when transitioning between run st...
Definition Grain.cpp:195
bool isDynamic
Flag to check if a grain is dynamic or static.
Definition Grain.h:141
int getAttackDuration()
Returns the attack duration.
Definition Grain.cpp:295
void printGrain()
For debugging: Prints a grain's state, frequency, and amplitude.
Definition Grain.cpp:366
void setFreqEnv(FreqEnv freqEnv)
Sets grain parameters for the frequency envelope.
Definition Grain.cpp:335
Grain()
Default constructor to allocate a new grain.
Definition Grain.cpp:14
AmpEnv getAmpEnv()
Returns the amplitude envelope struct containing state data.
void setChannel(uint8_t channel)
Sets the channel of this grain.
Definition Grain.cpp:105
grainState getGrainState()
Returns the state of a grain (READY, ATTACK, DECAY, SUSTAIN, RELEASE)
Definition Grain.cpp:265
int getReleaseDuration()
Returns the release duration.
Definition Grain.cpp:325
void setAmpEnv(AmpEnv ampEnv)
Sets grain parameters for the amplitude envelope.
Definition Grain.cpp:348
int getSustainDuration()
Returns the sustain duration.
Definition Grain.cpp:315
float getAmplitude()
Returns the current amplitude of the grain.
Definition Grain.cpp:275
void pushGrain(Grain *grain)
Pushes a grain to the tail of the list.
Definition Grain.cpp:376
void updateAndReap()
Updates grains and deletes finished dynamic grains.
Definition Grain.cpp:406
void clearList()
Deletes all grains in the list.
Definition Grain.cpp:390
GrainList()
Default constructor.
Definition Grain.h:236
GrainNode * getHead()
Returns the head of the list.
Definition Grain.cpp:443
int sustainDuration
Definition Grain.h:76
float releaseAmplitude
Definition Grain.h:77
int attackDuration
Definition Grain.h:72
float curve
Definition Grain.h:79
int releaseDuration
Definition Grain.h:78
float sustainAmplitude
Definition Grain.h:75
float attackAmplitude
Definition Grain.h:71
int decayDuration
Definition Grain.h:74
float decayAmplitude
Definition Grain.h:73
float releaseFrequency
Definition Grain.h:42
float decayFrequency
Definition Grain.h:40
float sustainFrequency
Definition Grain.h:41
float attackFrequency
Definition Grain.h:39
GrainNode(Grain *object)
Default constructor.
Definition Grain.h:218
Grain * reference
Reference containing grain data.
Definition Grain.h:220
GrainNode * next
Pointer to the next grain in the list.
Definition Grain.h:222