Audacity 3.2.0
TruncSilence.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 TruncSilence.h
6
7 Lynn Allan (from DM's Normalize)
8 //ToDo ... put BlendFrames in Effects, Project, or other class
9 //ToDo ... Use ZeroCrossing logic to improve blend
10 //ToDo ... BlendFrames on "fade-out"
11 //ToDo ... BlendFrameCount is a user-selectable parameter
12 //ToDo ... Detect transient signals that are too short to interrupt the TruncatableSilence
13 Philip Van Baren (more options and boundary fixes)
14
15**********************************************************************/
16
17#ifndef __AUDACITY_EFFECT_TRUNC_SILENCE__
18#define __AUDACITY_EFFECT_TRUNC_SILENCE__
19
20#include "StatefulEffect.h"
21#include "ShuttleAutomation.h"
22#include "Track.h"
23#include <wx/weakref.h>
24
25class ShuttleGui;
26class wxChoice;
27class wxTextCtrl;
28class wxCheckBox;
29
30class RegionList;
31
33{
34public:
35 static inline EffectTruncSilence *
38
40 virtual ~EffectTruncSilence();
41
42 // ComponentInterface implementation
43
44 ComponentInterfaceSymbol GetSymbol() const override;
45 TranslatableString GetDescription() const override;
46 ManualPageID ManualPage() const override;
47
48 // EffectDefinitionInterface implementation
49
50 EffectType GetType() const override;
51 bool LoadSettings(
52 const CommandParameters & parms, EffectSettings &settings) const override;
53
54 // Effect implementation
55
57 const EffectSettings &settings, double previewLength) const override;
58
59 // Analyze a single track to find silences
60 // If inputLength is not NULL we are calculating the minimum
61 // amount of input for previewing.
65 bool Analyze(RegionList &silenceList, RegionList &trackSilences,
66 const WaveTrack &wt, sampleCount* silentFrame, sampleCount* index,
67 int whichTrack, double* inputLength = nullptr,
68 double* minInputLength = nullptr) const;
69
70 bool Process(EffectInstance &instance, EffectSettings &settings) override;
71 std::unique_ptr<EffectEditor> PopulateOrExchange(
72 ShuttleGui & S, EffectInstance &instance,
73 EffectSettingsAccess &access, const EffectOutputs *pOutputs) override;
74 bool TransferDataToWindow(const EffectSettings &settings) override;
76
77 bool NeedsDither() const override;
78
79private:
80 // EffectTruncSilence implementation
81
82 //ToDo ... put BlendFrames in Effects, Project, or other class
83 // void BlendFrames(float* buffer, int leftIndex, int rightIndex, int blendFrameCount);
84 void Intersect(RegionList &dest, const RegionList & src);
85
86 void OnControlChange(wxCommandEvent & evt);
87 void UpdateUI();
88
90 bool ProcessAll();
94 bool FindSilences(RegionList &silences,
99 bool DoRemoval(const RegionList &silences,
100 const TrackIterRange<Track> &range,
101 unsigned iGroup, unsigned nGroups,
102 double &totalCutLen);
103
104 wxWeakRef<wxWindow> mUIParent{};
105
106 double mThresholdDB {} ;
112
114
115 wxTextCtrl *mThresholdText;
116 wxChoice *mActionChoice;
120 wxCheckBox *mIndependent;
121
122 const EffectParameterMethods& Parameters() const override;
123 DECLARE_EVENT_TABLE()
124
126 {
130 };
131
133
135 L"Threshold", -20.0, -80.0, -20.0, 1 };
137 L"Action", (int)kTruncate, 0, nActions - 1, 1, kActionStrings, nActions };
139 L"Minimum", 0.5, 0.001, 10000.0, 1 };
141 L"Truncate", 0.5, 0.0, 10000.0, 1 };
143 L"Compress", 50.0, 0.0, 99.9, 1 };
145 L"Independent", false, false, true, 1 };
146};
147
148#endif
EffectType
#define S(N)
Definition: ToChars.cpp:64
declares abstract base class Track, TrackList, and iterators over TrackList
static Settings & settings()
Definition: TrackInfo.cpp:69
CommandParameters, derived from wxFileConfig, is essentially doing the same things as the SettingsVis...
ComponentInterfaceSymbol pairs a persistent string identifier used internally with an optional,...
Performs effect computation.
Hold values to send to effect output meters.
Interface for manipulations of an Effect's settings.
Truncate Silence automatically reduces the length of passages where the volume is below a set thresho...
Definition: TruncSilence.h:33
wxChoice * mActionChoice
Definition: TruncSilence.h:116
bool TransferDataToWindow(const EffectSettings &settings) override
static EffectTruncSilence * FetchParameters(EffectTruncSilence &e, EffectSettings &)
Definition: TruncSilence.h:36
std::unique_ptr< EffectEditor > PopulateOrExchange(ShuttleGui &S, EffectInstance &instance, EffectSettingsAccess &access, const EffectOutputs *pOutputs) override
Add controls to effect panel; always succeeds.
bool Process(EffectInstance &instance, EffectSettings &settings) override
static constexpr EnumParameter ActIndex
Definition: TruncSilence.h:136
static constexpr EffectParameter Independent
Definition: TruncSilence.h:144
wxWeakRef< wxWindow > mUIParent
Definition: TruncSilence.h:104
ManualPageID ManualPage() const override
Name of a page in the Audacity alpha manual, default is empty.
wxTextCtrl * mThresholdText
Definition: TruncSilence.h:115
double mInitialAllowedSilence
Definition: TruncSilence.h:108
bool NeedsDither() const override
double CalcPreviewInputLength(const EffectSettings &settings, double previewLength) const override
void OnControlChange(wxCommandEvent &evt)
static constexpr EffectParameter Minimum
Definition: TruncSilence.h:138
bool FindSilences(RegionList &silences, const TrackIterRange< const WaveTrack > &range)
bool Analyze(RegionList &silenceList, RegionList &trackSilences, const WaveTrack &wt, sampleCount *silentFrame, sampleCount *index, int whichTrack, double *inputLength=nullptr, double *minInputLength=nullptr) const
virtual ~EffectTruncSilence()
wxCheckBox * mIndependent
Definition: TruncSilence.h:120
bool TransferDataFromWindow(EffectSettings &settings) override
double mSilenceCompressPercent
Definition: TruncSilence.h:110
static constexpr EffectParameter Truncate
Definition: TruncSilence.h:140
EffectType GetType() const override
Type determines how it behaves.
static const EnumValueSymbol kActionStrings[nActions]
Definition: TruncSilence.h:132
double mTruncLongestAllowedSilence
Definition: TruncSilence.h:109
static constexpr EffectParameter Threshold
Definition: TruncSilence.h:134
wxTextCtrl * mTruncLongestAllowedSilenceT
Definition: TruncSilence.h:118
static const ComponentInterfaceSymbol Symbol
Definition: TruncSilence.h:37
const EffectParameterMethods & Parameters() const override
TranslatableString GetDescription() const override
ComponentInterfaceSymbol GetSymbol() const override
bool LoadSettings(const CommandParameters &parms, EffectSettings &settings) const override
Restore settings from keys and values.
wxTextCtrl * mInitialAllowedSilenceT
Definition: TruncSilence.h:117
wxTextCtrl * mSilenceCompressPercentT
Definition: TruncSilence.h:119
static constexpr EffectParameter Compress
Definition: TruncSilence.h:142
bool DoRemoval(const RegionList &silences, const TrackIterRange< Track > &range, unsigned iGroup, unsigned nGroups, double &totalCutLen)
void Intersect(RegionList &dest, const RegionList &src)
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:630
Holds a msgid for the translation catalog; may also bind format arguments.
A Track that contains audio waveform data.
Definition: WaveTrack.h:222
Positions or offsets within audio files need a wide type.
Definition: SampleCount.h:19
Externalized state of a plug-in.
Range between two TrackIters, usable in range-for statements, and with Visit member functions.
Definition: Track.h:807