1 /**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 Silence.cpp
6
7 Dominic Mazzoni
8
9 *******************************************************************//**
10
11 \class EffectSilence
12 \brief An effect to add silence.
13
14 *//*******************************************************************/
15
16
17 #include "Silence.h"
18 #include "LoadEffects.h"
19
20 #include <wx/intl.h>
21
22 #include "../ShuttleGui.h"
23 #include "../WaveTrack.h"
24 #include "../widgets/NumericTextCtrl.h"
25
26 const ComponentInterfaceSymbol EffectSilence::Symbol
27 /* i18n-hint: noun */
28 { XC("Silence", "generator") };
29
30 namespace{ BuiltinEffectsModule::Registration< EffectSilence > reg; }
31
EffectSilence()32 EffectSilence::EffectSilence()
33 {
34 SetLinearEffectFlag(true);
35 }
36
~EffectSilence()37 EffectSilence::~EffectSilence()
38 {
39 }
40
41 // ComponentInterface implementation
42
GetSymbol()43 ComponentInterfaceSymbol EffectSilence::GetSymbol()
44 {
45 return Symbol;
46 }
47
GetDescription()48 TranslatableString EffectSilence::GetDescription()
49 {
50 return XO("Creates audio of zero amplitude");
51 }
52
ManualPage()53 ManualPageID EffectSilence::ManualPage()
54 {
55 return L"Silence";
56 }
57
58
59 // EffectDefinitionInterface implementation
60
GetType()61 EffectType EffectSilence::GetType()
62 {
63 return EffectTypeGenerate;
64 }
65
66 // Effect implementation
67
PopulateOrExchange(ShuttleGui & S)68 void EffectSilence::PopulateOrExchange(ShuttleGui & S)
69 {
70 S.StartVerticalLay();
71 {
72 S.StartHorizontalLay();
73 {
74 S.AddPrompt(XXO("&Duration:"));
75 mDurationT = safenew
76 NumericTextCtrl(S.GetParent(), wxID_ANY,
77 NumericConverter::TIME,
78 GetDurationFormat(),
79 GetDuration(),
80 mProjectRate,
81 NumericTextCtrl::Options{}
82 .AutoPos(true));
83 S.Name(XO("Duration"))
84 .Position(wxALIGN_CENTER | wxALL)
85 .AddWindow(mDurationT);
86 }
87 S.EndHorizontalLay();
88 }
89 S.EndVerticalLay();
90
91 return;
92 }
93
TransferDataToWindow()94 bool EffectSilence::TransferDataToWindow()
95 {
96 mDurationT->SetValue(GetDuration());
97
98 return true;
99 }
100
TransferDataFromWindow()101 bool EffectSilence::TransferDataFromWindow()
102 {
103 SetDuration(mDurationT->GetValue());
104
105 return true;
106 }
107
GenerateTrack(WaveTrack * tmp,const WaveTrack & WXUNUSED (track),int WXUNUSED (ntrack))108 bool EffectSilence::GenerateTrack(WaveTrack *tmp,
109 const WaveTrack & WXUNUSED(track),
110 int WXUNUSED(ntrack))
111 {
112 tmp->InsertSilence(0.0, GetDuration());
113 return true;
114 }
115