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 652 of file NoiseRemoval.cpp.

654 : EffectDialog( parent, XO("Noise Removal"), EffectTypeProcess)
655 , mAccess{ access }
656{
657 m_pEffect = effect;
658
659 // NULL out the control members until the controls are created.
661 m_pButton_Preview = NULL;
663
664 Init();
665
667 (wxButton *)wxWindow::FindWindowById(ID_EFFECT_PREVIEW, this);
669 (wxButton *)wxWindow::FindWindowById(wxID_OK, this);
670}
#define ID_EFFECT_PREVIEW
Definition: Effect.h:187
@ 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 719 of file NoiseRemoval.cpp.

720{
721 EndModal(0);
722}

◆ OnFreqSlider()

void NoiseRemovalDialog::OnFreqSlider ( wxCommandEvent &  event)
private

Definition at line 849 of file NoiseRemoval.cpp.

850{
851 mFreq = mFreqS->GetValue() * 10;
852 mFreqT->SetValue(wxString::Format(wxT("%d"), (int)mFreq));
853}
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 825 of file NoiseRemoval.cpp.

826{
827 mFreqT->GetValue().ToDouble(&mFreq);
828 mFreqS->SetValue(std::clamp<long>(mFreq / 10, FREQ_MIN, FREQ_MAX));
829}
#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 843 of file NoiseRemoval.cpp.

844{
845 mGain = mGainS->GetValue();
846 mGainT->SetValue(wxString::Format(wxT("%d"), (int)mGain));
847}
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 819 of file NoiseRemoval.cpp.

820{
821 mGainT->GetValue().ToDouble(&mGain);
822 mGainS->SetValue(std::clamp<long>(mGain, GAIN_MIN, GAIN_MAX));
823}
#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 672 of file NoiseRemoval.cpp.

673{
674 EndModal(1);
675}

◆ OnKeepNoise()

void NoiseRemovalDialog::OnKeepNoise ( wxCommandEvent &  event)
private

Definition at line 677 of file NoiseRemoval.cpp.

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

References mbLeaveNoise, and mKeepNoise.

◆ OnPreview()

void NoiseRemovalDialog::OnPreview ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from EffectDialog.

Definition at line 682 of file NoiseRemoval.cpp.

683{
684 // Save & restore parameters around Preview, because we didn't do OK.
685 bool oldDoProfile = m_pEffect->mDoProfile;
686 bool oldLeaveNoise = m_pEffect->mbLeaveNoise;
687 double oldSensitivity = m_pEffect->mSensitivity;
688 double oldGain = m_pEffect->mNoiseGain;
689 double oldFreq = m_pEffect->mFreqSmoothingHz;
690 double oldTime = m_pEffect->mAttackDecayTime;
691
693
694 m_pEffect->mDoProfile = false;
700
701 auto cleanup = finally( [&] {
702 m_pEffect->mSensitivity = oldSensitivity;
703 m_pEffect->mNoiseGain = oldGain;
704 m_pEffect->mFreqSmoothingHz = oldFreq;
705 m_pEffect->mAttackDecayTime = oldTime;
706 m_pEffect->mbLeaveNoise = oldLeaveNoise;
707 m_pEffect->mDoProfile = oldDoProfile;
708 } );
709
711}
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 713 of file NoiseRemoval.cpp.

714{
715 mbLeaveNoise = mKeepNoise->GetValue();
716 EndModal(2);
717}

References mbLeaveNoise, and mKeepNoise.

◆ OnSensitivitySlider()

void NoiseRemovalDialog::OnSensitivitySlider ( wxCommandEvent &  event)
private

Definition at line 837 of file NoiseRemoval.cpp.

838{
839 mSensitivity = mSensitivityS->GetValue()/100.0 - 20.0;
840 mSensitivityT->SetValue(wxString::Format(wxT("%.2f"), mSensitivity));
841}
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 813 of file NoiseRemoval.cpp.

814{
815 mSensitivityT->GetValue().ToDouble(&mSensitivity);
816 mSensitivityS->SetValue(std::clamp<long>(mSensitivity*100.0 + (SENSITIVITY_MAX-SENSITIVITY_MIN+1)/2.0, SENSITIVITY_MIN, SENSITIVITY_MAX));
817}
#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 855 of file NoiseRemoval.cpp.

856{
857 mTime = mTimeS->GetValue() / (TIME_MAX*1.0);
858 mTimeT->SetValue(wxString::Format(wxT("%.2f"), mTime));
859}
#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 831 of file NoiseRemoval.cpp.

832{
833 mTimeT->GetValue().ToDouble(&mTime);
834 mTimeS->SetValue(std::clamp<long>(mTime * TIME_MAX + 0.5, TIME_MIN, TIME_MAX));
835}
#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 724 of file NoiseRemoval.cpp.

725{
726 S.StartStatic(XO("Step 1"));
727 {
728 S.AddVariableText(XO(
729"Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"));
730 m_pButton_GetProfile = S.Id(ID_BUTTON_GETPROFILE).AddButton(XXO("&Get Noise Profile"));
731 }
732 S.EndStatic();
733
734 S.StartStatic(XO("Step 2"));
735 {
736 S.AddVariableText(XO(
737"Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to remove noise.\n"));
738
739 S.StartMultiColumn(3, wxEXPAND);
740 S.SetStretchyCol(2);
741 {
742 mGainT = S.Id(ID_GAIN_TEXT)
743 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
744 .AddTextBox(XXO("Noise re&duction (dB):"), wxT(""), 0);
745
747 .Name(XO("Noise reduction"))
748 .Style(wxSL_HORIZONTAL)
749 .MinSize( { 150, -1 } )
750 .AddSlider( {}, 0, GAIN_MAX, GAIN_MIN);
751
753 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
754 .AddTextBox(XXO("&Sensitivity (dB):"), wxT(""), 0);
756 .Name(XO("Sensitivity"))
757 .Style(wxSL_HORIZONTAL)
758 .MinSize( { 150, -1 } )
759 .AddSlider( {}, 0, SENSITIVITY_MAX, SENSITIVITY_MIN);
760
761 mFreqT = S.Id(ID_FREQ_TEXT)
762 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
763 .AddTextBox(XXO("Fr&equency smoothing (Hz):"), wxT(""), 0);
765 .Name(XO("Frequency smoothing"))
766 .Style(wxSL_HORIZONTAL)
767 .MinSize( { 150, -1 } )
768 .AddSlider( {}, 0, FREQ_MAX, FREQ_MIN);
769
770 mTimeT = S.Id(ID_TIME_TEXT)
771 .Validator<wxTextValidator>(wxFILTER_NUMERIC)
772 .AddTextBox(XXO("Attac&k/decay time (secs):"), wxT(""), 0);
774 .Name(XO("Attack/decay time"))
775 .Style(wxSL_HORIZONTAL)
776 .MinSize( { 150, -1 } )
777 .AddSlider( {}, 0, TIME_MAX, TIME_MIN);
778
779 S.AddPrompt(XXO("Noise:"));
781 .AddRadioButton(XXO("Re&move"));
783 .AddRadioButtonToGroup(XXO("&Isolate"));
784 }
785 S.EndMultiColumn();
786 }
787 S.EndStatic();
788}
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 807 of file NoiseRemoval.cpp.

808{
809 // Nothing to do here
810 return true;
811}

Referenced by OnPreview().

Here is the caller graph for this function:

◆ TransferDataToWindow()

bool NoiseRemovalDialog::TransferDataToWindow ( )
override

Definition at line 790 of file NoiseRemoval.cpp.

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

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: