Audacity 3.2.0
Public Member Functions | Public Attributes | Private Member Functions | List of all members
NoiseRemovalDialog Class Referencefinal

Dialog used with EffectNoiseRemoval. More...

#include <NoiseRemoval.h>

Inheritance diagram for NoiseRemovalDialog:
[legend]
Collaboration diagram for NoiseRemovalDialog:
[legend]

Public Member Functions

 NoiseRemovalDialog (EffectNoiseRemoval *effect, EffectSettingsAccess &access, wxWindow *parent)
 
wxSizer * MakeNoiseRemovalDialog (bool call_fit=true, bool set_sizer=true)
 
void PopulateOrExchange (ShuttleGui &S) override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
- Public Member Functions inherited from EffectDialog
 EffectDialog (wxWindow *parent, const TranslatableString &title, int type=0, int flags=wxDEFAULT_DIALOG_STYLE, int additionalButtons=0)
 
void Init ()
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
bool Validate () override
 
virtual void PopulateOrExchange (ShuttleGui &S)
 
virtual void OnPreview (wxCommandEvent &evt)
 
virtual void OnOk (wxCommandEvent &evt)
 
- Public Member Functions inherited from wxDialogWrapper
 wxDialogWrapper ()
 
 wxDialogWrapper (wxWindow *parent, wxWindowID id, const TranslatableString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const TranslatableString &name=XO("Dialog"))
 
bool Create (wxWindow *parent, wxWindowID id, const TranslatableString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const TranslatableString &name=XO("Dialog"))
 
void SetTitle (const TranslatableString &title)
 
void SetLabel (const TranslatableString &title)
 
void SetName (const TranslatableString &title)
 
void SetName ()
 
- Public Member Functions inherited from wxTabTraversalWrapper< wxDialog >
 wxTabTraversalWrapper (Args &&... args)
 
 wxTabTraversalWrapper (const wxTabTraversalWrapper &)=delete
 
 wxTabTraversalWrapper (wxTabTraversalWrapper &&)=delete
 
wxTabTraversalWrapperoperator= (const wxTabTraversalWrapper &)=delete
 
wxTabTraversalWrapperoperator= (wxTabTraversalWrapper &&)=delete
 

Public Attributes

EffectNoiseRemovalm_pEffect
 
EffectSettingsAccessmAccess
 
wxButton * m_pButton_GetProfile
 
wxButton * m_pButton_Preview
 
wxButton * m_pButton_RemoveNoise
 
wxRadioButton * mKeepSignal
 
wxRadioButton * mKeepNoise
 
wxSlider * mSensitivityS
 
wxSlider * mGainS
 
wxSlider * mFreqS
 
wxSlider * mTimeS
 
wxTextCtrl * mSensitivityT
 
wxTextCtrl * mGainT
 
wxTextCtrl * mFreqT
 
wxTextCtrl * mTimeT
 
double mSensitivity
 
double mGain
 
double mFreq
 
double mTime
 
bool mbLeaveNoise
 

Private Member Functions

void OnGetProfile (wxCommandEvent &event)
 
void OnKeepNoise (wxCommandEvent &event)
 
void OnPreview (wxCommandEvent &event) override
 
void OnRemoveNoise (wxCommandEvent &event)
 
void OnCancel (wxCommandEvent &event)
 
void OnSensitivityText (wxCommandEvent &event)
 
void OnGainText (wxCommandEvent &event)
 
void OnFreqText (wxCommandEvent &event)
 
void OnTimeText (wxCommandEvent &event)
 
void OnSensitivitySlider (wxCommandEvent &event)
 
void OnGainSlider (wxCommandEvent &event)
 
void OnFreqSlider (wxCommandEvent &event)
 
void OnTimeSlider (wxCommandEvent &event)
 

Detailed Description

Dialog used with EffectNoiseRemoval.

Definition at line 137 of file NoiseRemoval.h.

Constructor & Destructor Documentation

◆ NoiseRemovalDialog()

NoiseRemovalDialog::NoiseRemovalDialog ( EffectNoiseRemoval effect,
EffectSettingsAccess access,
wxWindow *  parent 
)

Definition at line 650 of file NoiseRemoval.cpp.

