--- linuxsampler/trunk/src/engines/gig/EGADSR.cpp 2008/06/02 04:12:34 1747 +++ linuxsampler/trunk/src/engines/gig/EGADSR.cpp 2008/06/22 14:46:46 1748 @@ -308,6 +308,19 @@ if (StepsLeft <= 0) enterEndStage(); } + void EGADSR::enterFadeOutStage(int maxFadeOutSteps) { + Stage = stage_fadeout; + Segment = segment_lin; + StepsLeft = int(Level / (-FadeOutCoeff)); + if (StepsLeft > maxFadeOutSteps) { + StepsLeft = maxFadeOutSteps; + Coeff = -Level / maxFadeOutSteps; + } else { + Coeff = FadeOutCoeff; + } + if (StepsLeft <= 0) enterEndStage(); + } + void EGADSR::enterEndStage() { Stage = stage_end; Segment = segment_end;