diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 83e57578d..cfa06880b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -432,6 +432,8 @@ list( APPEND SOURCES PRIVATE effects/ClickRemoval.h effects/Compressor.cpp effects/Compressor.h + effects/Compressor2.cpp + effects/Compressor2.h effects/Contrast.cpp effects/Contrast.h effects/Distortion.cpp diff --git a/src/effects/Compressor2.cpp b/src/effects/Compressor2.cpp new file mode 100644 index 000000000..42558b5b3 --- /dev/null +++ b/src/effects/Compressor2.cpp @@ -0,0 +1,151 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + Compressor2.cpp + + Max Maisel + +*******************************************************************//** + +\class EffectCompressor2 +\brief An Effect which reduces the dynamic level. + +*//*******************************************************************/ + + +#include "../Audacity.h" // for rint from configwin.h +#include "Compressor2.h" + +#include + +#include +#include + +#include "../Internat.h" +#include "../Prefs.h" +#include "../ProjectFileManager.h" +#include "../Shuttle.h" +#include "../ShuttleGui.h" +#include "../WaveTrack.h" +#include "../widgets/valnum.h" +#include "../widgets/ProgressDialog.h" + +#include "LoadEffects.h" + +BEGIN_EVENT_TABLE(EffectCompressor2, wxEvtHandler) +END_EVENT_TABLE() + +const ComponentInterfaceSymbol EffectCompressor2::Symbol +{ XO("Compressor v2") }; + +namespace{ BuiltinEffectsModule::Registration< EffectCompressor2 > reg; } + +EffectCompressor2::EffectCompressor2() +{ + SetLinearEffectFlag(false); +} + +EffectCompressor2::~EffectCompressor2() +{ +} + +// ComponentInterface implementation + +ComponentInterfaceSymbol EffectCompressor2::GetSymbol() +{ + return Symbol; +} + +TranslatableString EffectCompressor2::GetDescription() +{ + return XO("Reduces the dynamic of one or more tracks"); +} + +ManualPageID EffectCompressor2::ManualPage() +{ + return L"Compressor2"; +} + +// EffectDefinitionInterface implementation + +EffectType EffectCompressor2::GetType() +{ + return EffectTypeProcess; +} + +// EffectClientInterface implementation +bool EffectCompressor2::DefineParams( ShuttleParams & S ) +{ + return true; +} + +bool EffectCompressor2::GetAutomationParameters(CommandParameters & parms) +{ + return true; +} + +bool EffectCompressor2::SetAutomationParameters(CommandParameters & parms) +{ + return true; +} + +// Effect implementation + +bool EffectCompressor2::CheckWhetherSkipEffect() +{ + return false; +} + +bool EffectCompressor2::Startup() +{ + wxString base = wxT("/Effects/Compressor2/"); + // Load the old "current" settings + if (gPrefs->Exists(base)) + { + SaveUserPreset(GetCurrentSettingsGroup()); + + gPrefs->Flush(); + } + return true; +} + +bool EffectCompressor2::Process() +{ + return false; +} + +void EffectCompressor2::PopulateOrExchange(ShuttleGui & S) +{ +} + +bool EffectCompressor2::TransferDataToWindow() +{ + if (!mUIParent->TransferDataToWindow()) + { + return false; + } + + UpdateUI(); + return true; +} + +bool EffectCompressor2::TransferDataFromWindow() +{ + if (!mUIParent->Validate() || !mUIParent->TransferDataFromWindow()) + { + return false; + } + return true; +} + +// EffectCompressor2 implementation + +void EffectCompressor2::OnUpdateUI(wxCommandEvent & WXUNUSED(evt)) +{ + UpdateUI(); +} + +void EffectCompressor2::UpdateUI() +{ +} diff --git a/src/effects/Compressor2.h b/src/effects/Compressor2.h new file mode 100644 index 000000000..fb97b61a0 --- /dev/null +++ b/src/effects/Compressor2.h @@ -0,0 +1,70 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + Compressor2.h + + Max Maisel (based on Compressor effect) + +**********************************************************************/ + +#ifndef __AUDACITY_EFFECT_COMPRESSOR2__ +#define __AUDACITY_EFFECT_COMPRESSOR2__ + +#include +#include +#include +#include +#include +#include + +#include "Effect.h" + +class ShuttleGui; + +class EffectCompressor2 final : public Effect +{ +public: + static const ComponentInterfaceSymbol Symbol; + + EffectCompressor2(); + virtual ~EffectCompressor2(); + + // ComponentInterface implementation + + ComponentInterfaceSymbol GetSymbol() override; + TranslatableString GetDescription() override; + ManualPageID ManualPage() override; + + // EffectDefinitionInterface implementation + + EffectType GetType() override; + + // EffectClientInterface implementation + + bool DefineParams( ShuttleParams & S ) override; + bool GetAutomationParameters(CommandParameters & parms) override; + bool SetAutomationParameters(CommandParameters & parms) override; + + // Effect implementation + + bool CheckWhetherSkipEffect() override; + bool Startup() override; + bool Process() override; + void PopulateOrExchange(ShuttleGui & S) override; + bool TransferDataToWindow() override; + bool TransferDataFromWindow() override; + +private: + // EffectCompressor2 implementation + + bool UpdateProgress(); + void OnUpdateUI(wxCommandEvent & evt); + void UpdateUI(); + +private: + + DECLARE_EVENT_TABLE() +}; + +#endif