1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-04-29 15:19:44 +02:00

Add factory presets to dynamic compressor effect.

Signed-off-by: Max Maisel <max.maisel@posteo.de>
This commit is contained in:
Max Maisel 2021-02-28 10:51:32 +01:00
parent c534e07424
commit 06f6aa123d
2 changed files with 59 additions and 0 deletions

View File

@ -91,6 +91,29 @@ Param( LookaheadTime, double, wxT("LookaheadTime"), 0.0, 0.0, 10.
Param( LookbehindTime, double, wxT("LookbehindTime"), 0.1, 0.0, 10.0, 200.0 ); Param( LookbehindTime, double, wxT("LookbehindTime"), 0.1, 0.0, 10.0, 200.0 );
Param( OutputGain, double, wxT("OutputGain"), 0.0, 0.0, 50.0, 10.0 ); Param( OutputGain, double, wxT("OutputGain"), 0.0, 0.0, 50.0, 10.0 );
struct FactoryPreset
{
const TranslatableString name;
int algorithm;
int compressBy;
bool stereoInd;
double thresholdDB;
double ratio;
double kneeWidthDB;
double attackTime;
double releaseTime;
double lookaheadTime;
double lookbehindTime;
double outputGainDB;
};
static const FactoryPreset FactoryPresets[] =
{
{ XO("Dynamic Reduction"), kEnvPT1, kAmplitude, false, -40, 2.5, 6, 0.3, 0.3, 0.5, 0.5, 23 },
{ XO("Peak Reduction"), kEnvPT1, kAmplitude, false, -10, 10, 0, 0.001, 0.05, 0, 0, 0 },
{ XO("Analog Limiter"), kEnvPT1, kAmplitude, false, -6, 100, 6, 0.0001, 0.0001, 0, 0, 0 }
};
inline int ScaleToPrecision(double scale) inline int ScaleToPrecision(double scale)
{ {
return ceil(log10(scale)); return ceil(log10(scale));
@ -736,6 +759,40 @@ bool EffectCompressor2::SetAutomationParameters(CommandParameters & parms)
return true; return true;
} }
RegistryPaths EffectCompressor2::GetFactoryPresets()
{
RegistryPaths names;
for (size_t i = 0; i < WXSIZEOF(FactoryPresets); i++)
names.push_back( FactoryPresets[i].name.Translation() );
return names;
}
bool EffectCompressor2::LoadFactoryPreset(int id)
{
if (id < 0 || id >= int(WXSIZEOF(FactoryPresets)))
return false;
const FactoryPreset* preset = &FactoryPresets[id];
mAlgorithm = preset->algorithm;
mCompressBy = preset->compressBy;
mStereoInd = preset->stereoInd;
mThresholdDB = preset->thresholdDB;
mRatio = preset->ratio;
mKneeWidthDB = preset->kneeWidthDB;
mAttackTime = preset->attackTime;
mReleaseTime = preset->releaseTime;
mLookaheadTime = preset->lookaheadTime;
mLookbehindTime = preset->lookbehindTime;
mOutputGainDB = preset->outputGainDB;
TransferDataToWindow();
return true;
}
// Effect implementation // Effect implementation
bool EffectCompressor2::CheckWhetherSkipEffect() bool EffectCompressor2::CheckWhetherSkipEffect()

View File

@ -197,6 +197,8 @@ public:
bool DefineParams( ShuttleParams & S ) override; bool DefineParams( ShuttleParams & S ) override;
bool GetAutomationParameters(CommandParameters & parms) override; bool GetAutomationParameters(CommandParameters & parms) override;
bool SetAutomationParameters(CommandParameters & parms) override; bool SetAutomationParameters(CommandParameters & parms) override;
RegistryPaths GetFactoryPresets() override;
bool LoadFactoryPreset(int id) override;
// Effect implementation // Effect implementation