Fix Spectral Compressor high frequency rolloff
This commit is contained in:
parent
5ac9c32c19
commit
a51c359c0b
|
@ -33,6 +33,7 @@ const ENVELOPE_INIT_VALUE: f32 = std::f32::consts::FRAC_1_SQRT_2 / 8.0;
|
||||||
/// The target frequency for the high frequency ratio rolloff. This is fixed to prevent Spectral
|
/// The target frequency for the high frequency ratio rolloff. This is fixed to prevent Spectral
|
||||||
/// Compressor from getting brighter as the sample rate increases.
|
/// Compressor from getting brighter as the sample rate increases.
|
||||||
const HIGH_FREQ_RATIO_ROLLOFF_FREQUENCY: f32 = 22_050.0;
|
const HIGH_FREQ_RATIO_ROLLOFF_FREQUENCY: f32 = 22_050.0;
|
||||||
|
const HIGH_FREQ_RATIO_ROLLOFF_FREQUENCY_LOG2: f32 = 14.428_491;
|
||||||
|
|
||||||
/// A bank of compressors so each FFT bin can be compressed individually. The vectors in this struct
|
/// A bank of compressors so each FFT bin can be compressed individually. The vectors in this struct
|
||||||
/// will have a capacity of `MAX_WINDOW_SIZE / 2 + 1` and a size that matches the current complex
|
/// will have a capacity of `MAX_WINDOW_SIZE / 2 + 1` and a size that matches the current complex
|
||||||
|
@ -982,7 +983,7 @@ impl CompressorBank {
|
||||||
.iter()
|
.iter()
|
||||||
.zip(self.upwards_ratio_recips.iter_mut())
|
.zip(self.upwards_ratio_recips.iter_mut())
|
||||||
{
|
{
|
||||||
let octave_fraction = log2_freq / HIGH_FREQ_RATIO_ROLLOFF_FREQUENCY;
|
let octave_fraction = log2_freq / HIGH_FREQ_RATIO_ROLLOFF_FREQUENCY_LOG2;
|
||||||
let rolloff_t = octave_fraction * upwards_high_freq_ratio_rolloff;
|
let rolloff_t = octave_fraction * upwards_high_freq_ratio_rolloff;
|
||||||
*ratio = (target_ratio_recip * (1.0 - rolloff_t)) + rolloff_t;
|
*ratio = (target_ratio_recip * (1.0 - rolloff_t)) + rolloff_t;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue