118 float frequency = 0.0f;
120 float amplitude = 0.0f;
138 float grainAmplitude;
140 float grainFrequency;
146 uint8_t grainChannel;
164 Grain(uint8_t channel, WaveType waveType);
167 void setAttack(
float frequency,
float amplitude,
int duration);
170 void setDecay(
float frequency,
float amplitude,
int duration);
173 void setSustain(
float frequency,
float amplitude,
int duration);
176 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
DurEnv getDurEnv()
Returns the duration envelope struct containing duration data.
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:286
bool markedForDeletion
Flag to check if a dynamic grain has finished triggering.
Definition Grain.h:157
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:306
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:155
int getAttackDuration()
Returns the attack duration.
Definition Grain.cpp:296
void printGrain()
For debugging: Prints a grain's state, frequency, and amplitude.
Definition Grain.cpp:376
void setFreqEnv(FreqEnv freqEnv)
Sets grain parameters for the frequency envelope.
Definition Grain.cpp:336
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:266
int getReleaseDuration()
Returns the release duration.
Definition Grain.cpp:326
void setDurEnv(DurEnv durEnv)
Sets grain window duration for the duration envelope.
Definition Grain.cpp:362
void setAmpEnv(AmpEnv ampEnv)
Sets grain parameters for the amplitude envelope.
Definition Grain.cpp:349
int getSustainDuration()
Returns the sustain duration.
Definition Grain.cpp:316
float getAmplitude()
Returns the current amplitude of the grain.
Definition Grain.cpp:276
void pushGrain(Grain *grain)
Pushes a grain to the tail of the list.
Definition Grain.cpp:386
void updateAndReap()
Updates grains and deletes finished dynamic grains.
Definition Grain.cpp:416
void clearList()
Deletes all grains in the list.
Definition Grain.cpp:400
GrainList()
Default constructor.
Definition Grain.h:256
GrainNode * getHead()
Returns the head of the list.
Definition Grain.cpp:450
int sustainDuration
Definition Grain.h:66
float releaseAmplitude
Definition Grain.h:67
int attackDuration
Definition Grain.h:62
float curve
Definition Grain.h:69
int releaseDuration
Definition Grain.h:68
float sustainAmplitude
Definition Grain.h:65
float attackAmplitude
Definition Grain.h:61
int decayDuration
Definition Grain.h:64
float decayAmplitude
Definition Grain.h:63
int releaseDuration
Definition Grain.h:92
int sustainDuration
Definition Grain.h:91
int decayDuration
Definition Grain.h:90
float curve
Definition Grain.h:93
int attackDuration
Definition Grain.h:89
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:238
Grain * reference
Reference containing grain data.
Definition Grain.h:240
GrainNode * next
Pointer to the next grain in the list.
Definition Grain.h:242