@ -12,6 +12,7 @@
MIT License . use at your own risk .
MIT License . use at your own risk .
*/
*/
# include <algorithm>
# include <circle/logger.h>
# include <circle/logger.h>
# include <cstdlib>
# include <cstdlib>
# include "effect_compressor.h"
# include "effect_compressor.h"
@ -203,7 +204,7 @@ void Compressor::setPreGain_dB(float32_t gain_dB)
void Compressor : : setCompressionRatio ( float32_t cr )
void Compressor : : setCompressionRatio ( float32_t cr )
{
{
comp_ratio = max ( 0.001f , cr ) ; //limit to positive values
comp_ratio = std : : max ( 0.001f , cr ) ; //limit to positive values
updateThresholdAndCompRatioConstants ( ) ;
updateThresholdAndCompRatioConstants ( ) ;
}
}
@ -213,7 +214,7 @@ void Compressor::setAttack_sec(float32_t a, float32_t fs_Hz)
attack_const = expf ( - 1.0f / ( attack_sec * fs_Hz ) ) ; //expf() is much faster than exp()
attack_const = expf ( - 1.0f / ( attack_sec * fs_Hz ) ) ; //expf() is much faster than exp()
//also update the time constant for the envelope extraction
//also update the time constant for the envelope extraction
setLevelTimeConst_sec ( min ( attack_sec , release_sec ) / 5.0 , fs_Hz ) ; //make the level time-constant one-fifth the gain time constants
setLevelTimeConst_sec ( std : : min ( attack_sec , release_sec ) / 5.0 , fs_Hz ) ; //make the level time-constant one-fifth the gain time constants
}
}
void Compressor : : setRelease_sec ( float32_t r , float32_t fs_Hz )
void Compressor : : setRelease_sec ( float32_t r , float32_t fs_Hz )
@ -222,13 +223,13 @@ void Compressor::setRelease_sec(float32_t r, float32_t fs_Hz)
release_const = expf ( - 1.0f / ( release_sec * fs_Hz ) ) ; //expf() is much faster than exp()
release_const = expf ( - 1.0f / ( release_sec * fs_Hz ) ) ; //expf() is much faster than exp()
//also update the time constant for the envelope extraction
//also update the time constant for the envelope extraction
setLevelTimeConst_sec ( min ( attack_sec , release_sec ) / 5.0 , fs_Hz ) ; //make the level time-constant one-fifth the gain time constants
setLevelTimeConst_sec ( std : : min ( attack_sec , release_sec ) / 5.0 , fs_Hz ) ; //make the level time-constant one-fifth the gain time constants
}
}
void Compressor : : setLevelTimeConst_sec ( float32_t t_sec , float32_t fs_Hz )
void Compressor : : setLevelTimeConst_sec ( float32_t t_sec , float32_t fs_Hz )
{
{
const float32_t min_t_sec = 0.002f ; //this is the minimum allowed value
const float32_t min_t_sec = 0.002f ; //this is the minimum allowed value
level_lp_sec = max ( min_t_sec , t_sec ) ;
level_lp_sec = std : : max ( min_t_sec , t_sec ) ;
level_lp_const = expf ( - 1.0f / ( level_lp_sec * fs_Hz ) ) ; //expf() is much faster than exp()
level_lp_const = expf ( - 1.0f / ( level_lp_sec * fs_Hz ) ) ; //expf() is much faster than exp()
}
}