652 : EffectDialog( parent, XO("Noise Removal"), EffectTypeProcess)
653 , mAccess{ access }
654{
655 m_pEffect = effect;
656
657 // NULL out the control members until the controls are created.
659 m_pButton_Preview = NULL;
661
662 Init();
663
665 (wxButton *)wxWindow::FindWindowById(ID_EFFECT_PREVIEW, this);
667 (wxButton *)wxWindow::FindWindowById(wxID_OK, this);
668}
#define ID_EFFECT_PREVIEW
Definition: Effect.h:199
@ EffectTypeProcess
XO("Cut/Copy/Paste")
EffectDialog(wxWindow *parent, const TranslatableString &title, int type=0, int flags=wxDEFAULT_DIALOG_STYLE, int additionalButtons=0)
Definition: EffectUI.cpp:1350
wxButton * m_pButton_RemoveNoise
Definition: NoiseRemoval.h:175
EffectSettingsAccess & mAccess
Definition: NoiseRemoval.h:171
wxButton * m_pButton_Preview
Definition: NoiseRemoval.h:174
wxButton * m_pButton_GetProfile
Definition: NoiseRemoval.h:173
EffectNoiseRemoval * m_pEffect
Definition: NoiseRemoval.h:170

Member Function Documentation

◆ MakeNoiseRemovalDialog()

wxSizer * NoiseRemovalDialog::MakeNoiseRemovalDialog ( bool  call_fit = true,
bool  set_sizer = true 
)

◆ OnCancel()

void NoiseRemovalDialog::OnCancel ( wxCommandEvent &  event)
private

Definition at line 717 of file NoiseRemoval.cpp.

718{
719 EndModal(0);
720}

◆ OnFreqSlider()

void NoiseRemovalDialog::OnFreqSlider ( wxCommandEvent &  event)
private

Definition at line 847 of file NoiseRemoval.cpp.

848{
849 mFreq = mFreqS->GetValue() * 10;
850 mFreqT->SetValue(wxString::Format(wxT("%d"), (int)mFreq));
851}
wxT("CloseDown"))
wxTextCtrl * mFreqT
Definition: NoiseRemoval.h:187

References mFreq, mFreqS, mFreqT, and wxT().

Here is the call graph for this function:

◆ OnFreqText()

void NoiseRemovalDialog::OnFreqText ( wxCommandEvent &  event)
private

Definition at line 823 of file NoiseRemoval.cpp.

824{
825 mFreqT->GetValue().ToDouble(&mFreq);
826 mFreqS->SetValue(std::clamp<long>(mFreq / 10, FREQ_MIN, FREQ_MAX));
827}
#define FREQ_MAX
#define FREQ_MIN

References FREQ_MAX, FREQ_MIN, mFreq, mFreqS, and mFreqT.

◆ OnGainSlider()

void NoiseRemovalDialog::OnGainSlider ( wxCommandEvent &  event)
private

Definition at line 841 of file NoiseRemoval.cpp.

842{
843 mGain = mGainS->GetValue();
844 mGainT->SetValue(wxString::Format(wxT("%d"), (int)mGain));
845}
wxTextCtrl * mGainT
Definition: NoiseRemoval.h:186

References mGain, mGainS, mGainT, and wxT().

Here is the call graph for this function:

◆ OnGainText()

void NoiseRemovalDialog::OnGainText ( wxCommandEvent &  event)
private

Definition at line 817 of file NoiseRemoval.cpp.

818{
819 mGainT->GetValue().ToDouble(&mGain);
820 mGainS->SetValue(std::clamp<long>(mGain, GAIN_MIN, GAIN_MAX));
821}
#define GAIN_MIN
#define GAIN_MAX

References GAIN_MAX, GAIN_MIN, mGain, mGainS, and mGainT.

◆ OnGetProfile()

void NoiseRemovalDialog::OnGetProfile ( wxCommandEvent &  event)
private

Definition at line 670 of file NoiseRemoval.cpp.

671{
672 EndModal(1);
673}

◆ OnKeepNoise()

void NoiseRemovalDialog::OnKeepNoise ( wxCommandEvent &  event)
private

Definition at line 675 of file NoiseRemoval.cpp.

676{
677 mbLeaveNoise = mKeepNoise->GetValue();
678}
wxRadioButton * mKeepNoise
Definition: NoiseRemoval.h:178

References mbLeaveNoise, and mKeepNoise.

◆ OnPreview()

void NoiseRemovalDialog::OnPreview ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from EffectDialog.

Definition at line 680 of file NoiseRemoval.cpp.

