SFXR: Avoid NaNs by making envelope length minimum 1 sample

(this time in the stable-1.1 branch)
This commit is contained in:
Raine M. Ekman
2015-03-19 21:03:40 +02:00
parent d14f4511b2
commit 898781484d

View File

@@ -133,10 +133,18 @@ void SfxrSynth::resetSample( bool restart )
env_vol=0.0f;
env_stage=0;
env_time=0;
env_length[0]=(int)(s->m_attModel.value()*s->m_attModel.value()*100000.0f);
env_length[1]=(int)(s->m_holdModel.value()*s->m_holdModel.value()*100000.0f);
env_length[2]=(int)(s->m_decModel.value()*s->m_decModel.value()*100000.0f);
// These will be used as divisors later, let's avoid division by 0
for(int i = 0; i < 3; ++i)
{
env_length[i] = (env_length[i] == 0) ? 1 : env_length[i];
}
fphase=pow(s->m_phaserOffsetModel.value(), 2.0f)*1020.0f;
if(s->m_phaserOffsetModel.value()<0.0f) fphase=-fphase;
fdphase=pow(s->m_phaserSweepModel.value(), 2.0f)*1.0f;