changeset 586:f3dde307f4b8

some refactoring
author Ulf.Hammarqvist@gmail.com
date Thu, 11 Oct 2012 20:55:03 +0000
parents b8a961149499
children d59c0d65624b
files branches/carfac_cpp/include/AGC.h branches/carfac_cpp/include/CAR.h branches/carfac_cpp/include/CARFAC.h branches/carfac_cpp/include/Ear.h branches/carfac_cpp/include/IHC.h branches/carfac_cpp/makefile branches/carfac_cpp/src/AGC.cpp branches/carfac_cpp/src/CAR.cpp branches/carfac_cpp/src/CARFAC.cpp branches/carfac_cpp/src/Ear.cpp branches/carfac_cpp/src/IHC.cpp branches/carfac_cpp/unittest/CARFAC_unittest.cpp
diffstat 12 files changed, 83 insertions(+), 100 deletions(-) [+]
line wrap: on
line diff
--- a/branches/carfac_cpp/include/AGC.h	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/include/AGC.h	Thu Oct 11 20:55:03 2012 +0000
@@ -5,21 +5,7 @@
 
 class AGC_parameters {
 public:
-  AGC_parameters():
-    n_stages_(4),
-    time_constants_({0.002*1, 0.002*4, 0.002*16, 0.002*64}),
-    agc_stage_gain_(2),
-    decimation_({8, 2, 2, 2}),
-    agc1_scales_({1.0, 1.4,  2.0, 2.8}),
-    agc2_scales_({1.6, 2.25, 3.2, 4.5}),
-    detect_scale_(0.25),
-    agc_mix_coeff_(0.5){
-    // do nothing more
-  }
-
-  virtual ~AGC_parameters(){
-    // do nothing
-  }
+  AGC_parameters();
 
   int n_stages_;
   FloatArray time_constants_;
@@ -34,7 +20,6 @@
 class AGC_coefficients {
 public:
   AGC_coefficients(AGC_parameters*, float, int);
-  virtual ~AGC_coefficients();
 
   int n_ch_;
   int n_agc_stages_;
@@ -51,7 +36,6 @@
   float detect_scale_;
   
 private:
-  AGC_coefficients();
   FloatArray Build_FIR_coeffs(float, float, int*, int*);
 };
 
--- a/branches/carfac_cpp/include/CAR.h	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/include/CAR.h	Thu Oct 11 20:55:03 2012 +0000
@@ -9,26 +9,7 @@
 
 class CAR_parameters{
 public:
-  CAR_parameters():
-    velocity_scale_(0.2),
-    v_offset_(0.01),
-    v2_corner_(0.2),
-    v_damp_max_(0.01),
-    min_zeta_(0.10),
-    first_pole_theta_(0.085*kPi),
-    zero_ratio_(sqrt(2)),
-    high_f_damping_compression_(0.5),
-    erb_per_step_(0.5),
-    min_pole_hz_(30),
-    erb_break_freq_(kDefaultErbBreakFreq),
-    erb_q_(kDefaultErbQ)
-  {
-    // do nothing more
-  }
-
-  virtual ~CAR_parameters(){
-    // do nothing
-  }
+  CAR_parameters();
 
   float velocity_scale_;
   float v_offset_;
@@ -47,7 +28,6 @@
 class CAR_coefficients{
 public:
   CAR_coefficients(CAR_parameters*, float, FloatArray);
-  virtual ~CAR_coefficients();
 
   FloatArray r1_coeffs_;
   FloatArray a0_coeffs_;
@@ -56,8 +36,6 @@
   FloatArray g0_coeffs_;
   FloatArray zr_coeffs_;
 
-private:
-  CAR_coefficients();
 };
 
 #endif /* CAR_H_ */
--- a/branches/carfac_cpp/include/CARFAC.h	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/include/CARFAC.h	Thu Oct 11 20:55:03 2012 +0000
@@ -12,7 +12,6 @@
 class CARFAC{
 public:
   CARFAC(int, CAR_parameters*, IHC_parameters*, AGC_parameters*, int);
-  virtual ~CARFAC();
   static float ERB_Hz(float, float, float);
 
   float fs_;
@@ -25,7 +24,6 @@
   std::vector<Ear> ears_;
 
 private:
-  CARFAC(){};
 
 };
 
--- a/branches/carfac_cpp/include/Ear.h	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/include/Ear.h	Thu Oct 11 20:55:03 2012 +0000
@@ -24,11 +24,7 @@
   IHC_coefficients* ihc_coeffs_p_;
   AGC_coefficients* agc_coeffs_p_;
 
-  virtual
-  ~Ear();
-
 private:
-  Ear();
 
 };
 
--- a/branches/carfac_cpp/include/IHC.h	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/include/IHC.h	Thu Oct 11 20:55:03 2012 +0000
@@ -4,18 +4,7 @@
 // not sure how to best deal with the "three style" IHC - ulha
 class IHC_parameters{
 public:
-  IHC_parameters() :
-    tau_lpf_(0.000080),
-    tau1_out_(0.010),
-    tau1_in_(0.20),
-    tau2_out_(0.0025),
-    tau2_in_(0.005){
-    // do nothing more
-  }
-
-  virtual ~IHC_parameters(){
-    // do nothing
-  }
+  IHC_parameters();
 
   float tau_lpf_;
   float tau1_out_;
@@ -27,12 +16,11 @@
 class IHC_coefficients{
 public:
   IHC_coefficients(IHC_parameters*, float, int);
-  virtual ~IHC_coefficients();
 
   float saturation_output_;
 
 private:
-  IHC_coefficients();
+
 };
 
 #endif /* IHC_H_ */
--- a/branches/carfac_cpp/makefile	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/makefile	Thu Oct 11 20:55:03 2012 +0000
@@ -34,7 +34,7 @@
 all : libcarfac unittest
 
 libcarfac : $(SRC_DIR)/CARFAC.o $(SRC_OBJ)
-	$(CXX) -shared $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@.$(LIB_EXTENSION) -fPIC
+	$(CXX) -shared $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@$(LIB_EXTENSION) -fPIC
 
 example_program : libcarfac
 	# likely some example executable that runs the whole thing...
--- a/branches/carfac_cpp/src/AGC.cpp	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/src/AGC.cpp	Thu Oct 11 20:55:03 2012 +0000
@@ -3,6 +3,19 @@
 #include <stdlib.h>
 #include <stdio.h>  
 
+AGC_parameters::AGC_parameters():
+n_stages_(4),
+time_constants_({0.002*1, 0.002*4, 0.002*16, 0.002*64}),
+agc_stage_gain_(2),
+decimation_({8, 2, 2, 2}),
+agc1_scales_({1.0, 1.4,  2.0, 2.8}),
+agc2_scales_({1.6, 2.25, 3.2, 4.5}),
+detect_scale_(0.25),
+agc_mix_coeff_(0.5)
+{
+  // do nothing more
+}
+
 AGC_coefficients::AGC_coefficients(AGC_parameters* AGC_params_p,
                                    float fs, int n_ch){
   float decim = 1.0;
@@ -59,9 +72,6 @@
   agc_gain_ = total_DC_gain;
   detect_scale_ = AGC_params_p->detect_scale_/total_DC_gain;
 }
-AGC_coefficients::~AGC_coefficients(){
-  // TODO Auto-generated destructor stub
-}
 
 FloatArray AGC_coefficients::Build_FIR_coeffs(float var, float mn, int* ptr_iters, int* ptr_taps){
   float a, b;
--- a/branches/carfac_cpp/src/CAR.cpp	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/src/CAR.cpp	Thu Oct 11 20:55:03 2012 +0000
@@ -3,8 +3,26 @@
 #include "CARFAC.h"
 #include <cmath>
 
+CAR_parameters::CAR_parameters():
+	  velocity_scale_(0.2),
+	  v_offset_(0.01),
+	  v2_corner_(0.2),
+	  v_damp_max_(0.01),
+	  min_zeta_(0.10),
+	  first_pole_theta_(0.085*kPi),
+	  zero_ratio_(sqrt(2)),
+	  high_f_damping_compression_(0.5),
+	  erb_per_step_(0.5),
+	  min_pole_hz_(30),
+	  erb_break_freq_(kDefaultErbBreakFreq),
+	  erb_q_(kDefaultErbQ)
+{
+    // do nothing more!
+}
+
 CAR_coefficients::CAR_coefficients(CAR_parameters* car_params_p, float fs,
-                                   FloatArray pole_freqs){
+                                   FloatArray pole_freqs)
+{
 
   float f = pow(car_params_p->zero_ratio_, 2) + 1;
 
@@ -48,7 +66,3 @@
   }
 
 }
-
-CAR_coefficients::~CAR_coefficients(){
-  // TODO Auto-generated destructor stub
-}
--- a/branches/carfac_cpp/src/CARFAC.cpp	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/src/CARFAC.cpp	Thu Oct 11 20:55:03 2012 +0000
@@ -8,11 +8,11 @@
 
 #include "CARFAC_common.h"
 
-CARFAC::CARFAC(int fs = kDefaultFs,
-              CAR_parameters* car_params = new CAR_parameters(),
-              IHC_parameters* ihc_params = new IHC_parameters(),
-              AGC_parameters* agc_params = new AGC_parameters(),
-              int n_ears = 1){
+CARFAC::CARFAC(int fs,
+              CAR_parameters* car_params,
+              IHC_parameters* ihc_params,
+              AGC_parameters* agc_params,
+              int n_ears){
 
   fs_ = fs;
 
@@ -27,14 +27,10 @@
   max_channels_per_octave_ = log(2) / log(pole_freqs_[0]/pole_freqs_[1]);
 
   n_ears_ = n_ears;
-  Ear* ear = new Ear(car_params, ihc_params, agc_params, pole_freqs_, n_ch_, fs);
-  ears_.assign(n_ears_, *ear);
+  Ear ear = Ear(car_params, ihc_params, agc_params, pole_freqs_, n_ch_, fs);
+  ears_.assign(n_ears_, ear);
 }
 
 float CARFAC::ERB_Hz(float cf_hz, float erb_break_freq, float erb_q){
   return (erb_break_freq + cf_hz) / erb_q;
 }
-
-CARFAC::~CARFAC() {
-  //TODO: clean up
-}
--- a/branches/carfac_cpp/src/Ear.cpp	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/src/Ear.cpp	Thu Oct 11 20:55:03 2012 +0000
@@ -19,7 +19,3 @@
   ihc_coeffs_p_ = new IHC_coefficients(&ihc_params_, fs, n_ch);
   agc_coeffs_p_ = new AGC_coefficients(&agc_params_, fs, n_ch);
 }
-
-Ear::~Ear() {
-  // TODO Auto-generated destructor stub
-}
--- a/branches/carfac_cpp/src/IHC.cpp	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/src/IHC.cpp	Thu Oct 11 20:55:03 2012 +0000
@@ -1,9 +1,17 @@
 #include "IHC.h"
 
-IHC_coefficients::IHC_coefficients(IHC_parameters* IHC_params_p, float fs, int n_ch){
+IHC_parameters::IHC_parameters():
+tau_lpf_(0.000080),
+tau1_out_(0.010),
+tau1_in_(0.20),
+tau2_out_(0.0025),
+tau2_in_(0.005)
+{
+// do nothing more
+}
+
+IHC_coefficients::IHC_coefficients(IHC_parameters* IHC_params_p, float fs, int n_ch):
+saturation_output_(0.0)
+{
   // TODO stuff!
 }
-
-IHC_coefficients::~IHC_coefficients() {
-  // TODO Auto-generated destructor stub
-}
--- a/branches/carfac_cpp/unittest/CARFAC_unittest.cpp	Thu Oct 11 19:37:10 2012 +0000
+++ b/branches/carfac_cpp/unittest/CARFAC_unittest.cpp	Thu Oct 11 20:55:03 2012 +0000
@@ -6,23 +6,38 @@
  * CARFACDesignTest - Test suite for constructor related tests.
  */
 TEST(CARFACDesignTest, SampleRate) {
-  CAR_parameters * car_params = new CAR_parameters();;
-  IHC_parameters * ihc_params = new IHC_parameters();
-  AGC_parameters * agc_params = new AGC_parameters();
+  CAR_parameters car_params = CAR_parameters();
+  IHC_parameters ihc_params = IHC_parameters();
+  AGC_parameters agc_params = AGC_parameters();
 
   int arbitrary_number = 1347;
 
-  CARFAC* fooCarfac = new CARFAC(arbitrary_number, car_params, ihc_params, agc_params, 1);
-  EXPECT_EQ(fooCarfac->fs_, arbitrary_number);
+  CARFAC fooCarfac = CARFAC(arbitrary_number, &car_params, &ihc_params, &agc_params, 1);
+  EXPECT_EQ(fooCarfac.fs_, arbitrary_number);
 }
 
 TEST(CARFACDesignTest, NumberOfEars) {
-  CAR_parameters * car_params = new CAR_parameters();;
-  IHC_parameters * ihc_params = new IHC_parameters();
-  AGC_parameters * agc_params = new AGC_parameters();
+  CAR_parameters car_params = CAR_parameters();
+  IHC_parameters ihc_params = IHC_parameters();
+  AGC_parameters agc_params = AGC_parameters();
 
-  int arbitrary_number = 1347;
+  int fs = kDefaultFs;
 
-  CARFAC* fooCarfac = new CARFAC(arbitrary_number, car_params, ihc_params, agc_params, 2);
-  EXPECT_EQ(fooCarfac->n_ears_, fooCarfac->ears_.size());
+  CARFAC fooCarfac = CARFAC(fs, &car_params, &ihc_params, &agc_params, 2);
+  EXPECT_EQ(fooCarfac.n_ears_, fooCarfac.ears_.size());
 }
+
+TEST(CARFACDesignTest, MaxChannelsPerOctave) {
+  CAR_parameters car_params = CAR_parameters();
+  IHC_parameters ihc_params = IHC_parameters();
+  AGC_parameters agc_params = AGC_parameters();
+
+  int fs = kDefaultFs;
+
+  car_params.erb_per_step_ = 2*0.5; //not sure if this is the best way to design this test... I'm just doing _something_ here.
+  float expected_max_channels_per_octave = 10.56/2;
+  float tolerance = 0.25;
+
+  CARFAC fooCarfac = CARFAC(fs, &car_params, &ihc_params, &agc_params, 1);
+  ASSERT_NEAR(fooCarfac.max_channels_per_octave_, expected_max_channels_per_octave, tolerance);
+}