--- origsrc/calf-0.90.3/src/audio_fx.cpp 2019-03-04 06:24:12.000000000 +0900 +++ src/calf-0.90.3/src/audio_fx.cpp 2023-09-13 13:47:13.866045100 +0900 @@ -679,7 +679,8 @@ void lookahead_limiter::reset() { buffer_size = bs - bs % channels; // buffer size attack rate _sanitize = true; pos = 0; - nextpos[0] = -1; + if (nextpos) + nextpos[0] = -1; nextlen = 0; nextiter = 0; delta = 0.f; --- origsrc/calf-0.90.3/src/modules_limit.cpp 2019-03-04 06:24:12.000000000 +0900 +++ src/calf-0.90.3/src/modules_limit.cpp 2023-09-13 13:45:03.266307900 +0900 @@ -69,10 +69,6 @@ void limiter_audio_module::set_srates() void limiter_audio_module::params_changed() { limiter.set_params(*params[param_limit], *params[param_attack], *params[param_release], 1.f, *params[param_asc], pow(0.5, (*params[param_asc_coeff] - 0.5) * 2 * -1), true); - if( *params[param_attack] != attack_old) { - attack_old = *params[param_attack]; - limiter.reset(); - } if(*params[param_limit] != limit_old || *params[param_asc] != asc_old) { asc_old = *params[param_asc]; limit_old = *params[param_limit]; @@ -82,6 +78,10 @@ void limiter_audio_module::params_change oversampling_old = *params[param_oversampling]; set_srates(); } + if( *params[param_attack] != attack_old) { + attack_old = *params[param_attack]; + limiter.reset(); /* Needs set_srates() before reset(). */ + } } void limiter_audio_module::set_sample_rate(uint32_t sr)