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