From 82e7b7577432e0a77302eec9039eacde0374fcbc Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Tue, 25 Jul 2017 21:02:49 -0400
Subject: [PATCH] allow all iem_adaptfilt objects to load without arguments

---
 externals/iem/iem_adaptfilt/src/NLMSCC~.c     | 17 ++++++++++++++++-
 externals/iem/iem_adaptfilt/src/NLMSerr_in~.c | 15 ++++++++++++++-
 externals/iem/iem_adaptfilt/src/NLMS~.c       | 13 +++++++++++++
 externals/iem/iem_adaptfilt/src/n_CLNLMS~.c   | 17 +++++++++++++++++
 externals/iem/iem_adaptfilt/src/n_CNLMS~.c    | 18 +++++++++++++++++-
 5 files changed, 77 insertions(+), 3 deletions(-)

diff --git a/externals/iem/iem_adaptfilt/src/NLMSCC~.c b/externals/iem/iem_adaptfilt/src/NLMSCC~.c
index 48f501aca..5824e1fb9 100644
--- a/externals/iem/iem_adaptfilt/src/NLMSCC~.c
+++ b/externals/iem/iem_adaptfilt/src/NLMSCC~.c
@@ -313,7 +313,22 @@ static void *NLMSCC_tilde_new(t_symbol *s, t_int argc, t_atom *argv)
     t_symbol    *wmax_name;
     t_float beta=0.1f;
     t_float gammax=0.00001f;
-    
+    t_atom sane_defaults[6];
+
+    if (!argc)
+    {
+        post("NLMSCC~: warning: no arguments supplied: setting default values "
+             "to [NLMSCC~ 2 0.1 0.00001 a b c]");
+        SETFLOAT(sane_defaults, 2.);
+        SETFLOAT(sane_defaults+1, 0.1);
+        SETFLOAT(sane_defaults+2, 0.00001);
+        SETSYMBOL(sane_defaults+3, gensym("a"));
+        SETSYMBOL(sane_defaults+4, gensym("b"));
+        SETSYMBOL(sane_defaults+5, gensym("c"));
+        argc = 6;
+        argv = sane_defaults;
+    }
+
     if((argc >= 6) &&
         IS_A_FLOAT(argv,0) &&   //IS_A_FLOAT/SYMBOL from iemlib.h
         IS_A_FLOAT(argv,1) &&
diff --git a/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c b/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c
index f48f302cd..b0f300e67 100644
--- a/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c
+++ b/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c
@@ -221,7 +221,20 @@ static void *NLMSerr_in_tilde_new(t_symbol *s, t_int argc, t_atom *argv)
     t_symbol    *w_name;
     t_float beta=0.01f;
     t_float gammax=0.00001f;
-    
+    t_atom sane_defaults[4];
+
+    if (!argc)
+    {
+        post("NLMSerr_in~: warning: no arguments supplied: setting default "
+             "values to [NLMSerr_in~ 2 0.01 0.00001 a]");
+        SETFLOAT(sane_defaults, 2.);
+        SETFLOAT(sane_defaults+1, 0.01);
+        SETFLOAT(sane_defaults+2, 0.00001);
+        SETSYMBOL(sane_defaults+3, gensym("a"));
+        argc = 4;
+        argv = sane_defaults;
+    }
+
     if((argc >= 4) &&
         IS_A_FLOAT(argv,0) &&   //IS_A_FLOAT/SYMBOL from iemlib.h
         IS_A_FLOAT(argv,1) &&
diff --git a/externals/iem/iem_adaptfilt/src/NLMS~.c b/externals/iem/iem_adaptfilt/src/NLMS~.c
index f54efc64d..ee225baa1 100644
--- a/externals/iem/iem_adaptfilt/src/NLMS~.c
+++ b/externals/iem/iem_adaptfilt/src/NLMS~.c
@@ -266,7 +266,20 @@ static void *NLMS_tilde_new(t_symbol *s, t_int argc, t_atom *argv)
     t_symbol    *w_name;
     t_float beta=0.1f;
     t_float gammax=0.00001f;
+    t_atom sane_defaults[4];
     
+    if (!argc)
+    {
+        post("NLMS~: warning: no arguments supplied: setting default "
+             "values to [NLMS~ 2 0.1 0.00001 a]");
+        SETFLOAT(sane_defaults, 2.);
+        SETFLOAT(sane_defaults+1, 0.1);
+        SETFLOAT(sane_defaults+2, 0.00001);
+        SETSYMBOL(sane_defaults+3, gensym("a"));
+        argc = 4;
+        argv = sane_defaults;
+    }
+
     if((argc >= 4) &&
         IS_A_FLOAT(argv,0) &&   //IS_A_FLOAT/SYMBOL from iemlib.h
         IS_A_FLOAT(argv,1) &&
diff --git a/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c b/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c
index 3153c0b98..23a00d8d4 100644
--- a/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c
+++ b/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c
@@ -406,6 +406,23 @@ static void *n_CLNLMS_tilde_new(t_symbol *s, t_int argc, t_atom *argv)
   t_float gammax=0.00001f;
   t_float kappa = 1.0f;
   t_float leakage = 0.99f;
+  t_atom sane_defaults[7];
+
+  if (!argc)
+  {
+    post("n_CLNLMS~: warning: no arguments supplied: setting default "
+         "values to [n_CLNLMS~ 1 2 0.1 0.00001 1 0.99 a]");
+    SETFLOAT(sane_defaults, 1.);
+    SETFLOAT(sane_defaults+1, 2.);
+    SETFLOAT(sane_defaults+2, 0.1);
+    SETFLOAT(sane_defaults+3, 0.00001);
+    SETFLOAT(sane_defaults+4, 1);
+    SETFLOAT(sane_defaults+5, 0.99);
+    SETSYMBOL(sane_defaults+6, gensym("a"));
+    argc = 7;
+    argv = sane_defaults;
+  }
+
   
   if((argc >= 7) &&
     IS_A_FLOAT(argv,0) &&   //IS_A_FLOAT/SYMBOL from iemlib.h
diff --git a/externals/iem/iem_adaptfilt/src/n_CNLMS~.c b/externals/iem/iem_adaptfilt/src/n_CNLMS~.c
index d1d6b5140..1b636fc61 100644
--- a/externals/iem/iem_adaptfilt/src/n_CNLMS~.c
+++ b/externals/iem/iem_adaptfilt/src/n_CNLMS~.c
@@ -394,7 +394,23 @@ static void *n_CNLMS_tilde_new(t_symbol *s, t_int argc, t_atom *argv)
   t_float beta=0.1f;
   t_float gammax=0.00001f;
   t_float kappa = 1.0f;
-  
+  t_atom sane_defaults[6];
+
+  if (!argc)
+  {
+    post("n_CNLMS~: warning: no arguments supplied: setting default "
+         "values to [n_CLNLMS~ 1 2 0.1 0.00001 1 0.99 a]");
+    SETFLOAT(sane_defaults, 1.);
+    SETFLOAT(sane_defaults+1, 2.);
+    SETFLOAT(sane_defaults+2, 0.1);
+    SETFLOAT(sane_defaults+3, 0.00001);
+    SETFLOAT(sane_defaults+4, 1);
+    SETSYMBOL(sane_defaults+5, gensym("a"));
+    argc = 6;
+    argv = sane_defaults;
+  }
+
+
   if((argc >= 6) &&
     IS_A_FLOAT(argv,0) &&   //IS_A_FLOAT/SYMBOL from iemlib.h
     IS_A_FLOAT(argv,1) &&
-- 
GitLab