EQ enable and separate default buttons, ready to wire up real time code
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 2 Dec 2012 10:39:21 +0000 (10:39 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 2 Dec 2012 10:39:21 +0000 (10:39 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1111 01035d8c-6547-0410-b346-abe4f91aad63

fdmdv2/src/dlg_filter.cpp
fdmdv2/src/dlg_filter.h
fdmdv2/src/fdmdv2_main.cpp
fdmdv2/src/fdmdv2_main.h

index 043dfaa4c0c005a615d4c52349f7679e7f1baab2..e0874527febbba6b6e548166c0f3875ba19dd98a 100644 (file)
@@ -93,27 +93,43 @@ FilterDlg::FilterDlg(wxWindow* parent, bool running, wxWindowID id, const wxStri
     newLPCPFControl(&m_codec2LPCPostFilterBeta, &m_staticTextBeta, right, "Beta");
     newLPCPFControl(&m_codec2LPCPostFilterGamma, &m_staticTextGamma, right, "Gamma");
     lpcpfs->Add(right, 0, wxALL, 5);
-#endif
 
+    m_LPCPostFilterDefault = new wxButton(this, wxID_ANY, wxT("Default"));
+    lpcpfs->Add(m_LPCPostFilterDefault, 0, wxALL|wxALIGN_CENTRE_HORIZONTAL|wxALIGN_CENTRE_VERTICAL, 5);
+#endif
     bSizer30->Add(lpcpfs, 0, wxALL, 0);
 
     // EQ Filters -----------------------------------------------------------
 
     wxStaticBoxSizer* eqMicInSizer = new wxStaticBoxSizer(new wxStaticBox(this, wxID_ANY, _("Mic In Equaliser")), wxVERTICAL);
     wxBoxSizer* eqMicInSizer1 = new wxBoxSizer(wxHORIZONTAL);
+    wxBoxSizer* eqMicInSizer2 = new wxBoxSizer(wxHORIZONTAL);
 
     m_MicInBass   = newEQ(eqMicInSizer1, "Bass"  , MAX_FREQ_BASS, disableQ);
     m_MicInTreble = newEQ(eqMicInSizer1, "Treble", MAX_FREQ_TREBLE, disableQ);
     eqMicInSizer->Add(eqMicInSizer1);
-    m_MicInMid    = newEQ(eqMicInSizer, "Mid"   , MAX_FREQ_DEF, enableQ);
+
+    m_MicInEnable = new wxCheckBox(this, wxID_ANY, _("Enable"), wxDefaultPosition,wxDefaultSize, wxCHK_2STATE);
+    eqMicInSizer2->Add(m_MicInEnable,0,wxALIGN_CENTRE_VERTICAL|wxRIGHT,10);
+    m_MicInMid    = newEQ(eqMicInSizer2, "Mid"   , MAX_FREQ_DEF, enableQ);
+    m_MicInDefault = new wxButton(this, wxID_ANY, wxT("Default"));
+    eqMicInSizer2->Add(m_MicInDefault,0,wxALIGN_CENTRE_VERTICAL|wxLEFT,20);
+    eqMicInSizer->Add(eqMicInSizer2);
 
     wxStaticBoxSizer* eqSpkOutSizer = new wxStaticBoxSizer(new wxStaticBox(this, wxID_ANY, _("Speaker Out Equaliser")), wxVERTICAL);
     wxBoxSizer* eqSpkOutSizer1 = new wxBoxSizer(wxHORIZONTAL);
+    wxBoxSizer* eqSpkOutSizer2 = new wxBoxSizer(wxHORIZONTAL);
 
     m_SpkOutBass   = newEQ(eqSpkOutSizer1, "Bass"  , MAX_FREQ_BASS, disableQ);
     m_SpkOutTreble = newEQ(eqSpkOutSizer1, "Treble", MAX_FREQ_TREBLE, disableQ);
     eqSpkOutSizer->Add(eqSpkOutSizer1);
-    m_SpkOutMid    = newEQ(eqSpkOutSizer, "Mid"   , MAX_FREQ_DEF, enableQ);
+
+    m_SpkOutEnable = new wxCheckBox(this, wxID_ANY, _("Enable"), wxDefaultPosition,wxDefaultSize, wxCHK_2STATE);
+    eqSpkOutSizer2->Add(m_SpkOutEnable,0,wxALIGN_CENTRE_VERTICAL|wxRIGHT,10);
+    m_SpkOutMid    = newEQ(eqSpkOutSizer2, "Mid"   , MAX_FREQ_DEF, enableQ);
+    m_SpkOutDefault = new wxButton(this, wxID_ANY, wxT("Default"));
+    eqSpkOutSizer2->Add(m_SpkOutDefault,0,wxALIGN_CENTRE_VERTICAL|wxLEFT,20);
+    eqSpkOutSizer->Add(eqSpkOutSizer2);
     
     bSizer30->Add(eqMicInSizer, 0, wxALL, 0);
     bSizer30->Add(eqSpkOutSizer, 0, wxALL, 0);
@@ -145,9 +161,6 @@ FilterDlg::FilterDlg(wxWindow* parent, bool running, wxWindowID id, const wxStri
     // Default - Cancel - OK   Buttons at the bottom --------------------------
 
     wxBoxSizer* bSizer31 = new wxBoxSizer(wxHORIZONTAL);
-    m_sdbSizer5Default = new wxButton(this, wxID_ANY, wxT("Default"));
-    bSizer31->Add(m_sdbSizer5Default, 0, wxALL, 2);
-
     m_sdbSizer5Cancel = new wxButton(this, wxID_CANCEL);
     bSizer31->Add(m_sdbSizer5Cancel, 0, wxALL, 2);
     m_sdbSizer5OK = new wxButton(this, wxID_OK);
@@ -168,6 +181,7 @@ FilterDlg::FilterDlg(wxWindow* parent, bool running, wxWindowID id, const wxStri
     m_codec2LPCPostFilterBassBoost->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxScrollEventHandler(FilterDlg::OnBassBoost), NULL, this);
     m_codec2LPCPostFilterBeta->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnBetaScroll), NULL, this);
     m_codec2LPCPostFilterGamma->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnGammaScroll), NULL, this);
+    m_LPCPostFilterDefault->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnLPCPostFilterDefault), NULL, this);
 
     m_MicInBass.sliderFreq->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInBassFreqScroll), NULL, this);
     m_MicInBass.sliderGain->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInBassGainScroll), NULL, this);
@@ -176,6 +190,8 @@ FilterDlg::FilterDlg(wxWindow* parent, bool running, wxWindowID id, const wxStri
     m_MicInMid.sliderFreq->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInMidFreqScroll), NULL, this);
     m_MicInMid.sliderGain->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInMidGainScroll), NULL, this);
     m_MicInMid.sliderQ->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInMidQScroll), NULL, this);
+    m_MicInEnable->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxScrollEventHandler(FilterDlg::OnMicInEnable), NULL, this);
+    m_MicInDefault->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnMicInDefault), NULL, this);
 
     m_SpkOutBass.sliderFreq->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutBassFreqScroll), NULL, this);
     m_SpkOutBass.sliderGain->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutBassGainScroll), NULL, this);
@@ -184,9 +200,10 @@ FilterDlg::FilterDlg(wxWindow* parent, bool running, wxWindowID id, const wxStri
     m_SpkOutMid.sliderFreq->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutMidFreqScroll), NULL, this);
     m_SpkOutMid.sliderGain->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutMidGainScroll), NULL, this);
     m_SpkOutMid.sliderQ->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutMidQScroll), NULL, this);
+    m_SpkOutEnable->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxScrollEventHandler(FilterDlg::OnSpkOutEnable), NULL, this);
+    m_SpkOutDefault->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnSpkOutDefault), NULL, this);
 
     m_sdbSizer5Cancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnCancel), NULL, this);
-    m_sdbSizer5Default->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnDefault), NULL, this);
     m_sdbSizer5OK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnOK), NULL, this);
 
     sox_biquad_start();
@@ -209,6 +226,7 @@ FilterDlg::~FilterDlg()
     m_codec2LPCPostFilterBassBoost->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxScrollEventHandler(FilterDlg::OnBassBoost), NULL, this);
     m_codec2LPCPostFilterBeta->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnBetaScroll), NULL, this);
     m_codec2LPCPostFilterGamma->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnGammaScroll), NULL, this);
+    m_LPCPostFilterDefault->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnLPCPostFilterDefault), NULL, this);
 
     m_MicInBass.sliderFreq->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInBassFreqScroll), NULL, this);
     m_MicInBass.sliderGain->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInBassGainScroll), NULL, this);
@@ -217,6 +235,8 @@ FilterDlg::~FilterDlg()
     m_MicInMid.sliderFreq->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInMidFreqScroll), NULL, this);
     m_MicInMid.sliderGain->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInMidGainScroll), NULL, this);
     m_MicInMid.sliderQ->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnMicInMidQScroll), NULL, this);