681{
682 // Save & restore parameters around Preview, because we didn't do OK.
683 bool oldDoProfile = m_pEffect->mDoProfile;
684 bool oldLeaveNoise = m_pEffect->mbLeaveNoise;
685 double oldSensitivity = m_pEffect->mSensitivity;
686 double oldGain = m_pEffect->mNoiseGain;
687 double oldFreq = m_pEffect->mFreqSmoothingHz;
688 double oldTime = m_pEffect->mAttackDecayTime;
689
691
692 m_pEffect->mDoProfile = false;
698
699 auto cleanup = finally( [&] {
700 m_pEffect->mSensitivity = oldSensitivity;
701 m_pEffect->mNoiseGain = oldGain;
702 m_pEffect->mFreqSmoothingHz = oldFreq;
703 m_pEffect->mAttackDecayTime = oldTime;
704 m_pEffect->mbLeaveNoise = oldLeaveNoise;
705 m_pEffect->mDoProfile = oldDoProfile;
706 } );
707
709}
void EffectPreview(EffectBase &effect, EffectSettingsAccess &access, std::function< void()> updateUI, bool dryOnly)
Calculate temporary tracks of limited length with effect applied and play.
bool TransferDataFromWindow() override

References EffectPreview(), m_pEffect, mAccess, EffectNoiseRemoval::mAttackDecayTime, EffectNoiseRemoval::mbLeaveNoise, mbLeaveNoise, EffectNoiseRemoval::mDoProfile, mFreq, EffectNoiseRemoval::mFreqSmoothingHz, mGain, EffectNoiseRemoval::mNoiseGain, EffectNoiseRemoval::mSensitivity, mSensitivity, mTime, and TransferDataFromWindow().

Here is the call graph for this function:

◆ OnRemoveNoise()

void NoiseRemovalDialog::OnRemoveNoise ( wxCommandEvent &  event)
private

Definition at line 711 of file NoiseRemoval.cpp.

712{
713 mbLeaveNoise = mKeepNoise->GetValue();
714 EndModal(2);
715}

References mbLeaveNoise, and mKeepNoise.

◆ OnSensitivitySlider()

void NoiseRemovalDialog::OnSensitivitySlider ( wxCommandEvent &  event)
private

Definition at line 835 of file NoiseRemoval.cpp.

836{
837 mSensitivity = mSensitivityS->GetValue()/100.0 - 20.0;
838 mSensitivityT->SetValue(wxString::Format(wxT("%.2f"), mSensitivity));
839}
wxTextCtrl * mSensitivityT
Definition: NoiseRemoval.h:185
wxSlider * mSensitivityS
Definition: NoiseRemoval.h:180

References mSensitivity, mSensitivityS, mSensitivityT, and wxT().

Here is the call graph for this function:

◆ OnSensitivityText()

void NoiseRemovalDialog::OnSensitivityText ( wxCommandEvent &  event)
private

Definition at line 811 of file NoiseRemoval.cpp.

812{
813 mSensitivityT->GetValue().ToDouble(&mSensitivity);
814 mSensitivityS->SetValue(std::clamp<long>(mSensitivity*100.0 + (SENSITIVITY_MAX-SENSITIVITY_MIN+1)/2.0, SENSITIVITY_MIN, SENSITIVITY_MAX));
815}
#define SENSITIVITY_MIN
#define SENSITIVITY_MAX

References mSensitivity, mSensitivityS, mSensitivityT, SENSITIVITY_MAX, and SENSITIVITY_MIN.

◆ OnTimeSlider()

void NoiseRemovalDialog::OnTimeSlider ( wxCommandEvent &  event)
private

Definition at line 853 of file NoiseRemoval.cpp.

854{
855 mTime = mTimeS->GetValue() / (TIME_MAX*1.0);
856 mTimeT->SetValue(wxString::Format(wxT("%.2f"), mTime));
857}
#define TIME_MAX
wxTextCtrl * mTimeT
Definition: NoiseRemoval.h:188

References mTime, mTimeS, mTimeT, TIME_MAX, and wxT().

Here is the call graph for this function:

◆ OnTimeText()

void NoiseRemovalDialog::OnTimeText ( wxCommandEvent &  event)
private

Definition at line 829 of file NoiseRemoval.cpp.

830{
831 mTimeT->GetValue().ToDouble(&mTime);
832 mTimeS->SetValue(std::clamp<long>(mTime * TIME_MAX + 0.5, TIME_MIN, TIME_MAX));
833}
#define TIME_MIN

References mTime, mTimeS, mTimeT, TIME_MAX, and TIME_MIN.

◆ PopulateOrExchange()

void NoiseRemovalDialog::PopulateOrExchange ( ShuttleGui S)
overridevirtual

This is a virtual function which will be overridden to provide the actual parameters that we want for each kind of dialog.

Reimplemented from EffectDialog.

Definition at line 722 of file NoiseRemoval.cpp.

