zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit ec54033ad59833e1c037f87ebabe995c7eed71e7
parent 239bf4956a6c72ab1378c8afb92b9cdc13b7cdc1
Author: Christopher A. Oliver <caowasteland@gmail.com>
Date:   Sat,  2 Jan 2016 15:18:54 -0500

Round envelope segment lengths up to buffer size multiple.

Diffstat:
Msrc/Synth/Envelope.cpp | 5+++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/Synth/Envelope.cpp b/src/Synth/Envelope.cpp @@ -45,10 +45,11 @@ Envelope::Envelope(EnvelopeParams &pars, float basefreq, float bufferdt) if((mode == 2) && linearenvelope) mode = 1; //change to linear - for(int i = 0; i < MAX_ENVELOPE_POINTS; ++i) { + for(int i = 0; i < envpoints; ++i) { const float tmp = pars.getdt(i) / 1000.0f * envstretch; if(tmp > bufferdt) - envdt[i] = bufferdt / tmp; + envdt[i] = + i == envpoints ? bufferdt / tmp : 1 / ceil(tmp / bufferdt); else envdt[i] = 2.0f; //any value larger than 1