+    m_MicInEnable->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxScrollEventHandler(FilterDlg::OnMicInEnable), NULL, this);
+    m_MicInDefault->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnMicInDefault), NULL, this);
 
     m_SpkOutBass.sliderFreq->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutBassFreqScroll), NULL, this);
     m_SpkOutBass.sliderGain->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutBassGainScroll), NULL, this);
@@ -225,9 +245,10 @@ FilterDlg::~FilterDlg()
     m_SpkOutMid.sliderFreq->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutMidFreqScroll), NULL, this);
     m_SpkOutMid.sliderGain->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutMidGainScroll), NULL, this);
     m_SpkOutMid.sliderQ->Disconnect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(FilterDlg::OnSpkOutMidQScroll), NULL, this);
+    m_SpkOutEnable->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxScrollEventHandler(FilterDlg::OnSpkOutEnable), NULL, this);
+    m_SpkOutDefault->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnSpkOutDefault), NULL, this);
 
     m_sdbSizer5Cancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnCancel), NULL, this);
-    m_sdbSizer5Default->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnDefault), NULL, this);
     m_sdbSizer5OK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(FilterDlg::OnOK), NULL, this);
 }
 
@@ -236,13 +257,13 @@ void FilterDlg::newLPCPFControl(wxSlider **slider, wxStaticText **stValue, wxSiz
     wxBoxSizer *bs = new wxBoxSizer(wxHORIZONTAL);
 
     wxStaticText* st = new wxStaticText(this, wxID_ANY, controlName, wxDefaultPosition, wxSize(70,-1), wxALIGN_RIGHT);
-    bs->Add(st, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 0);
+    bs->Add(st, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2);
 
     *slider = new wxSlider(this, wxID_ANY, 0, 0, SLIDER_MAX, wxDefaultPosition, wxSize(SLIDER_LENGTH,wxDefaultCoord));
-    bs->Add(*slider, 1, wxALIGN_CENTER_VERTICAL|wxALL, 0);
+    bs->Add(*slider, 1, wxALIGN_CENTER_VERTICAL|wxALL, 2);
 
     *stValue = new wxStaticText(this, wxID_ANY, wxT("0.0"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
-    bs->Add(*stValue, 1, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL, 0);
+    bs->Add(*stValue, 1, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL, 2);
 
     s->Add(bs, 0);
 }
@@ -314,6 +335,8 @@ void FilterDlg::ExchangeData(int inout)
         m_MicInMid.Q = wxGetApp().m_MicInMidQ; setQ(&m_MicInMid);
         m_MicInMid.Q = limit(m_MicInMid.Q, pow(10.0,MIN_LOG10_Q), pow(10.0, MAX_LOG10_Q));
 
+        m_MicInEnable->SetValue(wxGetApp().m_MicInEnable);
+
         setFreq(&m_MicInBass); setGain(&m_MicInBass); plotMicInFilterSpectrum();
  
         // Spk Out Equaliser
@@ -335,6 +358,8 @@ void FilterDlg::ExchangeData(int inout)
         m_SpkOutMid.Q = wxGetApp().m_SpkOutMidQ; setQ(&m_SpkOutMid);
         m_SpkOutMid.Q = limit(m_SpkOutMid.Q, pow(10.0,MIN_LOG10_Q), pow(10.0, MAX_LOG10_Q));
 
+        m_SpkOutEnable->SetValue(wxGetApp().m_SpkOutEnable);
+
         setFreq(&m_SpkOutBass); setGain(&m_SpkOutBass); plotSpkOutFilterSpectrum();
     }
     if(inout == EXCHANGE_DATA_OUT)
@@ -411,13 +436,17 @@ void FilterDlg::OnCancel(wxCommandEvent& event)
 //-------------------------------------------------------------------------
 // OnDefault()
 //-------------------------------------------------------------------------
-void FilterDlg::OnDefault(wxCommandEvent& event)
+
+void FilterDlg::OnLPCPostFilterDefault(wxCommandEvent& event)
 {
     m_beta = CODEC2_LPC_PF_BETA; setBeta();
     m_gamma = CODEC2_LPC_PF_GAMMA; setGamma();
     m_codec2LPCPostFilterEnable->SetValue(true);
     m_codec2LPCPostFilterBassBoost->SetValue(true);
+}
 
+void FilterDlg::OnMicInDefault(wxCommandEvent& event)
+{
     m_MicInBass.freqHz = 100.0;
     m_MicInBass.gaindB = 0.0;
     setFreq(&m_MicInBass); setGain(&m_MicInBass); 
@@ -431,6 +460,11 @@ void FilterDlg::OnDefault(wxCommandEvent& event)
     m_MicInMid.Q = 1.0;
     setFreq(&m_MicInMid); setGain(&m_MicInMid); setQ(&m_MicInMid); 
 
+    plotMicInFilterSpectrum();    
+}
+
+void FilterDlg::OnSpkOutDefault(wxCommandEvent& event)
+{
     m_SpkOutBass.freqHz = 100.0;
     m_SpkOutBass.gaindB = 0.0;
     setFreq(&m_SpkOutBass); setGain(&m_SpkOutBass); 
@@ -444,7 +478,7 @@ void FilterDlg::OnDefault(wxCommandEvent& event)
     m_SpkOutMid.Q = 1.0;
     setFreq(&m_SpkOutMid); setGain(&m_SpkOutMid); setQ(&m_SpkOutMid); 
 
-    plotMicInFilterSpectrum();    
+    plotSpkOutFilterSpectrum();    
 }
 
 //-------------------------------------------------------------------------
@@ -521,6 +555,15 @@ void FilterDlg::OnGammaScroll(wxScrollEvent& event) {
     setCodec2();
 }
 
+// immediately change rather using ExchangeData() so we can switch on and off at run time
+void FilterDlg::OnMicInEnable(wxScrollEvent& event) {
+    wxGetApp().m_MicInEnable = m_MicInEnable->GetValue();
+}
+
+void FilterDlg::OnSpkOutEnable(wxScrollEvent& event) {
+    wxGetApp().m_SpkOutEnable = m_SpkOutEnable->GetValue();
+}
+
 void FilterDlg::setFreq(EQ *eq)
 {
     wxString buf;
index 402d9702d401103d0248f369f79191fd511fad22..4a561e735feee098a937ec35bd9f60933b702d7b 100644 (file)
@@ -62,9 +62,9 @@ class FilterDlg : public wxDialog
         // Handlers for events.
         void    OnCancel(wxCommandEvent& event);
         void    OnOK(wxCommandEvent& event);
-        void    OnDefault(wxCommandEvent& event);
         void    OnClose(wxCloseEvent& event);
         void    OnInitDialog(wxInitDialogEvent& event);
+        void    OnLPCPostFilterDefault(wxCommandEvent& event);
 
         void    OnBetaScroll(wxScrollEvent& event);
         void    OnGammaScroll(wxScrollEvent& event);
@@ -78,6 +78,8 @@ class FilterDlg : public wxDialog
         void    OnMicInMidFreqScroll(wxScrollEvent& event) { sliderToFreq(&m_MicInMid, true); }
         void    OnMicInMidGainScroll(wxScrollEvent& event) { sliderToGain(&m_MicInMid, true); }
         void    OnMicInMidQScroll(wxScrollEvent& event) { sliderToQ(&m_MicInMid, true); }
+        void    OnMicInEnable(wxScrollEvent& event);
+        void    OnMicInDefault(wxCommandEvent& event);
 
         void    OnSpkOutBassFreqScroll(wxScrollEvent& event) { sliderToFreq(&m_SpkOutBass, false); }
         void    OnSpkOutBassGainScroll(wxScrollEvent& event) { sliderToGain(&m_SpkOutBass, false); }
@@ -86,6 +88,8 @@ class FilterDlg : public wxDialog
         void    OnSpkOutMidFreqScroll(wxScrollEvent& event) { sliderToFreq(&m_SpkOutMid, false); }
         void    OnSpkOutMidGainScroll(wxScrollEvent& event) { sliderToGain(&m_SpkOutMid, false); }
         void    OnSpkOutMidQScroll(wxScrollEvent& event) { sliderToQ(&m_SpkOutMid, false); }
+        void    OnSpkOutEnable(wxScrollEvent& event);
+        void    OnSpkOutDefault(wxCommandEvent& event);
 
         wxStaticText* m_staticText8;
         wxCheckBox*   m_codec2LPCPostFilterEnable;
@@ -97,14 +101,19 @@ class FilterDlg : public wxDialog
         wxStaticText* m_staticText911;
         wxSlider*     m_codec2LPCPostFilterGamma;
         wxStaticText* m_staticTextGamma;
+        wxButton*     m_LPCPostFilterDefault;
 
         wxStdDialogButtonSizer* m_sdbSizer5;
         wxButton*     m_sdbSizer5OK;
-        wxButton*     m_sdbSizer5Default;
         wxButton*     m_sdbSizer5Cancel;
         PlotSpectrum* m_MicInFreqRespPlot;
         PlotSpectrum* m_SpkOutFreqRespPlot;
-    
+        
+        wxCheckBox*   m_MicInEnable;
+        wxButton*     m_MicInDefault;
+        wxCheckBox*   m_SpkOutEnable;
+        wxButton*     m_SpkOutDefault;
+
         float        *m_MicInMagdB;
         float        *m_SpkOutMagdB;
 
@@ -112,6 +121,7 @@ class FilterDlg : public wxDialog
         bool          m_running;
         float         m_beta;
         float         m_gamma;
+
         void          setBeta(void);  // sets slider and static text from m_beta
         void          setGamma(void); // sets slider and static text from m_gamma
         void          setCodec2(void);
index 0eed1fb1e5e8b22ab1f6a3d3d05d17e984e4c9ad..90dc50ee807e928b5dc4ea5187ebceb45ad381a4 100644 (file)
@@ -338,6 +338,8 @@ MainFrame::MainFrame(wxWindow *parent) : TopFrame(parent)
     wxGetApp().m_MicInMidGaindB = (float)pConfig->Read(wxT("/Filter/MicInMidGaindB"),    (long)0)/10.0;
     wxGetApp().m_MicInMidQ = (float)pConfig->Read(wxT("/Filter/MicInMidQ"),    (long)100)/100.0;
 
+    wxGetApp().m_MicInEnable = (float)pConfig->Read(wxT("/Filter/MicInEnable"), t);
+
     wxGetApp().m_SpkOutBassFreqHz = (float)pConfig->Read(wxT("/Filter/SpkOutBassFreqHz"),    1);
     wxGetApp().m_SpkOutBassGaindB = (float)pConfig->Read(wxT("/Filter/SpkOutBassGaindB"),    (long)0)/10.0;
     wxGetApp().m_SpkOutTrebleFreqHz = (float)pConfig->Read(wxT("/Filter/SpkOutTrebleFreqHz"),    1);
@@ -346,6 +348,8 @@ MainFrame::MainFrame(wxWindow *parent) : TopFrame(parent)
     wxGetApp().m_SpkOutMidGaindB = (float)pConfig->Read(wxT("/Filter/SpkOutMidGaindB"),    (long)0)/10.0;
     wxGetApp().m_SpkOutMidQ = (float)pConfig->Read(wxT("/Filter/SpkOutMidQ"),    (long)100)/100.0;
 
+    wxGetApp().m_SpkOutEnable = (float)pConfig->Read(wxT("/Filter/SpkOutEnable"), t);
+
     wxGetApp().m_callSign = pConfig->Read("/Data/CallSign", wxT(""));
 
     pConfig->SetPath(wxT("/"));
@@ -490,7 +494,10 @@ MainFrame::~MainFrame()
         pConfig->Write(wxT("/Audio/snrSlow"), wxGetApp().m_snrSlow);
 
         pConfig->Write(wxT("/Data/CallSign"), wxGetApp().m_callSign);
-   }
+        pConfig->Write(wxT("/Filter/MicInEnable"), wxGetApp().m_MicInEnable);
+        pConfig->Write(wxT("/Filter/SpkOutEnable"), wxGetApp().m_SpkOutEnable);
+    }
 
     //m_togRxID->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MainFrame::OnTogBtnRxIDUI), NULL, this);
     m_togTxID->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MainFrame::OnTogBtnTxIDUI), NULL, this);
index d39b063bc4955a7b9d45ff78e8db6bd4782c8c57..694df2bf41a0701f16b6c612d186f71c3bc77d80 100644 (file)
@@ -160,6 +160,7 @@ class MainApp : public wxApp
         float               m_MicInMidFreqHz;
         float               m_MicInMidGaindB;
         float               m_MicInMidQ;
+        bool                m_MicInEnable;
 
         // Spk Out Equaliser
         float               m_SpkOutBassFreqHz;
@@ -169,6 +170,7 @@ class MainApp : public wxApp
         float               m_SpkOutMidFreqHz;
         float               m_SpkOutMidGaindB;
         float               m_SpkOutMidQ;
+        bool                m_SpkOutEnable;
 
         // Flags for displaying windows
         int                 m_show_wf;