723{
724 S.StartStatic(XO("Step 1"));
725 {
726 S.AddVariableText(XO(
727"Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"));
728 m_pButton_GetProfile = S.Id(ID_BUTTON_GETPROFILE).AddButton(XXO("&Get Noise Profile"));
729 }
730 S.EndStatic();
731
732 S.StartStatic(XO("Step 2"));
733 {
734 S.AddVariableText(XO(
735"Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to remove noise.\n"));
736
737 S.StartMultiColumn(3, wxEXPAND);
738 S.SetStretchyCol(2);
739 {
740 mGainT = S.Id(ID_GAIN_TEXT)
741 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
742 .AddTextBox(XXO("Noise re&duction (dB):"), wxT(""), 0);
743
745 .Name(XO("Noise reduction"))
746 .Style(wxSL_HORIZONTAL)
747 .MinSize( { 150, -1 } )
748 .AddSlider( {}, 0, GAIN_MAX, GAIN_MIN);
749
751 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
752 .AddTextBox(XXO("&Sensitivity (dB):"), wxT(""), 0);
754 .Name(XO("Sensitivity"))
755 .Style(wxSL_HORIZONTAL)
756 .MinSize( { 150, -1 } )
757 .AddSlider( {}, 0, SENSITIVITY_MAX, SENSITIVITY_MIN);
758
759 mFreqT = S.Id(ID_FREQ_TEXT)
760 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
761 .AddTextBox(XXO("Fr&equency smoothing (Hz):"), wxT(""), 0);
763 .Name(XO("Frequency smoothing"))
764 .Style(wxSL_HORIZONTAL)
765 .MinSize( { 150, -1 } )
766 .AddSlider( {}, 0, FREQ_MAX, FREQ_MIN);
767
768 mTimeT = S.Id(ID_TIME_TEXT)
769 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
770 .AddTextBox(XXO("Attac&k/decay time (secs):"), wxT(""), 0);
772 .Name(XO("Attack/decay time"))
773 .Style(wxSL_HORIZONTAL)
774 .MinSize( { 150, -1 } )
775 .AddSlider( {}, 0, TIME_MAX, TIME_MIN);
776
777 S.AddPrompt(XXO("Noise:"));
779 .AddRadioButton(XXO("Re&move"));
781 .AddRadioButtonToGroup(XXO("&Isolate"));
782 }
783 S.EndMultiColumn();
784 }
785 S.EndStatic();
786}
XXO("&Cut/Copy/Paste Toolbar")
@ ID_GAIN_TEXT
@ ID_TIME_SLIDER
@ ID_BUTTON_GETPROFILE
@ ID_GAIN_SLIDER
@ ID_FREQ_SLIDER
@ ID_SENSITIVITY_TEXT
@ ID_SENSITIVITY_SLIDER
@ ID_RADIOBUTTON_KEEPSIGNAL
@ ID_TIME_TEXT
@ ID_FREQ_TEXT
@ ID_RADIOBUTTON_KEEPNOISE
#define S(N)
Definition: ToChars.cpp:64
wxRadioButton * mKeepSignal
Definition: NoiseRemoval.h:177

References FREQ_MAX, FREQ_MIN, GAIN_MAX, GAIN_MIN, ID_BUTTON_GETPROFILE, ID_FREQ_SLIDER, ID_FREQ_TEXT, ID_GAIN_SLIDER, ID_GAIN_TEXT, ID_RADIOBUTTON_KEEPNOISE, ID_RADIOBUTTON_KEEPSIGNAL, ID_SENSITIVITY_SLIDER, ID_SENSITIVITY_TEXT, ID_TIME_SLIDER, ID_TIME_TEXT, m_pButton_GetProfile, mFreqS, mFreqT, mGainS, mGainT, mKeepNoise, mKeepSignal, mSensitivityS, mSensitivityT, mTimeS, mTimeT, S, SENSITIVITY_MAX, SENSITIVITY_MIN, TIME_MAX, TIME_MIN, wxT(), XO(), and XXO().

Here is the call graph for this function:

◆ TransferDataFromWindow()

bool NoiseRemovalDialog::TransferDataFromWindow ( )
override

Definition at line 805 of file NoiseRemoval.cpp.

806{
807 // Nothing to do here
808 return true;
809}

Referenced by OnPreview().

Here is the caller graph for this function:

◆ TransferDataToWindow()

bool NoiseRemovalDialog::TransferDataToWindow ( )
override

Definition at line 788 of file NoiseRemoval.cpp.

