void MaybeAdvancesStage() { if (CurrentStage == AdsrStage.Attack) { if (currentSample > numAttackSamples) { CurrentStage = AdsrStage.Decay; } } if (CurrentStage == AdsrStage.Decay) { if (currentSample > numAttackSamples + numDecaySamples) { CurrentStage = AdsrStage.Sustain; } } if (CurrentStage == AdsrStage.Release) { if (currentSample - releaseSample > numReleaseSamples) { CurrentStage = AdsrStage.Off; } } }
public void Reset() { currentSample = 0; CurrentStage = AdsrStage.Attack; }
public void Release() { CurrentStage = AdsrStage.Release; releaseSample = currentSample; }