30template <
typename SampleType>
37template <
typename SampleType>
40 thresholddB = newThreshold;
44template <
typename SampleType>
47 jassert (newRatio >=
static_cast<SampleType
> (1.0));
53template <
typename SampleType>
56 attackTime = newAttack;
60template <
typename SampleType>
63 releaseTime = newRelease;
68template <
typename SampleType>
76 envelopeFilter.prepare (spec);
82template <
typename SampleType>
85 envelopeFilter.reset();
89template <
typename SampleType>
93 auto env = envelopeFilter.processSample (channel, inputValue);
96 auto gain = (env < threshold) ? static_cast<SampleType> (1.0)
97 : std::pow (env * thresholdInverse, ratioInverse -
static_cast<SampleType
> (1.0));
100 return gain * inputValue;
103template <
typename SampleType>
107 thresholdInverse =
static_cast<SampleType
> (1.0) / threshold;
108 ratioInverse =
static_cast<SampleType
> (1.0) / ratio;
110 envelopeFilter.setAttackTime (attackTime);
111 envelopeFilter.setReleaseTime (releaseTime);
115template class Compressor<float>;
116template class Compressor<double>;
static Type decibelsToGain(Type decibels, Type minusInfinityDb=Type(defaultMinusInfinitydB))
void setThreshold(SampleType newThreshold)
SampleType processSample(int channel, SampleType inputValue)
void prepare(const ProcessSpec &spec)
void setAttack(SampleType newAttack)
void setRelease(SampleType newRelease)
void setRatio(SampleType newRatio)