setFetCompressor method

void setFetCompressor({
  1. required bool enable,
  2. double threshold = 0.0,
  3. double ratio = 0.0,
  4. double knee = 0.0,
  5. bool kneeAuto = false,
  6. double gain = 0.0,
  7. bool gainAuto = false,
  8. double attack = 0.0,
  9. bool attackAuto = false,
  10. double release = 0.0,
  11. bool releaseAuto = false,
  12. double kneeMulti = 0.0,
  13. double maxAttack = 0.0,
  14. double maxRelease = 0.0,
  15. double crest = 0.0,
  16. double adapt = 0.0,
  17. bool noClip = false,
})

FET-style dynamics compressor.

Implementation

void setFetCompressor({
  required bool enable,
  double threshold = 0.0,
  double ratio = 0.0,
  double knee = 0.0,
  bool kneeAuto = false,
  double gain = 0.0,
  bool gainAuto = false,
  double attack = 0.0,
  bool attackAuto = false,
  double release = 0.0,
  bool releaseAuto = false,
  double kneeMulti = 0.0,
  double maxAttack = 0.0,
  double maxRelease = 0.0,
  double crest = 0.0,
  double adapt = 0.0,
  bool noClip = false,
}) {
  double nThreshold = (threshold / -60.0).clamp(0.0, 1.0);
  double nGain = (gain / 60.0).clamp(-1.0, 1.0);
  double nKnee = (knee / 60.0).clamp(0.0, 1.0);
  double nAttack = attack <= 0.1 ? 0.0 : ((math.log(attack / 1000.0) + 9.21034) / 7.600903).clamp(0.0, 1.0);
  double nRelease = release <= 5.0 ? 0.0 : ((math.log(release / 1000.0) + 5.298317) / 5.991465).clamp(0.0, 1.0);
  double nMaxAttack = maxAttack <= 0.1 ? 0.879450 : ((math.log(maxAttack / 1000.0) + 9.21034) / 7.600903).clamp(0.0, 1.0);
  double nMaxRelease = maxRelease <= 5.0 ? 0.884311 : ((math.log(maxRelease / 1000.0) + 5.298317) / 5.991465).clamp(0.0, 1.0);
  double nCrest = crest <= 5.0 ? 0.615689 : ((math.log(crest / 1000.0) + 5.298317) / 5.991465).clamp(0.0, 1.0);
  double nAdapt = adapt <= 0.0 ? 0.660964 : (math.log(adapt) / 1.386294).clamp(0.0, 1.0);

  _fetCompressor(
    _enginePtr, enable ? 1 : 0, nThreshold, ratio, nKnee, kneeAuto ? 1 : 0,
    nGain, gainAuto ? 1 : 0, nAttack, attackAuto ? 1 : 0, nRelease, releaseAuto ? 1 : 0,
    kneeMulti, nMaxAttack, nMaxRelease, nCrest, nAdapt, noClip ? 1 : 0,
  );
}