789{
790 mSensitivityT->SetValue(wxString::Format(wxT("%.2f"), mSensitivity));
791 mGainT->SetValue(wxString::Format(wxT("%d"), (int)mGain));
792 mFreqT->SetValue(wxString::Format(wxT("%d"), (int)mFreq));
793 mTimeT->SetValue(wxString::Format(wxT("%.2f"), mTime));
794 mKeepNoise->SetValue(mbLeaveNoise);
795 mKeepSignal->SetValue(!mbLeaveNoise);
796
797 mSensitivityS->SetValue(std::clamp<long>(mSensitivity*100.0 + (SENSITIVITY_MAX-SENSITIVITY_MIN+1)/2.0, SENSITIVITY_MIN, SENSITIVITY_MAX));
798 mGainS->SetValue(std::clamp<long>(mGain, GAIN_MIN, GAIN_MAX));
799 mFreqS->SetValue(std::clamp<long>(mFreq / 10, FREQ_MIN, FREQ_MAX));
800 mTimeS->SetValue(std::clamp<long>(mTime * TIME_MAX + 0.5, TIME_MIN, TIME_MAX));
801
802 return true;
803}

References FREQ_MAX, FREQ_MIN, GAIN_MAX, GAIN_MIN, mbLeaveNoise, mFreq, mFreqS, mFreqT, mGain, mGainS, mGainT, mKeepNoise, mKeepSignal, mSensitivity, mSensitivityS, mSensitivityT, mTime, mTimeS, mTimeT, SENSITIVITY_MAX, SENSITIVITY_MIN, TIME_MAX, TIME_MIN, and wxT().

Referenced by EffectNoiseRemoval::ShowHostInterface().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ m_pButton_GetProfile

wxButton* NoiseRemovalDialog::m_pButton_GetProfile

Definition at line 173 of file NoiseRemoval.h.

Referenced by PopulateOrExchange().

◆ m_pButton_Preview

wxButton* NoiseRemovalDialog::m_pButton_Preview

Definition at line 174 of file NoiseRemoval.h.

Referenced by EffectNoiseRemoval::ShowHostInterface().

◆ m_pButton_RemoveNoise

wxButton* NoiseRemovalDialog::m_pButton_RemoveNoise

Definition at line 175 of file NoiseRemoval.h.

Referenced by EffectNoiseRemoval::ShowHostInterface().

◆ m_pEffect

EffectNoiseRemoval* NoiseRemovalDialog::m_pEffect

Definition at line 170 of file NoiseRemoval.h.

Referenced by OnPreview().

◆ mAccess

EffectSettingsAccess& NoiseRemovalDialog::mAccess

Definition at line 171 of file NoiseRemoval.h.

Referenced by OnPreview().

◆ mbLeaveNoise

bool NoiseRemovalDialog::mbLeaveNoise

◆ mFreq

double NoiseRemovalDialog::mFreq

◆ mFreqS

wxSlider* NoiseRemovalDialog::mFreqS

Definition at line 182 of file NoiseRemoval.h.

Referenced by OnFreqSlider(), OnFreqText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mFreqT

wxTextCtrl* NoiseRemovalDialog::mFreqT

Definition at line 187 of file NoiseRemoval.h.

Referenced by OnFreqSlider(), OnFreqText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mGain

double NoiseRemovalDialog::mGain

◆ mGainS

wxSlider* NoiseRemovalDialog::mGainS

Definition at line 181 of file NoiseRemoval.h.

Referenced by OnGainSlider(), OnGainText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mGainT

wxTextCtrl* NoiseRemovalDialog::mGainT

Definition at line 186 of file NoiseRemoval.h.

Referenced by OnGainSlider(), OnGainText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mKeepNoise

wxRadioButton* NoiseRemovalDialog::mKeepNoise

◆ mKeepSignal

wxRadioButton* NoiseRemovalDialog::mKeepSignal

◆ mSensitivity

double NoiseRemovalDialog::mSensitivity

◆ mSensitivityS

wxSlider* NoiseRemovalDialog::mSensitivityS

◆ mSensitivityT

wxTextCtrl* NoiseRemovalDialog::mSensitivityT

◆ mTime

double NoiseRemovalDialog::mTime

◆ mTimeS

wxSlider* NoiseRemovalDialog::mTimeS

Definition at line 183 of file NoiseRemoval.h.

Referenced by OnTimeSlider(), OnTimeText(), PopulateOrExchange(), and TransferDataToWindow().

◆ mTimeT

wxTextCtrl* NoiseRemovalDialog::mTimeT

Definition at line 188 of file NoiseRemoval.h.

Referenced by OnTimeSlider(), OnTimeText(), PopulateOrExchange(), and TransferDataToWindow().


The documentation for this class was generated from the following files: