30#include <wx/checkbox.h>
33#include <wx/stattext.h>
34#include <wx/textctrl.h>
35#include <wx/valtext.h>
42#include "../widgets/valnum.h"
73 return batchParameters;
97 static_cast<EffectAmplify&
>(GetEffect()).DestroyOutputTracks();
125 return XO(
"Increases or decreases the volume of the audio you have selected");
151 const float *
const *inBlock,
float *
const *outBlock,
size_t blockLen)
153 for (
decltype(blockLen) i = 0; i < blockLen; i++)
155 outBlock[0][i] = inBlock[0][i] *
mRatio;
193 bool hasPitchOrSpeed = any_of(
begin(range),
end(range), [
this](
auto* pTrack) {
199 for (
auto t : range) {
200 for (
const auto pChannel : t->Channels()) {
201 auto pair = pChannel->GetMinMax(
mT0,
mT1);
202 const float min = pair.first, max = pair.second;
203 const float newpeak = std::max(fabs(
min), fabs(max));
223 enum{ precision = 3 };
249 S.StartVerticalLay(0);
252 S.StartMultiColumn(2, wxCENTER);
255 .Validator<FloatingPointValidator<double>>(
257 .AddTextBox(
XXO(
"&Amplification (dB):"), L
"", 12);
262 S.StartHorizontalLay(wxEXPAND);
265 .Style(wxSL_HORIZONTAL)
266 .Name(
XO(
"Amplification dB"))
269 S.EndHorizontalLay();
272 S.StartMultiColumn(2, wxCENTER);
275 .Validator<FloatingPointValidator<double>>(
279 &
mNewPeak, NumValidatorStyle::ONE_TRAILING_ZERO,
283 .AddTextBox(
XXO(
"&New Peak Amplitude (dB):"), L
"", 12);
288 S.StartHorizontalLay(wxCENTER);
292 .AddCheckBox(
XXO(
"Allo&w clipping"),
false);
294 S.EndHorizontalLay();
305 double dB = std::clamp<double>(dBInit,
Amp.
min,
Amp.
max);
315 mAmpT->GetValidator()->TransferToWindow();
319 mNewPeakT->GetValidator()->TransferToWindow();
353 return std::make_shared<Instance>(
const_cast<EffectAmplify&
>(*
this));
366 if (!
mAmpT->GetValidator()->TransferFromWindow())
377 mNewPeakT->GetValidator()->TransferToWindow();
384 if (!
mNewPeakT->GetValidator()->TransferFromWindow())
400 mAmpT->GetValidator()->TransferToWindow();
409 double dB = evt.GetInt() /
Amp.
scale;
412 double dB2 = (evt.GetInt() - 1) /
Amp.
scale;
421 mAmpT->GetValidator()->TransferToWindow();
424 mNewPeakT->GetValidator()->TransferToWindow();
std::optional< std::unique_ptr< EffectSettingsAccess::Message > > OptionalMessage
XXO("&Cut/Copy/Paste Toolbar")
static Settings & settings()
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.
OptionalMessage LoadFactoryDefaults(EffectSettings &settings) const override
unsigned GetAudioOutCount() const override
How many output buffers to allocate at once.
static const ComponentInterfaceSymbol Symbol
wxWeakRef< wxWindow > mUIParent
static constexpr EffectParameter Ratio
static constexpr EffectParameter Clipping
std::shared_ptr< EffectInstance > MakeInstance() const override
Make an object maintaining short-term state of an Effect.
static constexpr EffectParameter Amp
void OnClipCheckBox(wxCommandEvent &evt)
void OnAmpSlider(wxCommandEvent &evt)
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.
std::unique_ptr< EffectEditor > PopulateOrExchange(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) override
Add controls to effect panel; always succeeds.
bool TransferDataToWindow(const EffectSettings &settings) override
bool TransferDataFromWindow(EffectSettings &settings) override
const EffectParameterMethods & Parameters() const override
void OnAmpText(wxCommandEvent &evt)
OptionalMessage DoLoadFactoryDefaults(EffectSettings &settings)
TranslatableString GetDescription() const override
std::any BeginPreview(const EffectSettings &settings) override
Called when Preview() starts, to allow temporary effect state changes.
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.
void SetLinearEffectFlag(bool linearEffectFlag)
const TrackList * inputTracks() const
static bool EnableApply(wxWindow *parent, bool enable=true)
Enable or disable the Apply button of the dialog that contains parent.
bool IsBatchProcessing() const override
Performs effect computation.
Hold values to send to effect output meters.
Interface for manipulations of an Effect's settings.
virtual void Reset(Effect &effect) const =0
std::shared_ptr< EffectOutputTracks > MakeOutputTracks()
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
auto Selected() -> TrackIterRange< TrackType >
Holds a msgid for the translation catalog; may also bind format arguments.
A Track that contains audio waveform data.
auto end(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
auto begin(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
WAVE_TRACK_API bool HasPitchOrSpeed(const WaveTrack &track, double t0, double t1)
BuiltinEffectsModule::Registration< EffectAmplify > reg
const Type scale
Scaling factor, for slider control.
const Type def
Default value.
const Type min
Minimum value.
const Type max
Maximum value.
Externalized state of a plug-in.