29#include <wx/checkbox.h>
33#include <wx/stattext.h>
34#include <wx/textctrl.h>
35#include <wx/valtext.h>
38#include "../ShuttleGui.h"
39#include "../WaveTrack.h"
40#include "../widgets/valnum.h"
73 return batchParameters;
96 Parameters().Reset(*
this);
100 SetLinearEffectFlag(
true);
117 return XO(
"Increases or decreases the volume of the audio you have selected");
143 const float *
const *inBlock,
float *
const *outBlock,
size_t blockLen)
145 for (
decltype(blockLen) i = 0; i < blockLen; i++)
147 outBlock[0][i] = inBlock[0][i] *
mRatio;
185 for (
auto t :
inputTracks()->Selected< const WaveTrack >())
187 auto pair = t->GetMinMax(
mT0,
mT1);
188 const float min = pair.first, max = pair.second;
189 float newpeak = (fabs(
min) > fabs(max) ? fabs(
min) : fabs(max));
211 enum{ precision = 3 };
237 S.StartVerticalLay(0);
240 S.StartMultiColumn(2, wxCENTER);
243 .Validator<FloatingPointValidator<double>>(
245 .AddTextBox(
XXO(
"&Amplification (dB):"), L
"", 12);
250 S.StartHorizontalLay(wxEXPAND);
253 .Style(wxSL_HORIZONTAL)
254 .Name(
XO(
"Amplification dB"))
257 S.EndHorizontalLay();
260 S.StartMultiColumn(2, wxCENTER);
263 .Validator<FloatingPointValidator<double>>(
267 &
mNewPeak, NumValidatorStyle::ONE_TRAILING_ZERO,
271 .AddTextBox(
XXO(
"&New Peak Amplitude (dB):"), L
"", 12);
276 S.StartHorizontalLay(wxCENTER);
280 .AddCheckBox(
XXO(
"Allo&w clipping"),
false);
282 S.EndHorizontalLay();
293 double dB = std::clamp<double>(dBInit,
Amp.
min,
Amp.
max);
303 mAmpT->GetValidator()->TransferToWindow();
307 mNewPeakT->GetValidator()->TransferToWindow();
341 if (!
mAmpT->GetValidator()->TransferFromWindow())
352 mNewPeakT->GetValidator()->TransferToWindow();
359 if (!
mNewPeakT->GetValidator()->TransferFromWindow())
375 mAmpT->GetValidator()->TransferToWindow();
384 double dB = evt.GetInt() /
Amp.
scale;
387 double dB2 = (evt.GetInt() - 1) /
Amp.
scale;
396 mAmpT->GetValidator()->TransferToWindow();
399 mNewPeakT->GetValidator()->TransferToWindow();
ValueRestorer< T > valueRestorer(T &var)
inline functions provide convenient parameter type deduction
Generates EffectParameterMethods overrides from variadic template arguments.
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
An Effect that makes a sound louder or softer.
bool DoLoadFactoryDefaults()
unsigned GetAudioOutCount() const override
How many output buffers to allocate at once.
static const ComponentInterfaceSymbol Symbol
std::unique_ptr< EffectUIValidator > PopulateOrExchange(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access) override
Add controls to effect panel; always succeeds.
static constexpr EffectParameter Ratio
static constexpr EffectParameter Clipping
static constexpr EffectParameter Amp
void OnClipCheckBox(wxCommandEvent &evt)
void OnAmpSlider(wxCommandEvent &evt)
void Preview(EffectSettingsAccess &access, bool dryOnly) override
EffectType GetType() const override
Type determines how it behaves.
unsigned GetAudioInCount() const override
How many input buffers to allocate at once.
ManualPageID ManualPage() const override
Name of a page in the Audacity alpha manual, default is empty.
bool Init() override
Call once to set up state for whole list of tracks to be processed.
bool TransferDataToWindow(const EffectSettings &settings) override
Update controls for the settings.
bool TransferDataFromWindow(EffectSettings &settings) override
Update the given settings from controls.
const EffectParameterMethods & Parameters() const override
void OnAmpText(wxCommandEvent &evt)
TranslatableString GetDescription() const override
void OnPeakText(wxCommandEvent &evt)
ComponentInterfaceSymbol GetSymbol() const override
size_t ProcessBlock(EffectSettings &settings, const float *const *inBlock, float *const *outBlock, size_t blockLen) override
Called for destructive effect computation.
bool LoadFactoryDefaults(EffectSettings &settings) const override
Change settings back to "factory default".
const TrackList * inputTracks() const
void Preview(EffectSettingsAccess &access, bool dryOnly) override
bool EnableApply(bool enable=true)
bool IsBatchProcessing() const override
Performs effect computation.
Interface for manipulations of an Effect's settings.
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Holds a msgid for the translation catalog; may also bind format arguments.
BuiltinEffectsModule::Registration< EffectAmplify > reg
const Type scale
Scaling factor, for slider control.
const Type min
Minimum value.
const Type max
Maximum value.
Externalized state of a plug-in.