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 <wx/weakref.h>
23
24class ShuttleGui;
25class wxChoice;
26class wxTextCtrl;
27class wxCheckBox;
28
29class RegionList;
30
32{
33public:
34 static inline EffectTruncSilence *
37
39 virtual ~EffectTruncSilence();
40
41 // ComponentInterface implementation
42
43 ComponentInterfaceSymbol GetSymbol() const override;
44 TranslatableString GetDescription() const override;
45 ManualPageID ManualPage() const override;
46
47 // EffectDefinitionInterface implementation
48
49 EffectType GetType() const override;
50 bool LoadSettings(
51 const CommandParameters & parms, EffectSettings &settings) const override;
52
53 // Effect implementation
54
56 const EffectSettings &settings, double previewLength) const override;
57
58 // Analyze a single track to find silences
59 // If inputLength is not NULL we are calculating the minimum
60 // amount of input for previewing.
61 bool Analyze(RegionList &silenceList,
62 RegionList &trackSilences,
63 const WaveTrack *wt,
64 sampleCount* silentFrame,
65 sampleCount* index,
66 int whichTrack,
67 double* inputLength = NULL,
68 double* minInputLength = NULL) 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();
91 bool FindSilences
92 (RegionList &silences, const TrackList *list,
93 const Track *firstTrack, const Track *lastTrack);
94 bool DoRemoval
95 (const RegionList &silences, unsigned iGroup, unsigned nGroups, Track *firstTrack, Track *lastTrack,
96 double &totalCutLen);
97
98 wxWeakRef<wxWindow> mUIParent{};
99
100 double mThresholdDB {} ;
106
108
109 wxTextCtrl *mThresholdText;
110 wxChoice *mActionChoice;
114 wxCheckBox *mIndependent;
115
116 const EffectParameterMethods& Parameters() const override;
117 DECLARE_EVENT_TABLE()
118
120 {
124 };
125
127
129 L"Threshold", -20.0, -80.0, -20.0, 1 };
131 L"Action", (int)kTruncate, 0, nActions - 1, 1, kActionStrings, nActions };
133 L"Minimum", 0.5, 0.001, 10000.0, 1 };
135 L"Truncate", 0.5, 0.0, 10000.0, 1 };
137 L"Compress", 50.0, 0.0, 99.9, 1 };
139 L"Independent", false, false, true, 1 };
140};
141
142#endif
EffectType
#define S(N)
Definition: ToChars.cpp:64
static Settings & settings()
Definition: TrackInfo.cpp:87
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:32
wxChoice * mActionChoice
Definition: TruncSilence.h:110
bool TransferDataToWindow(const EffectSettings &settings) override
static EffectTruncSilence * FetchParameters(EffectTruncSilence &e, EffectSettings &)
Definition: TruncSilence.h:35
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
bool FindSilences(RegionList &silences, const TrackList *list, const Track *firstTrack, const Track *lastTrack)
static constexpr EnumParameter ActIndex
Definition: TruncSilence.h:130
static constexpr EffectParameter Independent
Definition: TruncSilence.h:138
wxWeakRef< wxWindow > mUIParent
Definition: TruncSilence.h:98
ManualPageID ManualPage() const override
Name of a page in the Audacity alpha manual, default is empty.
wxTextCtrl * mThresholdText
Definition: TruncSilence.h:109
double mInitialAllowedSilence
Definition: TruncSilence.h:102
bool NeedsDither() const override
double CalcPreviewInputLength(const EffectSettings &settings, double previewLength) const override
bool Analyze(RegionList &silenceList, RegionList &trackSilences, const WaveTrack *wt, sampleCount *silentFrame, sampleCount *index, int whichTrack, double *inputLength=NULL, double *minInputLength=NULL) const
void OnControlChange(wxCommandEvent &evt)
static constexpr EffectParameter Minimum
Definition: TruncSilence.h:132
virtual ~EffectTruncSilence()
wxCheckBox * mIndependent
Definition: TruncSilence.h:114
bool TransferDataFromWindow(EffectSettings &settings) override
double mSilenceCompressPercent
Definition: TruncSilence.h:104
static constexpr EffectParameter Truncate
Definition: TruncSilence.h:134
EffectType GetType() const override
Type determines how it behaves.
static const EnumValueSymbol kActionStrings[nActions]
Definition: TruncSilence.h:126
double mTruncLongestAllowedSilence
Definition: TruncSilence.h:103
static constexpr EffectParameter Threshold
Definition: TruncSilence.h:128
wxTextCtrl * mTruncLongestAllowedSilenceT
Definition: TruncSilence.h:112
static const ComponentInterfaceSymbol Symbol
Definition: TruncSilence.h:36
const EffectParameterMethods & Parameters() const override
TranslatableString GetDescription() const override
ComponentInterfaceSymbol GetSymbol() const override
bool DoRemoval(const RegionList &silences, unsigned iGroup, unsigned nGroups, Track *firstTrack, Track *lastTrack, double &totalCutLen)
bool LoadSettings(const CommandParameters &parms, EffectSettings &settings) const override
Restore settings from keys and values.
wxTextCtrl * mInitialAllowedSilenceT
Definition: TruncSilence.h:111
wxTextCtrl * mSilenceCompressPercentT
Definition: TruncSilence.h:113
static constexpr EffectParameter Compress
Definition: TruncSilence.h:136
void Intersect(RegionList &dest, const RegionList &src)
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:625
Abstract base class for an object holding data associated with points on a time axis.
Definition: Track.h:226
A flat linked list of tracks supporting Add, Remove, Clear, and Contains, serialization of the list o...
Definition: Track.h:1339
Holds a msgid for the translation catalog; may also bind format arguments.
A Track that contains audio waveform data.
Definition: WaveTrack.h:51
Positions or offsets within audio files need a wide type.
Definition: SampleCount.h:19
Externalized state of a plug-in.