diff --git a/externals/autotune/autotune~.c b/externals/autotune/autotune~.c
index 71dc9343e037182561ea9041389821401f74b9fd..e65d8bcd7a9ef8623f0f49f7ff114de4a2bc5173 100644
--- a/externals/autotune/autotune~.c
+++ b/externals/autotune/autotune~.c
@@ -547,7 +547,7 @@ void autotune_dsp(t_autotune *x, t_signal **sp, short *count)
 	
 	if(x->fs != sp[0]->s_sr)  autotune_init(x, sp[0]->s_sr);
 	
-	dsp_add(autotune_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	dsp_add(autotune_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/bassemu~/bassemu~.c b/externals/bassemu~/bassemu~.c
index 14966fc52f52d2d6a4d046648761db9687aaf43a..dcb9d5b29d264443268d62c3918c3fb15bde8255 100644
--- a/externals/bassemu~/bassemu~.c
+++ b/externals/bassemu~/bassemu~.c
@@ -230,7 +230,8 @@ static t_int *bassemu_perform(t_int *ww)
 static void bassemu_dsp(t_bassemu *x, t_signal **sp)
 {
 	x->sr = sp[0]->s_sr;
-	dsp_add(bassemu_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	dsp_add(bassemu_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,
+            (t_int)sp[0]->s_n);
 }
 
 static void recalc(t_bassemu *x)
diff --git a/externals/bsaylor/aenv~.c b/externals/bsaylor/aenv~.c
index 6e0daa5fcde13e211d9b8197617c3536029bbe8e..d3726239043e80209ba124b2b69a1b15bcea70bf 100644
--- a/externals/bsaylor/aenv~.c
+++ b/externals/bsaylor/aenv~.c
@@ -99,7 +99,7 @@ static t_int *aenv_perform(t_int *w)
 
 static void aenv_dsp(t_aenv *x, t_signal **sp)
 {
-	dsp_add(aenv_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+	dsp_add(aenv_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void aenv_float(t_aenv *x, t_float f)
diff --git a/externals/bsaylor/partconv~.c b/externals/bsaylor/partconv~.c
index 80a108b7b1b29761a1293e3c66b2b739c83500e7..e12732484f496096acbe8f1525665d567aef10e3 100644
--- a/externals/bsaylor/partconv~.c
+++ b/externals/bsaylor/partconv~.c
@@ -65,6 +65,7 @@ typedef struct _partconv {
 	int nbins;
 	int nparts;
 	int ir_prepared;
+	int hosed;	/* set if our array doesn't exist */
 	int pd_blocksize;
 
 	// partitions of impulse response
@@ -121,6 +122,16 @@ static void partconv_deal_work(t_partconv *x)
 #include "altivec-perform.inc.c"
 #else
 
+static t_int *partconv_perform_hosed(t_int *w)
+{
+	t_float *out = (t_float *)(w[3]);
+	int n = (int)(w[4]);
+	int i;
+	for (i = 0; i < n; i++)
+		out[i] = 0;
+	return (w+5);
+}
+
 static t_int *partconv_perform(t_int *w)
 {
 	t_partconv *x = (t_partconv *)(w[1]);
@@ -132,7 +143,6 @@ static t_int *partconv_perform(t_int *w)
 	int k;	// bin
 	int p;	// partition
 	int endpart;
-
 #ifdef USE_SSE
 	int v1;
 	int v2;
@@ -148,7 +158,6 @@ static t_int *partconv_perform(t_int *w)
 
 	float *sumbuf1ptr;
 	float *sumbuf2ptr;
-
 	memcpy(&(x->inbuf[x->inbufpos]), in, n*sizeof(float));  // gather a block of input into input buffer
 	x->inbufpos += n;
 	if (x->inbufpos >= x->partsize) {
@@ -235,13 +244,12 @@ static t_int *partconv_perform(t_int *w)
 static void partconv_free(t_partconv *x)
 {
 	int i;
-
 	fftwf_free(x->inbuf);
 	for (i = 0; i < x->nparts; i++)
 		fftwf_free(x->irpart_td[i]);
 	fftwf_free(x->input_td);
 	fftwf_destroy_plan(x->input_plan);
-	for (i  = 0; i < x->nsumbufs; i++) {
+	for (i = 0; i < x->nsumbufs; i++) {
 		fftwf_free(x->sumbufs[i].fd);
 		fftwf_destroy_plan(x->sumbufs[i].plan);
 	}
@@ -259,20 +267,25 @@ static void partconv_set(t_partconv *x, t_symbol *s)
 	// get the array from pd
 	x->arrayname = s;
 	if ( ! (arrayobj = (t_garray *)pd_findbyclass(x->arrayname, garray_class))) {
-		if (*x->arrayname->s_name) {
-			pd_error(x, "partconv~: %s: no such array", x->arrayname->s_name);
-			return;
-		}
+		x->hosed = 1;
+		if (x->arrayname && *x->arrayname->s_name)
+			pd_error(x, "partconv~: %s: no such array",
+			x->arrayname->s_name);
+		else
+			pd_error(x, "partconv~: need an array name");
+		return;
 	} else if ( ! garray_getfloatarray(arrayobj, &arraysize, &array)) {
+		x->hosed = 1;
 		pd_error(x, "%s: bad template", x->arrayname->s_name);
 		return;
+	} else {
+		x->hosed = 0;
 	}
 
 	// if the IR has already been prepared, free everything first
 	if (x->ir_prepared == 1) {
 		partconv_free(x);
 	}
-
 	// caculate number of partitions
 	x->nparts = arraysize / x->partsize;
 	if (arraysize % x->partsize != 0)
@@ -336,8 +349,12 @@ static void partconv_dsp(t_partconv *x, t_signal **sp)
 	if (x->ir_prepared == 0) {
 		partconv_set(x, x->arrayname);
 	}
-
-	dsp_add(partconv_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	if (x->hosed)
+		dsp_add(partconv_perform_hosed, 4, x, sp[0]->s_vec,
+			sp[1]->s_vec, (t_int)sp[0]->s_n);
+	else
+		dsp_add(partconv_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,
+			(t_int)sp[0]->s_n);
 }
 
 static void *partconv_new(t_symbol *s, int argc, t_atom *argv)
@@ -352,11 +369,12 @@ static void *partconv_new(t_symbol *s, int argc, t_atom *argv)
                instantiate and get to the help patch */
             if (!argc)
             {
-                post("partconv~: warning: no arguments given");
                 SETSYMBOL(sane_defaults, &s_);
-                SETFLOAT(sane_defaults+1, 2.);
+                SETFLOAT(sane_defaults+1, 64.);
                 argc = 2;
                 argv = sane_defaults;
+                pd_error(x, "partconv~: no arguments given. Setting some "
+			"sane defaults to keep Purr Data from crashing.");
             }
             else
             {
diff --git a/externals/bsaylor/pvoc~.c b/externals/bsaylor/pvoc~.c
index 62c38c505ee16ba959999c9fe621594f03b6b103..3402ef70bb60849a60dca4e628a0d4e48b4ed8b3 100644
--- a/externals/bsaylor/pvoc~.c
+++ b/externals/bsaylor/pvoc~.c
@@ -258,7 +258,7 @@ static t_int *pvoc_perform(t_int *w)
 
 static void pvoc_dsp(t_pvoc *x, t_signal **sp)
 {
-	    dsp_add(pvoc_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+	    dsp_add(pvoc_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 // adapted from jsarlo's windowing library
diff --git a/externals/bsaylor/susloop~.c b/externals/bsaylor/susloop~.c
index 1e968df488c3b3f952c6d9b3e2fb5a49e5a05da3..227274e474bd3bda1bda6649db2fa679b43428cb 100644
--- a/externals/bsaylor/susloop~.c
+++ b/externals/bsaylor/susloop~.c
@@ -88,7 +88,7 @@ static t_int *susloop_perform(t_int *w)
 
 static void susloop_dsp(t_susloop *x, t_signal **sp)
 {
-	    dsp_add(susloop_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	    dsp_add(susloop_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *susloop_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/bsaylor/svf~.c b/externals/bsaylor/svf~.c
index d40f5220b6fc141a88f87e6b016a7574980ec89f..5c80ce699150b00d91c5135afb61e9708c68ece2 100644
--- a/externals/bsaylor/svf~.c
+++ b/externals/bsaylor/svf~.c
@@ -124,7 +124,7 @@ static t_int *svf_perform(t_int *w)
 
 static void svf_dsp(t_svf *x, t_signal **sp)
 {
-	dsp_add(svf_perform, 7, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[0]->s_n);
+	dsp_add(svf_perform, 7, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *svf_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/bsaylor/zhzxh~.c b/externals/bsaylor/zhzxh~.c
index 2292912b42dd992dd89e3adc38587dcd543e5789..3533b131f7cb2362ff3110e01bc22585ca5ed424 100644
--- a/externals/bsaylor/zhzxh~.c
+++ b/externals/bsaylor/zhzxh~.c
@@ -59,7 +59,7 @@ static t_int *zhzxh_perform(t_int *w)
 
 static void zhzxh_dsp(t_zhzxh *x, t_signal **sp)
 {
-	dsp_add(zhzxh_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	dsp_add(zhzxh_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *zhzxh_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/creb/modules++/biquadseries~.cc b/externals/creb/modules++/biquadseries~.cc
index f4a24639d3b56528d48610ba3dae3575cebc2254..819f5bf07e75355a56a6d1bb5c26b440a56f4019 100644
--- a/externals/creb/modules++/biquadseries~.cc
+++ b/externals/creb/modules++/biquadseries~.cc
@@ -77,7 +77,7 @@ static t_int *biquadseries_perform(t_int *w)
 
 static void biquadseries_dsp(t_biquadseries *x, t_signal **sp)
 {
-    dsp_add(biquadseries_perform, 4, x->biquadseries, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(biquadseries_perform, 4, x->biquadseries, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 
 }                                  
 void biquadseries_free(void)
diff --git a/externals/creb/modules++/blosc~.cc b/externals/creb/modules++/blosc~.cc
index ee353d69ce00aa9670e4326f6776f0e496ec2ff9..2ab91f60fb1f164f3a87d6a38a83565b82b7feda 100644
--- a/externals/creb/modules++/blosc~.cc
+++ b/externals/creb/modules++/blosc~.cc
@@ -478,30 +478,30 @@ static void blosc_dsp(t_blosc *x, t_signal **sp)
   if (x->x_ctl.c_waveform == gensym("syncsaw")){
       x->x_ctl.c_scale = 1.0;
       x->x_ctl.c_scale_update = 1.0;
-      dsp_add(blosc_perform_hardsync_saw, 5, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
+      dsp_add(blosc_perform_hardsync_saw, 5, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
   }
 
   /* 1 osc */
   else if (x->x_ctl.c_waveform == gensym("pulse")){
       x->x_ctl.c_scale = 1.0;
       x->x_ctl.c_scale_update = 1.0;
-      dsp_add(blosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+      dsp_add(blosc_perform_pulse, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
   }
   else if (x->x_ctl.c_waveform == gensym("pulse2")){
       x->x_ctl.c_phase_inc_scale *= 2;
       x->x_ctl.c_scale = 1.0;
       x->x_ctl.c_scale_update = -1.0;
-      dsp_add(blosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+      dsp_add(blosc_perform_pulse, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
   }
   else if (x->x_ctl.c_waveform == gensym("comparator")){
       x->x_ctl.c_scale = 1.0;
       x->x_ctl.c_scale_update = 1.0;
-      dsp_add(blosc_perform_comparator, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+      dsp_add(blosc_perform_comparator, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
   }
   else{
        x->x_ctl.c_scale = 1.0;
       x->x_ctl.c_scale_update = 1.0;
-      dsp_add(blosc_perform_saw, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+      dsp_add(blosc_perform_saw, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
   }
 
 
diff --git a/externals/creb/modules++/filterortho~.cc b/externals/creb/modules++/filterortho~.cc
index 14c28968dfc07c22f4d15e78eff76d2656c66d85..9dc3e07f18db012c335a872cf140cd1a415619d5 100644
--- a/externals/creb/modules++/filterortho~.cc
+++ b/externals/creb/modules++/filterortho~.cc
@@ -68,7 +68,8 @@ static t_int *filterortho_perform(t_int *w)
 
 static void filterortho_dsp(t_filterortho *x, t_signal **sp)
 {
-    dsp_add(filterortho_perform, 4, x->filterortho, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(filterortho_perform, 4, x->filterortho, (t_int)sp[0]->s_n,
+        sp[0]->s_vec, sp[1]->s_vec);
 
 }                                  
 void filterortho_free(t_filterortho *x)
diff --git a/externals/creb/modules/abs~.c b/externals/creb/modules/abs~.c
index c4e0aa1d0b4d897e01371bf8b5c4650a001eaf59..3c5c0eb05147efcc403a265b27cf5508c4ef67f1 100644
--- a/externals/creb/modules/abs~.c
+++ b/externals/creb/modules/abs~.c
@@ -30,7 +30,7 @@ static t_int *abs_perform(t_int *w)
 
 static void abs_dsp(t_abs *x, t_signal **sp)
 {
-    dsp_add(abs_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(abs_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *abs_new(void)
diff --git a/externals/creb/modules/bdiag~.c b/externals/creb/modules/bdiag~.c
index bcc9ce4bfe328780bd661da093e35954b3939272..440f1c0d451a62330f34d70f92ecb98f15fd6021 100644
--- a/externals/creb/modules/bdiag~.c
+++ b/externals/creb/modules/bdiag~.c
@@ -215,7 +215,7 @@ static void bdiag_dsp(t_bdiag *x, t_signal **sp)
 	}
       
            
-      dsp_add(bdiag_perform, 4, &x->x_ctl, sp[0]->s_n, 
+      dsp_add(bdiag_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, 
 	      sp[0]->s_vec, sp[1]->s_vec);
     }
 
diff --git a/externals/creb/modules/bfft~.c b/externals/creb/modules/bfft~.c
index 9910f14d9751a006496c90fcfd309ecb8534dcfb..7930f89c4773a1db3af5f49b3adb44963918bc2b 100644
--- a/externals/creb/modules/bfft~.c
+++ b/externals/creb/modules/bfft~.c
@@ -177,7 +177,7 @@ static void bfft_dsp(t_bfft *x, t_signal **sp)
       in = out;
     }
 
-  dsp_add(bfft_perform, 4, &x->x_ctl, n, in, out);
+  dsp_add(bfft_perform, 4, &x->x_ctl, (t_int)n, in, out);
 
 }
 
@@ -196,7 +196,7 @@ static void ibfft_dsp(t_bfft *x, t_signal **sp)
       in = out;
     }
 
-  dsp_add(ibfft_perform, 4, &x->x_ctl, n, in, out);
+  dsp_add(ibfft_perform, 4, &x->x_ctl, (t_int)n, in, out);
 
 }
 
@@ -214,7 +214,7 @@ static void fht_dsp(t_bfft *x, t_signal **sp)
       in = out;
     }
 
-  dsp_add(fht_perform, 4, &x->x_ctl, n, in, out);
+  dsp_add(fht_perform, 4, &x->x_ctl, (t_int)n, in, out);
 
 }
 
diff --git a/externals/creb/modules/bitsplit~.c b/externals/creb/modules/bitsplit~.c
index 85b69a1341153c03d4611d0d4df9eae351dca0cf..f81be641ee9bd5c075873381b125355c259c4693 100644
--- a/externals/creb/modules/bitsplit~.c
+++ b/externals/creb/modules/bitsplit~.c
@@ -71,7 +71,7 @@ static void bitsplit_dsp(t_bitsplit *x, t_signal **sp)
     for (i=0;i<x->x_ctl.c_outputs;i++){
 	x->x_ctl.c_output[i] = sp[i+1]->s_vec;
     }
-    dsp_add(bitsplit_perform, 2, &x->x_ctl, sp[0]->s_n);
+    dsp_add(bitsplit_perform, 2, &x->x_ctl, (t_int)sp[0]->s_n);
 }                                  
 
 
diff --git a/externals/creb/modules/blocknorm~.c b/externals/creb/modules/blocknorm~.c
index 414a046d618fc152a274eac6ef9e8bc567d377da..f47f5892c9be4b56f112094b61b843e6f429725b 100644
--- a/externals/creb/modules/blocknorm~.c
+++ b/externals/creb/modules/blocknorm~.c
@@ -90,7 +90,7 @@ static void blocknorm_dsp(t_blocknorm *x, t_signal **sp)
 	x->x_ctl.c_input[i] = sp[i]->s_vec;
 	x->x_ctl.c_output[i] = sp[c+i]->s_vec;
     }
-    dsp_add(blocknorm_perform, 2, &x->x_ctl, sp[0]->s_n);
+    dsp_add(blocknorm_perform, 2, &x->x_ctl, (t_int)sp[0]->s_n);
 }                                  
 
 
diff --git a/externals/creb/modules/bmatrix~.c b/externals/creb/modules/bmatrix~.c
index 2561894ae5f022d0c163ca2c1d49286f3a2d648c..05c726889c6677a786e9053c075227bcb25d65c4 100644
--- a/externals/creb/modules/bmatrix~.c
+++ b/externals/creb/modules/bmatrix~.c
@@ -102,7 +102,8 @@ static void matrix_dsp(t_matrix *x, t_signal **sp)
   
   for (i=0;i<n;i++) x->x_ctl.c_A[i] = 1;
 
-  dsp_add(matrix_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+  dsp_add(matrix_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec,
+    sp[1]->s_vec);
 
 
 }                                  
diff --git a/externals/creb/modules/bwin~.c b/externals/creb/modules/bwin~.c
index 69c941a9d4f2eb297a60dd84e7fe4076830795a2..7cb46fcc96d838ea21341406a032997e2c146e0e 100644
--- a/externals/creb/modules/bwin~.c
+++ b/externals/creb/modules/bwin~.c
@@ -138,7 +138,7 @@ static void window_dsp(t_window *x, t_signal **sp)
 	window_type(x, x->x_type, x->x_typearg);
     }
 
-    dsp_add(window_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, n);
+    dsp_add(window_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)n);
 }
 
 static void window_free(t_window *x)
diff --git a/externals/creb/modules/cheby~.c b/externals/creb/modules/cheby~.c
index fdd02dcbfb115a047f99e03d84b73ccc7fc93ebe..70f19c30e219deaae70473449cb121a0a99025c6 100644
--- a/externals/creb/modules/cheby~.c
+++ b/externals/creb/modules/cheby~.c
@@ -91,7 +91,7 @@ static t_int *cheby_perform(t_int *w)
 
 static void cheby_dsp(t_cheby *x, t_signal **sp)
 {
-    dsp_add(cheby_perform, 4, &x->x_ctl, sp[0]->s_n, 
+    dsp_add(cheby_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, 
 	    sp[0]->s_vec, sp[1]->s_vec);
 
 }                                  
diff --git a/externals/creb/modules/cmath~.c b/externals/creb/modules/cmath~.c
index c2f11bc603de8b95f7c3f24cf2e6e557997a2aeb..b01f093305de916000885bad2cc30cbdba9d3008 100644
--- a/externals/creb/modules/cmath~.c
+++ b/externals/creb/modules/cmath~.c
@@ -126,7 +126,7 @@ static t_int *cmath_perform_nifft(t_int *w)
 
 static void cmath_dsp(t_cmath *x, t_signal **sp)
 {
-    dsp_add(x->x_perf, 5, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
+    dsp_add(x->x_perf, 5, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 
 }                                  
 void cmath_free(void)
diff --git a/externals/creb/modules/diag~.c b/externals/creb/modules/diag~.c
index 6d054154df50466856be777e96072585afd89df8..443ca811003dbe941d1ff1d5bfcbf5d7b6f9faef 100644
--- a/externals/creb/modules/diag~.c
+++ b/externals/creb/modules/diag~.c
@@ -160,7 +160,7 @@ static void diag_dsp(t_diag *x, t_signal **sp)
 
 
 
-  dsp_add(diag_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+  dsp_add(diag_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 
 }
                                   
diff --git a/externals/creb/modules/dist~.c b/externals/creb/modules/dist~.c
index 6cab910f63309900b01d4013243909ff34a26192..4cda5494a6ee78ac603d0a62a4dfd72baacb7ae1 100644
--- a/externals/creb/modules/dist~.c
+++ b/externals/creb/modules/dist~.c
@@ -237,7 +237,7 @@ static t_int *dist_perform(t_int *w)
 
 static void dist_dsp(t_dist *x, t_signal **sp)
 {
-    dsp_add(dist_perform, 4, &x->x_ctl, sp[0]->s_n, 
+    dsp_add(dist_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, 
 	    sp[0]->s_vec, sp[1]->s_vec);
 
 }                                  
diff --git a/externals/creb/modules/dwt~.c b/externals/creb/modules/dwt~.c
index 5c4a41e6a488b375ed4a25af15e775ff33f9bbb8..f212b0bee56af24c4936ca8857980f5f16954e0c 100644
--- a/externals/creb/modules/dwt~.c
+++ b/externals/creb/modules/dwt~.c
@@ -716,16 +716,16 @@ static void dwt_dsp(t_dwt *x, t_signal **sp)
 
   switch(x->x_ctl.c_type){
   case DWT:
-    dsp_add(dwt_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(dwt_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     break;
   case IDWT:
-    dsp_add(idwt_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(idwt_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     break;
   case DWT16:
-    dsp_add(dwt16_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(dwt16_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     break;
   case IDWT16:
-    dsp_add(idwt16_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(idwt16_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     break;
 
 
diff --git a/externals/creb/modules/dynwav~.c b/externals/creb/modules/dynwav~.c
index f1e0e15614e3f808ae4a7db9f08a83dc334cc3a3..36d5b2e10357f27dbd5bde9fdd7e3684810e9792 100644
--- a/externals/creb/modules/dynwav~.c
+++ b/externals/creb/modules/dynwav~.c
@@ -262,7 +262,7 @@ static void dynwav_dsp(t_dynwav *x, t_signal **sp)
     }
 
 
-  dsp_add(dynwav_perform_8point, 5, &x->x_ctl, sp[0]->s_n, 
+  dsp_add(dynwav_perform_8point, 5, &x->x_ctl, (t_int)sp[0]->s_n, 
 	  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 
 
diff --git a/externals/creb/modules/eadsr~.c b/externals/creb/modules/eadsr~.c
index 9c55970617ff731d8487eb7a198136ac2b9f8501..2dfcfa19f1ef3b955291005f0210014ebdc8f9b2 100644
--- a/externals/creb/modules/eadsr~.c
+++ b/externals/creb/modules/eadsr~.c
@@ -122,7 +122,7 @@ static t_int *eadsr_perform(t_int *w)
 static void eadsr_dsp(t_eadsr *x, t_signal **sp)
 {
     x->x_sr = sp[0]->s_sr;
-    dsp_add(eadsr_perform, 3, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(eadsr_perform, 3, &x->x_ctl, sp[0]->s_n, (t_int)sp[0]->s_vec);
 
 }                                  
 void eadsr_free(void)
diff --git a/externals/creb/modules/ead~.c b/externals/creb/modules/ead~.c
index 4c9f8f2ae353cc5ae2c9b399bc4dc2aa3a97a38d..4faa104d0909f5ac97d22235991e5f1b08b87a5c 100644
--- a/externals/creb/modules/ead~.c
+++ b/externals/creb/modules/ead~.c
@@ -107,7 +107,7 @@ static t_int *ead_perform(t_int *w)
 
 static void ead_dsp(t_ead *x, t_signal **sp)
 {
-  dsp_add(ead_perform, 3, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec);
+  dsp_add(ead_perform, 3, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }                                  
 
 /* destructor */
diff --git a/externals/creb/modules/ear~.c b/externals/creb/modules/ear~.c
index 04d9ebabba432e253a17663781a2607f59de14e3..fb1a05afa0f8c12eb63ad9abd827b6a82d6493a8 100644
--- a/externals/creb/modules/ear~.c
+++ b/externals/creb/modules/ear~.c
@@ -95,7 +95,7 @@ static t_int *ear_perform(t_int *w)
 static void ear_dsp(t_ear *x, t_signal **sp)
 {
     x->x_sr = sp[0]->s_sr;
-    dsp_add(ear_perform, 3, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(ear_perform, 3, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec);
 
 }                                  
 void ear_free(void)
diff --git a/externals/creb/modules/eblosc~.c b/externals/creb/modules/eblosc~.c
index 82779b148639cd3659a3d2f8ba49f4614eca00a7..728af1500b29cb47bd8fe80864148bc88b5fa217 100644
--- a/externals/creb/modules/eblosc~.c
+++ b/externals/creb/modules/eblosc~.c
@@ -503,7 +503,7 @@ static void eblosc_dsp(t_eblosc *x, t_signal **sp)
   if (x->x_ctl.c_waveform == gensym("syncsaw")){
       x->x_ctl.c_scale = 1.0f;
       x->x_ctl.c_scale_update = 1.0f;
-      dsp_add(eblosc_perform_hardsync_saw, 5, &x->x_ctl, sp[0]->s_n,
+      dsp_add(eblosc_perform_hardsync_saw, 5, &x->x_ctl, (t_int)sp[0]->s_n,
 	      sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
   }
 
@@ -511,26 +511,26 @@ static void eblosc_dsp(t_eblosc *x, t_signal **sp)
   else if (x->x_ctl.c_waveform == gensym("pulse")){
       x->x_ctl.c_scale = 1.0f;
       x->x_ctl.c_scale_update = 1.0f;
-      dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n,
+      dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, (t_int)sp[0]->s_n,
 	      sp[0]->s_vec, sp[1]->s_vec);
   }
   else if (x->x_ctl.c_waveform == gensym("pulse2")){
       x->x_ctl.c_phase_inc_scale *= 2;
       x->x_ctl.c_scale = 1.0f;
       x->x_ctl.c_scale_update = -1.0f;
-      dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, sp[0]->s_n,
+      dsp_add(eblosc_perform_pulse, 4, &x->x_ctl, (t_int)sp[0]->s_n,
 	      sp[0]->s_vec, sp[1]->s_vec);
   }
   else if (x->x_ctl.c_waveform == gensym("comparator")){
       x->x_ctl.c_scale = 1.0f;
       x->x_ctl.c_scale_update = 1.0f;
       dsp_add(eblosc_perform_comparator, 4, &x->x_ctl,
-	      sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	      (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
   }
   else{
        x->x_ctl.c_scale = 1.0f;
       x->x_ctl.c_scale_update = 1.0f;
-      dsp_add(eblosc_perform_saw, 4, &x->x_ctl, sp[0]->s_n,
+      dsp_add(eblosc_perform_saw, 4, &x->x_ctl, (t_int)sp[0]->s_n,
 	      sp[0]->s_vec, sp[1]->s_vec);
   }
 
diff --git a/externals/creb/modules/fdn~.c b/externals/creb/modules/fdn~.c
index ffcb77045dbccfb0d706297a9e528a5daddfa7a6..e0c29acc2ddcfa6741f02e9bcdf3ca223c60f641 100644
--- a/externals/creb/modules/fdn~.c
+++ b/externals/creb/modules/fdn~.c
@@ -255,7 +255,7 @@ static void fdn_dsp(t_fdn *x, t_signal **sp)
   dsp_add(fdn_perform, 
 	  5, 
 	  &x->x_ctl, 
-	  sp[0]->s_n, 
+	  (t_int)sp[0]->s_n, 
 	  sp[0]->s_vec, 
 	  sp[1]->s_vec, 
 	  sp[2]->s_vec);
diff --git a/externals/creb/modules/junction~.c b/externals/creb/modules/junction~.c
index ef68e50c645b8effc90063900e4521ba8db8abf8..591002c693ec35b026f2b83d2667d32b06657e62 100644
--- a/externals/creb/modules/junction~.c
+++ b/externals/creb/modules/junction~.c
@@ -145,9 +145,9 @@ static void junction_dsp(t_junction *x, t_signal **sp)
   x->x_ctl.c_norm =  norm; 
 
 
-  dsp_add(junction_perform, 2, &x->x_ctl, sp[0]->s_n);
+  dsp_add(junction_perform, 2, &x->x_ctl, (t_int)sp[0]->s_n);
 
-    /*    dsp_add(junction_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);*/
+    /*    dsp_add(junction_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);*/
 
 }                                  
 
diff --git a/externals/creb/modules/lattice~.c b/externals/creb/modules/lattice~.c
index f600705875efa41bd13046ff8881ecdfd9e5d79c..101835f00d327bbf01bfab62e1ad46313ad31687 100644
--- a/externals/creb/modules/lattice~.c
+++ b/externals/creb/modules/lattice~.c
@@ -85,7 +85,7 @@ static t_int *lattice_perform(t_int *w)
 
 static void lattice_dsp(t_lattice *x, t_signal **sp)
 {
-    dsp_add(lattice_perform, 4, &x->x_ctl, sp[0]->s_n,
+    dsp_add(lattice_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec);
 
 }                                  
diff --git a/externals/creb/modules/permut~.c b/externals/creb/modules/permut~.c
index 80b392c19af60c53d38b30065810261a47019abb..8a29e2fba064bf7ab7760aaf64f59cbfa814d0f1 100644
--- a/externals/creb/modules/permut~.c
+++ b/externals/creb/modules/permut~.c
@@ -149,7 +149,7 @@ static t_int *permut_perform(t_int *w)
 static void permut_dsp(t_permut *x, t_signal **sp)
 {
   permut_resize_table(x, sp[0]->s_n);
-  dsp_add(permut_perform, 4, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+  dsp_add(permut_perform, 4, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 
 }
                                   
diff --git a/externals/creb/modules/qmult~.c b/externals/creb/modules/qmult~.c
index 55ed7df581446fcbf3cf81042aac4bbbb72a8f23..d1bf1ab8a1469cab562db347f64ceaebc47ec254 100644
--- a/externals/creb/modules/qmult~.c
+++ b/externals/creb/modules/qmult~.c
@@ -129,7 +129,7 @@ static void qmult_dsp(t_qmult *x, t_signal **sp)
       x->x_ctl.c_output[i] = sp[i+8]->s_vec;
     }
 
-  dsp_add(qmult_perform, 2, &x->x_ctl, sp[0]->s_n);
+  dsp_add(qmult_perform, 2, &x->x_ctl, (t_int)sp[0]->s_n);
 
 
 }                                  
diff --git a/externals/creb/modules/qnorm~.c b/externals/creb/modules/qnorm~.c
index b1e0371796737c697a2c88328a15c126eb7883bc..342a2677db89c49b989df1cdf03d2d0b56d164c2 100644
--- a/externals/creb/modules/qnorm~.c
+++ b/externals/creb/modules/qnorm~.c
@@ -101,7 +101,7 @@ static void qnorm_dsp(t_qnorm *x, t_signal **sp)
       x->x_ctl.c_output[i] = sp[i+4]->s_vec;
     }
 
-  dsp_add(qnorm_perform, 2, &x->x_ctl, sp[0]->s_n);
+  dsp_add(qnorm_perform, 2, &x->x_ctl, (t_int)sp[0]->s_n);
 
 
 }                                  
diff --git a/externals/creb/modules/ramp~.c b/externals/creb/modules/ramp~.c
index ad82efab7eaa05efd997fed553e887c26c8f0084..3d55462a0dfe98bdf1de9d0035d8d760041a9dfc 100644
--- a/externals/creb/modules/ramp~.c
+++ b/externals/creb/modules/ramp~.c
@@ -75,7 +75,7 @@ static t_int *ramp_perform(t_int *w)
 
 static void ramp_dsp(t_ramp *x, t_signal **sp)
 {
-    dsp_add(ramp_perform, 3, &x->x_ctl, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(ramp_perform, 3, &x->x_ctl, (t_int)sp[0]->s_n, sp[0]->s_vec);
 
 }                                  
 void ramp_free(void)
diff --git a/externals/creb/modules/resofilt~.c b/externals/creb/modules/resofilt~.c
index 1d7754596b4183479346fae9043790181810f75f..cc84ea9e299035e5a85ff944a631fb1f31329caa 100644
--- a/externals/creb/modules/resofilt~.c
+++ b/externals/creb/modules/resofilt~.c
@@ -357,7 +357,7 @@ static void resofilt_dsp(t_resofilt *x, t_signal **sp)
   dsp_add(x->x_dsp,
 	  6, 
 	  &x->x_ctl, 
-	  sp[0]->s_n, 
+	  (t_int)sp[0]->s_n, 
 	  sp[0]->s_vec, 
 	  sp[1]->s_vec, 
 	  sp[2]->s_vec, 
diff --git a/externals/creb/modules/sbosc~.c b/externals/creb/modules/sbosc~.c
index 1ffccd85a22f7ec031a49d0f511f0dbb02201cc6..755bd9c83c1f32e4d911292bba78a9926edf2e39 100644
--- a/externals/creb/modules/sbosc~.c
+++ b/externals/creb/modules/sbosc~.c
@@ -139,7 +139,8 @@ static t_int *sbosc_tilde_perform(t_int *w)
 static void sbosc_tilde_dsp(t_sbosc_tilde *x, t_signal **sp)
 {
     dsp_add(sbosc_tilde_perform, 6, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
+        (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/creb/modules/scrollgrid1D~.c b/externals/creb/modules/scrollgrid1D~.c
index e2391bceac46322d233cc01ad1926e3505ce7a93..5b0904686a00ec9875a1bb205474393e21f0ace3 100644
--- a/externals/creb/modules/scrollgrid1D~.c
+++ b/externals/creb/modules/scrollgrid1D~.c
@@ -159,7 +159,7 @@ static void scrollgrid1D_dsp(t_scrollgrid1D *x, t_signal **sp)
   dsp_add(scrollgrid1D_perform, 
 	  9, 
 	  &x->x_ctl, 
-	  sp[0]->s_n, 
+	  (t_int)sp[0]->s_n, 
 	  sp[0]->s_vec, 
 	  sp[1]->s_vec, 
 	  sp[2]->s_vec,
diff --git a/externals/creb/modules/statwav~.c b/externals/creb/modules/statwav~.c
index 7ceee68b9a12c4f943b7c4e7d645bbfcddc4171e..e762728cc9699a22b69e0b4b6491a6e8b9074ff4 100644
--- a/externals/creb/modules/statwav~.c
+++ b/externals/creb/modules/statwav~.c
@@ -129,7 +129,7 @@ static void statwav_tilde_dsp(t_statwav_tilde *x, t_signal **sp)
     statwav_tilde_set(x, x->x_arrayname);
 
     dsp_add(statwav_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/creb/modules/tabreadmix~.c b/externals/creb/modules/tabreadmix~.c
index dc6f99e826ae7d0fd33cba18c6e87e51715978b5..241ab209689a67f8f15790409332d35593b0f2b8 100644
--- a/externals/creb/modules/tabreadmix~.c
+++ b/externals/creb/modules/tabreadmix~.c
@@ -276,7 +276,7 @@ static void tabreadmix_tilde_dsp(t_tabreadmix_tilde *x, t_signal **sp)
     tabreadmix_tilde_set(x, x->x_arrayname);
 
     dsp_add(tabreadmix_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/creb/modules/xfm~.c b/externals/creb/modules/xfm~.c
index a7a0d9fcb1476ae0e87accf77a0fd195f2cabe82..41648fdd95c2192d1460e37517ca624ff55fbbd5 100644
--- a/externals/creb/modules/xfm~.c
+++ b/externals/creb/modules/xfm~.c
@@ -203,7 +203,7 @@ static void xfm_dsp(t_xfm *x, t_signal **sp)
   dsp_add(xfm_perform, 
 	  8, 
 	  &x->x_ctl, 
-	  sp[0]->s_n, 
+	  (t_int)sp[0]->s_n, 
 	  sp[0]->s_vec, 
 	  sp[1]->s_vec, 
 	  sp[2]->s_vec,
diff --git a/externals/cxc/delta~.c b/externals/cxc/delta~.c
index ba8d0e0c4bfec0d5bbd32b5f366622e66c522c5c..3614a38acf5865835eb81fbe5b7052e6e8692722 100644
--- a/externals/cxc/delta~.c
+++ b/externals/cxc/delta~.c
@@ -35,7 +35,7 @@ static t_int *delta_perform(t_int *w)
 
 static void delta_dsp(t_delta *x, t_signal **sp)
 {
-  dsp_add(delta_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(delta_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *delta_new(void)
diff --git a/externals/cxc/mean~.c b/externals/cxc/mean~.c
index 54cfc71b7a06fa6d08637bfae55fb4615f7db41c..b4e79b1b27576531ed2f1f58dcf8b10b42999fde 100644
--- a/externals/cxc/mean~.c
+++ b/externals/cxc/mean~.c
@@ -67,9 +67,16 @@ static void cxmean_mean(t_cxmean *x)
 
   cnt = 0;
   if(!(a = (t_garray *)pd_findbyclass(x->x_arrayname,garray_class))) {
-    pd_error(x, "%s: no such table", x->x_arrayname->s_name);
+    pd_error(x, "mean: %s: no such table", x->x_arrayname->s_name);
+    x->x_vec = 0;
+    return;
+  }
+  else if (!garray_getfloatarray(a,&x->x_nsampsintab,&x->x_vec))
+  {
+    error("%s: bad template for mean", x->x_arrayname->s_name);
+    x->x_vec = 0;
+    return;
   }
-  garray_getfloatarray(a,&x->x_nsampsintab,&x->x_vec);
 
   fp = x->x_vec;
 
@@ -168,8 +175,15 @@ static void cxavgdev_float(t_cxavgdev *x, t_float f)
   cnt = 0;
   if(!(a = (t_garray *)pd_findbyclass(x->x_arrayname,garray_class))) {
     pd_error(x, "%s: no such table", x->x_arrayname->s_name);
+    x->x_vec = 0;
+    return;
+  }
+  else if (!garray_getfloatarray(a,&x->x_nsampsintab,&x->x_vec))
+  {
+    error("%s: bad template for mean", x->x_arrayname->s_name);
+    x->x_vec = 0;
+    return;
   }
-  garray_getfloatarray(a,&x->x_nsampsintab,&x->x_vec);
 
   fp = x->x_vec;
 
@@ -347,6 +361,14 @@ static t_int *mean_tilde_perform(t_int *w)
   int n = (int)(w[2]);
   t_float xz = 0.;
   fp = x->x_vec;
+
+  /* If array doesn't exist just make it zero */
+  if (!fp)
+  {
+    x->x_mean = 0;
+    return (w+3);
+  }
+
   while(n--) {
     xz += abs(*fp++);
     //post("cxc/mean.c: %d : %f : %f",n,xz,fp);
@@ -354,7 +376,6 @@ static t_int *mean_tilde_perform(t_int *w)
   x->x_mean = (t_float)(xz / n);
   //post("cxc/mean.c: %f",xz);
   return (w+3);
-  //return 0;
 }
 
 static void mean_tilde_set(t_mean_tilde *x, t_symbol *s)
@@ -379,9 +400,9 @@ static void mean_tilde_set(t_mean_tilde *x, t_symbol *s)
 static void mean_tilde_dsp(t_mean_tilde *x, t_signal **sp)
 {
   mean_tilde_set(x, x->x_arrayname);
-  //dsp_add(mean_tilde_perform, 2, x, sp[0]->s_vec, sp[0]->s_n);
-  //dsp_add(mean_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
-  dsp_add(mean_tilde_perform, 2, x, sp[0]->s_n);
+  //dsp_add(mean_tilde_perform, 2, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
+  //dsp_add(mean_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
+  dsp_add(mean_tilde_perform, 2, x, (t_int)sp[0]->s_n);
 }
 
 static void mean_tilde_bang(t_mean_tilde *x)
@@ -400,8 +421,15 @@ static void mean_tilde_mean(t_mean_tilde *x)
   cnt = 0;
   if(!(a = (t_garray *)pd_findbyclass(x->x_arrayname,garray_class))) {
     pd_error(x, "%s: no such table", x->x_arrayname->s_name);
+    x->x_vec = 0;
+    return;
+  }
+  else if (!garray_getfloatarray(a,&x->x_nsampsintab,&x->x_vec))
+  {
+    error("%s: bad template for mean", x->x_arrayname->s_name);
+    x->x_vec = 0;
+    return;
   }
-  garray_getfloatarray(a,&x->x_nsampsintab,&x->x_vec);
 
   fp = x->x_vec;
 
diff --git a/externals/cxc/random1~.c b/externals/cxc/random1~.c
index f14f2b1f69837ba761f07d1bc83630bc6df3189f..2bbf8bd9623f13a2a7276e5186b9dc52c3c1dbbf 100644
--- a/externals/cxc/random1~.c
+++ b/externals/cxc/random1~.c
@@ -102,7 +102,7 @@ static t_int *random1_tilde_perform(t_int *w)
 
 static void random1_tilde_dsp(t_random1_tilde *x, t_signal **sp)
 {
-  dsp_add(random1_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(random1_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void random1_tilde_setup(void)
diff --git a/externals/cxc/random_fl~.c b/externals/cxc/random_fl~.c
index 8747193e64bb019454445df3c4b0145e25592f0c..3d8aa8dddc66052b1c1e61057cbcd01046e05921 100644
--- a/externals/cxc/random_fl~.c
+++ b/externals/cxc/random_fl~.c
@@ -86,7 +86,7 @@ static t_int *random_fl_tilde_perform(t_int *w)
 
 static void random_fl_tilde_dsp(t_random_fl_tilde *x, t_signal **sp)
 {
-  dsp_add(random_fl_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(random_fl_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void random_fl_tilde_setup(void)
diff --git a/externals/cxc/random_icg~.c b/externals/cxc/random_icg~.c
index 5533254786774291c72f09829dcd683d5c8f4f64..c303a8c13db80409cb67a3e183bac5d4801a420b 100644
--- a/externals/cxc/random_icg~.c
+++ b/externals/cxc/random_icg~.c
@@ -150,7 +150,7 @@ static t_int *random_icg_tilde_perform(t_int *w)
 
 static void random_icg_tilde_dsp(t_random_icg_tilde *x, t_signal **sp)
 {
-  dsp_add(random_icg_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(random_icg_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/cxc/reson~.c b/externals/cxc/reson~.c
index 7bca2e04fcf5c6a3f0c92dac2c4b370eda96820f..ca6ca8607599eb2f9c343ee9c1fd49b7d1c9052a 100644
--- a/externals/cxc/reson~.c
+++ b/externals/cxc/reson~.c
@@ -102,7 +102,7 @@ static void sigreson_dsp(t_sigreson *x, t_signal **sp)
 	x->x_ctl->c_samprate = sp[0]->s_sr;
 	sigreson_float(x, x->x_ctl->c_freq);
 	dsp_add(cu_reson, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
-		x->x_ctl, sp[0]->s_n);
+		x->x_ctl, (t_int)sp[0]->s_n);
 }
 
 static void sigreson_ft1(t_sigreson *x, t_floatarg f) /* sets feedback */
diff --git a/externals/deprecated/pan_gogins~.c b/externals/deprecated/pan_gogins~.c
index 35acf5f85d7b8523e2aeff5fdcb8de88672543f1..689a49ac42a6d662b697b5c222226f6ca9f5d3be 100644
--- a/externals/deprecated/pan_gogins~.c
+++ b/externals/deprecated/pan_gogins~.c
@@ -84,7 +84,7 @@ static void pan_gogins_dsp(t_pan_gogins *x, t_signal **sp)
   float *out2 = sp[2]->s_vec;
 
   dsp_add(pan_gogins_perform, 5,
-	  in1, out1, out2, n, x);
+	  in1, out1, out2, (t_int)n, x);
 }
 
 void pan_gogins_f(t_pan_gogins *x, t_floatarg f)
diff --git a/externals/disis/disis_munger.c b/externals/disis/disis_munger.c
index 504617843f83ac7c6462d7e672da84ba3d6e6d48..05b02ee33744416d344f33d7aba215cdc5aa7b4e 100644
--- a/externals/disis/disis_munger.c
+++ b/externals/disis/disis_munger.c
@@ -1753,7 +1753,7 @@ static void munger_dsp(t_disis_munger *x, t_signal **sp)
     {
         x->x_out[i] = (t_float *)(sp[i + 1]->s_vec);
     }
-    dsp_add(munger_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(munger_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void disis_munger_tilde_setup(void)
diff --git a/externals/disis/disis_phasor~.c b/externals/disis/disis_phasor~.c
index d656da532f51743546afa5b8fb70d2d388e95773..010bfd356efd37abe0e31206d0941268f5277796 100644
--- a/externals/disis/disis_phasor~.c
+++ b/externals/disis/disis_phasor~.c
@@ -118,7 +118,7 @@ t_int *disis_phasor_perform(t_int *w)
 static void disis_phasor_dsp(t_disis_phasor *x, t_signal **sp)
 {
     x->x_conv = 1./sp[0]->s_sr;
-    dsp_add(disis_phasor_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(disis_phasor_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void disis_phasor_free(t_disis_phasor *x)
diff --git a/externals/earplug~/earplug~.c b/externals/earplug~/earplug~.c
index 4f0c6e66d1925b52f092cdb7a74e925d83175679..c53d3207a7295d1a7c6e8fff669197fc28ebdde9 100644
--- a/externals/earplug~/earplug~.c
+++ b/externals/earplug~/earplug~.c
@@ -167,7 +167,7 @@ static t_int *earplug_perform(t_int *w)
 static void earplug_dsp(t_earplug *x, t_signal **sp)
 {
 		// callback, params, userdata, in_samples, out_L,		out_R,		blocksize.
-    dsp_add(earplug_perform, 5, x,  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+    dsp_add(earplug_perform, 5, x,  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *earplug_new(t_floatarg azimArg, t_floatarg elevArg)
diff --git a/externals/ekext/framescore~.c b/externals/ekext/framescore~.c
index ebc851f689798f46f0d8085a6503723486f4a623..b6b5ecfca25221891ceb5d52e06e539450195144 100644
--- a/externals/ekext/framescore~.c
+++ b/externals/ekext/framescore~.c
@@ -66,7 +66,7 @@ t_int *framescore_tilde_perform(t_int *w)
 void framescore_tilde_dsp(t_framescore_tilde *x, t_signal **sp)
 {
   dsp_add(framescore_tilde_perform, 4, x,
-	  sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void *framescore_tilde_new(t_floatarg f)
diff --git a/externals/ekext/framespect~.c b/externals/ekext/framespect~.c
index f029f144c6bbc3c2f58bf30db08bf33cbbf47828..4cfac97e1e9417797dfa646b5bbe0ae053d5c797 100644
--- a/externals/ekext/framespect~.c
+++ b/externals/ekext/framespect~.c
@@ -74,7 +74,7 @@ t_int *framespect_tilde_perform(t_int *w)
 void framespect_tilde_dsp(t_framespect_tilde *x, t_signal **sp)
 {
   dsp_add(framespect_tilde_perform, 6, x,
-	  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void *framespect_tilde_new(t_floatarg f)
diff --git a/externals/ekext/hasc~.c b/externals/ekext/hasc~.c
index 3ea9e0153683009464761ba63d85c092d1b7aa33..a402e5839c80976f0ba4211614dd05fd07c98ffd 100644
--- a/externals/ekext/hasc~.c
+++ b/externals/ekext/hasc~.c
@@ -65,7 +65,7 @@ t_int *hasc_tilde_perform(t_int *w)
 void hasc_tilde_dsp(t_hasc_tilde *x, t_signal **sp)
 {
   dsp_add(hasc_tilde_perform, 4, x,
-	  sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void *hasc_tilde_new(t_floatarg f)
diff --git a/externals/ekext/hssc~.c b/externals/ekext/hssc~.c
index 1cf57b659298bc8953c1c6ffe5bc1ad05a5b2eff..7440b98be26d4aeb494fa70fd96f9cddf205b476 100644
--- a/externals/ekext/hssc~.c
+++ b/externals/ekext/hssc~.c
@@ -62,7 +62,7 @@ t_int *hssc_tilde_perform(t_int *w)
 void hssc_tilde_dsp(t_hssc_tilde *x, t_signal **sp)
 {
   dsp_add(hssc_tilde_perform, 4, x,
-	  sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void *hssc_tilde_new(t_floatarg f)
diff --git a/externals/ekext/lpc~.c b/externals/ekext/lpc~.c
index f91deee03d45595f0ccbc0dbec12e227c8578cc5..1ee35e4ac5e5b1054d9ffad39614e8cd80f52d92 100644
--- a/externals/ekext/lpc~.c
+++ b/externals/ekext/lpc~.c
@@ -172,7 +172,7 @@ void *lpc_tilde_dsp(t_lpc_tilde *x, t_signal **sp)
 {
   x->x_schur.c_input = sp[0]->s_vec;
   x->x_schur.c_residual = sp[1]->s_vec;
-  dsp_add(lpc_tilde_perform, 3, x, &x->x_schur, sp[0]->s_n);
+  dsp_add(lpc_tilde_perform, 3, x, &x->x_schur, (t_int)sp[0]->s_n);
   return (void *)x;
 }
 
diff --git a/externals/ekext/lpreson~.c b/externals/ekext/lpreson~.c
index b8f5ccccbe4e51f5d36346dd22f083c5c34721cb..6ce0619d25de65635f0c42143359d83609ee69ce 100644
--- a/externals/ekext/lpreson~.c
+++ b/externals/ekext/lpreson~.c
@@ -102,15 +102,24 @@ void *lpreson_tilde_dsp(t_lpreson_tilde *x, t_signal **sp)
 {
   x->x_ctl.c_residual = sp[0]->s_vec;
   x->x_ctl.c_output = sp[1]->s_vec;
-  dsp_add(lpreson_tilde_perform, 3, x, &x->x_ctl, sp[0]->s_n);
+  dsp_add(lpreson_tilde_perform, 3, x, &x->x_ctl, (t_int)sp[0]->s_n);
   return (void *)x;
 }
 
 void *lpreson_tilde_new(t_floatarg f)
 {
+  t_atom *init;
   t_lpreson_tilde *x = (t_lpreson_tilde *)pd_new(lpreson_tilde_class);
   x->x_order = f >= 1 ? (int)f : 5;
-  
+  init = (t_atom *)t_getbytes(sizeof(t_atom) * x->x_order);
+  int i;
+  /* init the list-- not sure what an identity list would be
+     so I'm just setting zeroes here. */
+  for (i = 0; i < x->x_order; i++)
+      SETFLOAT(init + i, 0.);
+
+  lpreson_tilde_list(x, &s_, x->x_order, init);
+
   outlet_new(&x->x_obj, &s_signal);
   return (void *)x;
 }
diff --git a/externals/ekext/peakit~.c b/externals/ekext/peakit~.c
index a5a74b410937518a230a28629765f24cfbef27db..934f5e52416f42e02ca241e84b09883a5c93fd2e 100644
--- a/externals/ekext/peakit~.c
+++ b/externals/ekext/peakit~.c
@@ -112,7 +112,7 @@ void *peakit_tilde_dsp(t_peakit_tilde *x, t_signal **sp)
 {
   x->x_ctl.f_real = sp[0]->s_vec;
   x->x_ctl.f_imag = sp[1]->s_vec;
-  dsp_add(peakit_tilde_perform, 4, x, &x->x_ctl, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(peakit_tilde_perform, 4, x, &x->x_ctl, sp[0]->s_vec, (t_int)sp[0]->s_n);
   return (void *)x;
 }
 
diff --git a/externals/ekext/simile~.c b/externals/ekext/simile~.c
index 1df58ba9634bebc59ab1695cca8798997862ba58..9fc8cacbe8bdc56590303e874819c690b4ff0a5d 100644
--- a/externals/ekext/simile~.c
+++ b/externals/ekext/simile~.c
@@ -51,7 +51,7 @@ t_int *simile_tilde_perform(t_int *w) {
 
 void simile_tilde_dsp(t_simile_tilde *x, t_signal **sp) {
   dsp_add(simile_tilde_perform, 6, x, 
-	  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void *simile_tilde_new(t_floatarg f) {
diff --git a/externals/ekext/voicing_detector~.c b/externals/ekext/voicing_detector~.c
index 5d91719ed1ccfa988a6c86b0e1577f5fc6585285..12839a0dbb08c641d061d28019b12ab9da924eda 100644
--- a/externals/ekext/voicing_detector~.c
+++ b/externals/ekext/voicing_detector~.c
@@ -99,7 +99,7 @@ void voicing_detector_tilde_method(t_voicing_detector_tilde *x, t_floatarg f)
 void *voicing_detector_tilde_dsp(t_voicing_detector_tilde *x, t_signal **sp)
 {
   x->x_ctl.c_input = sp[0]->s_vec;
-  dsp_add(voicing_detector_tilde_perform, 3, x, &x->x_ctl, sp[0]->s_n);
+  dsp_add(voicing_detector_tilde_perform, 3, x, &x->x_ctl, (t_int)sp[0]->s_n);
   return (void *)x;
 }
 
diff --git a/externals/ekext/zeroxpos~.c b/externals/ekext/zeroxpos~.c
index f52fb658351bb8b79f7ecef0a99305e57eb735cb..452bd048ce9e0ee9ecd93bfd0049f0b9c8b69296 100644
--- a/externals/ekext/zeroxpos~.c
+++ b/externals/ekext/zeroxpos~.c
@@ -157,7 +157,7 @@ void zeroxpos_tilde_mode(t_zeroxpos_tilde *x, t_floatarg fmode)
 void *zeroxpos_tilde_dsp(t_zeroxpos_tilde *x, t_signal **sp) 
 {
   x->x_ctl.c_input = sp[0]->s_vec;
-  dsp_add(zeroxpos_tilde_perform, 3, x, &x->x_ctl, sp[0]->s_n);
+  dsp_add(zeroxpos_tilde_perform, 3, x, &x->x_ctl, (t_int)sp[0]->s_n);
   return (void *)x;
 }
 
diff --git a/externals/ext13/catch13~.c b/externals/ext13/catch13~.c
index afebd2b7f7359bc9655b44e28ff65cfec0eb9096..c71bc5785207c4b27a7ca4454b83dd98135ec9fb 100644
--- a/externals/ext13/catch13~.c
+++ b/externals/ext13/catch13~.c
@@ -62,9 +62,9 @@ t_int *sigcatch13_perf8(t_int *w)
     if (x->x_n == sp[0]->s_n)
     {
 	if(sp[0]->s_n&7)
-	    dsp_add(sigcatch13_perform, 3, x->x_vec, sp[0]->s_vec, sp[0]->s_n);
+	    dsp_add(sigcatch13_perform, 3, x->x_vec, sp[0]->s_vec, (t_int)sp[0]->s_n);
 	else
-	    dsp_add(sigcatch13_perf8, 3, x->x_vec, sp[0]->s_vec, sp[0]->s_n);
+	    dsp_add(sigcatch13_perf8, 3, x->x_vec, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
     else error("sigcatch13 %s: unexpected vector size", x->x_sym->s_name);
 }
diff --git a/externals/ext13/mandelbrot~.c b/externals/ext13/mandelbrot~.c
index 4ccc3e4bc79e8ec755d540ca864791e230211d3b..86a8d3bba1313a22ef386f9491364d340e7d9395 100644
--- a/externals/ext13/mandelbrot~.c
+++ b/externals/ext13/mandelbrot~.c
@@ -101,9 +101,9 @@ t_int *mandelbrot_tilde_perf8(t_int *w)
 void dsp_add_mandelbrot_tilde(t_mandelbrot_tilde *x,t_sample *in1, t_sample *in2, t_sample *out, int n)
 {
     if (n&7)
-    	dsp_add(mandelbrot_tilde_perform, 5, x, in1, in2, out, n);
+    	dsp_add(mandelbrot_tilde_perform, 5, x, in1, in2, out, (t_int)n);
     else	
-    	dsp_add(mandelbrot_tilde_perf8, 5, x, in1, in2, out, n);
+    	dsp_add(mandelbrot_tilde_perf8, 5, x, in1, in2, out, (t_int)n);
 }
 
 void mandelbrot_tilde_dsp(t_mandelbrot_tilde *x, t_signal **sp)
diff --git a/externals/ext13/piperead~.c b/externals/ext13/piperead~.c
index a9c0d4cc3f47f91993d1946d97df9c4d73ae4d9c..f1dd4a7727c0f48808a3466bb6d24bd36312c516 100644
--- a/externals/ext13/piperead~.c
+++ b/externals/ext13/piperead~.c
@@ -116,17 +116,17 @@ static void piperead_tilde_dsp(t_piperead_tilde *x, t_signal **sp)
      switch (x->x_channels) {
      case 1:
 	  dsp_add(piperead_tilde_perform, 4, x, sp[0]->s_vec, 
-		  sp[1]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 2:
 	  dsp_add(piperead_tilde_perform, 5, x, sp[0]->s_vec, 
-		  sp[1]->s_vec,sp[2]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec,sp[2]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 4:
 	  dsp_add(piperead_tilde_perform, 6, x, sp[0]->s_vec, 
 		  sp[1]->s_vec,sp[2]->s_vec,
 		  sp[3]->s_vec,sp[4]->s_vec,
-		  sp[0]->s_n);
+		  (t_int)sp[0]->s_n);
 	  break;
      }
 }
diff --git a/externals/ext13/pipewrite~.c b/externals/ext13/pipewrite~.c
index da5e25461705285962517929dda0e78430e1a1a9..5f50f565d65f1e7731bfd69053374c0e785ffa8a 100644
--- a/externals/ext13/pipewrite~.c
+++ b/externals/ext13/pipewrite~.c
@@ -223,18 +223,18 @@ static void pipewrite_tilde_dsp(t_pipewrite_tilde *x, t_signal **sp)
      switch (x->x_channels) {
      case 1:
 	  dsp_add(pipewrite_tilde_perform, 3, x, sp[0]->s_vec, 
-		   sp[0]->s_n);
+		   (t_int)sp[0]->s_n);
 	  break;
      case 2:
 	  dsp_add(pipewrite_tilde_perform, 4, x, sp[0]->s_vec, 
-		  sp[1]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 4:
 	  dsp_add(pipewrite_tilde_perform, 6, x, sp[0]->s_vec, 
 		  sp[1]->s_vec,
 		  sp[2]->s_vec,
 		  sp[3]->s_vec,
-		  sp[0]->s_n);
+		  (t_int)sp[0]->s_n);
 	  break;
      }
 }
diff --git a/externals/ext13/promiscous~.c b/externals/ext13/promiscous~.c
index bf1083631ea261617ffce9ea64fffa76d711ade2..b8fd87178b46af1c25db4e4750d60e0464edd66c 100644
--- a/externals/ext13/promiscous~.c
+++ b/externals/ext13/promiscous~.c
@@ -125,7 +125,7 @@ t_int *promiscous_tilde_perform(t_int *w)
 static void promiscous_tilde_dsp(t_promiscous_tilde *x, t_signal **sp)
 {
 	dsp_add(promiscous_tilde_perform, 3, x, sp[0]->s_vec,
-	sp[0]->s_n);
+	(t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/ext13/receive13~.c b/externals/ext13/receive13~.c
index 4ff4e3191cd9740206f515568c91780f2042304c..7496655dfdbfdf66bd281d0d8ca88f6776b7793b 100644
--- a/externals/ext13/receive13~.c
+++ b/externals/ext13/receive13~.c
@@ -99,10 +99,10 @@ void sigreceive13_set(t_sigreceive13 *x, t_symbol *s)
     	sigreceive13_set(x, x->x_sym);
 	if(sp[0]->s_n&7)
 	    dsp_add(sigreceive13_perform, 3,
-		    x, sp[0]->s_vec, sp[0]->s_n);
+		    x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 	else
 	    dsp_add(sigreceive13_perf8, 3,
-		    x, sp[0]->s_vec, sp[0]->s_n);
+		    x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/externals/ext13/scramble~.c b/externals/ext13/scramble~.c
index e7b3d9d3a283c384c4f4c744c057e75f4a275160..c8a34f1548920abbc83188b6913bcce5e214367e 100644
--- a/externals/ext13/scramble~.c
+++ b/externals/ext13/scramble~.c
@@ -460,12 +460,12 @@ static void scramble_tilde_dsp(t_scramble_tilde *x, t_signal **sp)
     switch (x->x_channels) {
        case 1:
           dsp_add(scramble_tilde_perform, 4, x, sp[0]->s_vec,
-          sp[1]->s_vec, sp[0]->s_n);
+          sp[1]->s_vec, (t_int)sp[0]->s_n);
 //          post ("1 channel");
           break;
        case 2:
           dsp_add(scramble_tilde_perform, 6, x, sp[0]->s_vec,
-          sp[1]->s_vec,sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+          sp[1]->s_vec,sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 //          post ("2 channels");
           break;
      }
diff --git a/externals/ext13/scramble~.c.save b/externals/ext13/scramble~.c.save
deleted file mode 100644
index f4957a766a18f58927e021e2b4ec994387bbab36..0000000000000000000000000000000000000000
--- a/externals/ext13/scramble~.c.save
+++ /dev/null
@@ -1,634 +0,0 @@
-#include "m_pd.h"
-#include "ext13.h"
-#include <sys/types.h>
-#include <string.h>
-#include <sys/errno.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-
-
-/* ------------------------ scramble_tilde~ ----------------------------- */
-
-static t_class *scramble_tilde_class;
-
-typedef struct _scramble_grain
-{
-    t_float* L;
-    t_float* R;
-    int size;
-    t_float maximum;
-    struct _scramble_grain *next;
-}t_scramble_grain;
-
-typedef struct _scramble_tilde
-{
-     t_object x_obj;
-     int x_n;
-     t_int x_channels;
-     t_float play, analize;
-     t_float dir, current_dir, pitch, actual_pitch, grain_r, autopitch;
-     t_float valsum, valavg;
-     int valsumcount, valsummax;
-     int autofollow, playmode, semitones;
-     t_scramble_grain *firstgrain;
-     t_scramble_grain *workgrain;
-     t_scramble_grain *ring;
-     int grains, newgrains, w_grain, r_grain, n_grain, gotagrain, flush;
-     int r_d, w_d, dist, mindist, lowptr, hiptr, lastlowptr;
-     t_float lowval, hival, prevval, lowborder, normalize;
-     int nsamples;
-     t_outlet *trigger1;
-     t_outlet *trigger2;
-} t_scramble_tilde;
-
-
-/* grain functions*/
-static t_scramble_grain* scramble_tilde_newgrain(){
-     t_scramble_grain* thegrain;
-     thegrain = getbytes( sizeof(t_scramble_grain));
-     thegrain->L = NULL;
-     thegrain->R = NULL;
-     thegrain->size = 0;
-     thegrain->next = NULL;
-     return (thegrain);
-}
-
-
-static t_scramble_grain* scramble_tilde_getgrain(t_scramble_grain* firstgrain, int n){
-     t_scramble_grain* thegrain = firstgrain;
-     while (n--){
-     if (thegrain->next){
-         thegrain = thegrain->next;
-     }else
-         return (NULL);
-     }
-     return (thegrain);
-}
-
-static int scramble_tilde_getsomegrain(t_scramble_grain* firstgrain,int g){
-    t_scramble_grain* thegrain ;
-    int r;
-    do{
-      r =  rand() % g;
-      thegrain = scramble_tilde_getgrain(firstgrain, r);
-    }while (thegrain->size == 0);
-    return (r);
-}
-
-static void scramble_tilde_grainbuf(t_scramble_grain* grain, int c, int n){
-     if (!grain->size)
-        grain->L =  getbytes(n * sizeof(t_float));
-     else
-        grain->L =  resizebytes(grain->L, grain->size * sizeof(t_float), n * sizeof(t_float)); 
-
-     if (c == 2){
-         if (!grain->size)
-             grain->R =  getbytes(n * sizeof(t_float));
-         else
-             grain->R =  resizebytes(grain->R, grain->size * sizeof(t_float), n * sizeof(t_float));
-     }
-     grain->size = n;
-}
-
-static void scramble_tilde_freegrain(t_scramble_grain* grain, int c){
-     if (grain->size){
-        freebytes(grain->L, grain->size * sizeof(t_float));
-        if (c == 2) freebytes(grain->R, grain->size * sizeof(t_float));
-        grain->size = 0;
-        grain->next = NULL;
-     }
-}
-
-
-t_int *scramble_tilde_perform(t_int *w)
-{
-    t_scramble_tilde*  x = (t_scramble_tilde*)(w[1]);
-    int i;
-    int erg=0;
-    int n;
-    t_float val, valL, valR, killval;
-
-    t_float* out[x->x_channels];
-    t_float* in[x->x_channels];
-
-    float n_factor, frac,  a,  b,  c,  d, cminusb;
-    int index;
-    float *fp;
-    t_atom at[2];
-
-    /* anything changed?*/
-    if (x->flush){
-      int i = x->grains;
-      x->flush = 0;
-      x->gotagrain = 0;
-      while (i--)
-        scramble_tilde_grainbuf(scramble_tilde_getgrain(x->firstgrain,i),x->x_channels,0);
-    }
-    
-    if (x->newgrains){
-      int tmp = x->grains;
-      if (x->newgrains > x->grains){
-        x->workgrain = scramble_tilde_getgrain(x->firstgrain,x->grains - 1); /*-1 ???*/
-        tmp = x->newgrains;
-        x->newgrains -= x->grains;
-        x->grains = tmp;
-        while (x->newgrains--){
-           x->workgrain->next = scramble_tilde_newgrain();
-           x->workgrain = x->workgrain->next;
-        }
- //       post ("now %d grains",x->grains);
-      }else{
-        if (x->newgrains < x->grains){
-           t_scramble_grain*  tmpgrain;
-
-           x->grains = x->newgrains;
-           x->workgrain = scramble_tilde_getgrain(x->firstgrain,x->grains - 1);
-
-           /* delete old grains */
-           while (x->workgrain->next){
-             tmpgrain = x->workgrain->next;
-             scramble_tilde_freegrain(x->workgrain,x->x_channels);
-             x->workgrain = tmpgrain;
-           }
-
-           /* reset readpointer if needed*/
-           if (x->r_grain >=  x->grains){
-             x->r_grain = 0;
-             x->grain_r = -1;
-           }
-//           post ("now %d grains",x->grains);
-        }
-      }
-      x->newgrains=0;
-    }
-
-    if ((x->ring->size > x->x_n) || (x->ring->size < x->x_n) ){
-//       post ("scramble~: new size for ringbuffer:%d samples, %d channels, oldsize:%d",x->x_n,x->x_channels,x->ring->size);
-       scramble_tilde_grainbuf(x->ring, x->x_channels ,x->x_n);
-       x->x_n = x->ring->size;
-       x->dist = 0;
-       x->lowptr = x->r_d;
-       x->lastlowptr = -1;
-       x->lowval = x->lowborder;
-    }
-    
-    for (i = 0; i < x->x_channels ;i++)
-       in[i] = (t_float *)(w[2 + i]);
-
-    for (i = 0;i < x->x_channels ;i++)
-       out[i] = (t_float *)(w[2 + x->x_channels + i]);
-
-    n = (int)(w[2 + x->x_channels * 2]);/*number of samples*/
-//    post ("n:%d",n);
-    
-    while (n--){
-    /*read from input*/
-       if (++x->r_d > x->x_n){
-           x->r_d = 0;
-       }
-       valL = *(t_float*)(x->ring->L +  x->r_d) = *in[0]++;
-       if (valL < 0) valL *= -1;
-       if (x->x_channels == 2){
-         valR = *(t_float*)(x->ring->R + x->r_d) = *in[1]++;
-         if (valR < 0) valR *= -1;
-         val =  valL + valR / 2.0;
-         if (valL > x->hival){
-            x->hiptr = x->r_d;
-            x->hival = valL;
-         }
-         if (valR > x->hival){
-            x->hiptr = x->r_d;
-            x->hival = valR;
-         }
-       }else {
-         val = valL;
-          if (valL > x->hival){
-            x->hiptr = x->r_d;
-            x->hival = valL;
-          }
-       }
-
-//       if (val < 0) val *= -1;
-
-       x->valsum += val;
-//       if (x->valsumcount++ > x->mindist * 10){
-       if (x->valsumcount++  && (x->r_d == 0)){
-          x->valavg = x->valsum / x->valsumcount;
-          x->valsumcount = 0;
-          x->valsum = 0;
-          if (x->autofollow && ( x->valavg > 0.003)) {
-            x->lowborder = x->valavg;
-//            post ("lowborder = %f",x->lowborder);
-          }
-       }
-
-       if ((val < x->lowborder) && (x->prevval > x->lowborder)){
-       /* a new low-period */
-         x->dist = -1;
-         x->lowptr =  x->r_d;
-         x->lowval = val;
-//           post ("low");
-       }
-       if ((x->r_d + 1) == x->lastlowptr){
-         /* one round without a point to cut */
-          x->lastlowptr = -1; 
-          x->lowval = x->lowborder;
-          x->hival = 0;
-//          post ("lastlowptr: reset");
-       }
-       
-       if (val < x->lowborder){x->dist++;}
-
-       if (val <= x->lowval) {
-          x->lowptr = x->r_d;
-          x->lowval = val;
-          /*found a point to cut*/
-       }
-
-       if ((val > x->lowborder) && (x->prevval < x->lowborder) && ( x->dist < x->mindist)){
-         /*too short low-period*/
-          x->dist = 0;
-          x->lowptr = x->r_d;
-          x->lowval = x->lowborder;
-//         post ("low too short");
-       }
-       
-       if ((val > x->lowborder) && (x->prevval < x->lowborder) && ( x->dist > x->mindist)){
-       /*found a low-period to cut */
-         if ((x->lastlowptr != -1) ){
-           int grainlen = 0;
-           int i = 0;
-           int wp = 1; /*first and last sample of grain should be 0.0*/
-
-           x->gotagrain = 1;
-           /* how long is the new grain */
-           if (x->lastlowptr > x->lowptr){
-             grainlen = x->x_n - x->lastlowptr + x->lowptr;
-           }else{
-             grainlen = x->lowptr - x->lastlowptr;
-           }
-           
-           if (x->analize){
-             /*find and prepare the grain*/
-             if (++x->w_grain >= x->grains ) x->w_grain = 0;
-             x->workgrain = scramble_tilde_getgrain (x->firstgrain, x->w_grain);
-             scramble_tilde_grainbuf(x->workgrain, x->x_channels, grainlen + 2);
-  
-             *(t_float*)(x->workgrain->L) = 0.0;
-             *(t_float*)(x->workgrain->L + x->workgrain->size -1) = 0.0;
-             if (x->x_channels == 2){
-               *(t_float*)(x->workgrain->R) = 0.0;
-               *(t_float*)(x->workgrain->R + x->workgrain->size -1) = 0.0;
-             }
-             x->workgrain->maximum = x->hival;
-
-             /*notify the world*/
-             SETFLOAT(at, grainlen);
-             SETFLOAT(at+1, x->w_grain + 1);
-             outlet_list(x->trigger1, 0, 2, at);
-
-             /*copy to the grain*/
-             i =  x->lastlowptr;
-             while (grainlen--){
-                if (++i >= x->x_n) i = 0;
-                *(t_float*)(x->workgrain->L + wp ) = *(t_float*)(x->ring->L + i);
-                if (x->x_channels == 2)
-                  *(t_float*)(x->workgrain->R + wp ) = *(t_float*)(x->ring->R + i);
-                wp++;
-             }
-           }/*end if analize*/
-//           post ("copied: w_grain: %d",x->w_grain);
-         }/* end lastlowptr != -1*/
-         x->dist = 0;
-         x->hival = 0;
-         x->lastlowptr = x->lowptr; 
-       }/*end found a low-period to cut */
-
-       x->prevval = val;
-   }/*end while n-- (read from input)*/
-
-
-/*--------------------playback--------------*/
-   n = (int)(w[2 + x->x_channels * 2]);/*number of samples*/
-
-   x->workgrain = scramble_tilde_getgrain (x->firstgrain, x->r_grain);
-   if (x->normalize && x->workgrain) n_factor = x->normalize / x->workgrain->maximum;
-   else  n_factor = 1;
-   
-   while (n--){
-     int wgs;
-     if (x->workgrain) wgs = x->workgrain->size - 2;
-     else wgs = 0;
-     if (( (x->grain_r >=  wgs) || (x->grain_r < 1) || (x->workgrain == NULL) ) && x->play && x->gotagrain){
-        if (x->playmode < 2){
-            x->r_grain = scramble_tilde_getsomegrain(x->firstgrain, x->grains);
-            x->workgrain = scramble_tilde_getgrain (x->firstgrain, x->r_grain);
-        }else{
-           if (x->n_grain == -1){
-             x->play = 0;
-             x->r_grain = 0;
-             x->workgrain = NULL;
-           }else{
-              x->r_grain = x->n_grain;
-              x->workgrain = scramble_tilde_getgrain (x->firstgrain, x->r_grain);
-              x->n_grain = -1;
-              if ((x->r_grain == x->w_grain) || (x->workgrain == NULL)){
-                x->play = 0;
-                x->r_grain = 0;
-                x->workgrain = NULL;
-              }  else if (!x->workgrain->size){
-                x->play = 0;
-                x->r_grain = 0;
-                x->workgrain = NULL;
-              }
-           }
-        }/*end if playmode < 2*/
-
-        if (x->workgrain){
-          if (((rand() % 200) / 100.0  - 1.0 ) < x->dir){
-            x->current_dir = 1;
-            x->grain_r = 1;
-          }
-          else{
-            x->current_dir = -1;
-            x->grain_r = x->workgrain->size -3;
-          }
-
-          if ( ( (x->autopitch >= 1.) && (x->semitones) ) || ( (x->autopitch) && (! x->semitones) ) ){
-            if (x->semitones){
-              int ap = (int)x->autopitch;
-              int rauf = 0;
-              int count ;
-
-              if (rand() % 2 == 1){ rauf = 1;}
-/*              post ("rauf:%d",rauf); */
-
-              x->actual_pitch = x->pitch;
-
-              for (count = (rand() % ap); count >= 0; count--){
-                /*1.05946 = 12te wurzel aus 2 */
-                if (rauf){
-                  x->actual_pitch = x->actual_pitch * 1.05946;
-                }else{
-                  x->actual_pitch = x->actual_pitch / 1.05946;
-                }
-              }
-            }else{
-              if (((rand() % 200) / 100.0  - 1.0 ) > 0){ 
-                 x->actual_pitch = x->pitch + x->pitch * ((rand() % 100 ) / 100.0 * x->autopitch);
-              }else{
-                 x->actual_pitch = x->pitch - x->pitch / ((rand() % 100 ) / 100.0 * x->autopitch);
-              }
-            }/*end if semitones*/
-          } else {
-            x->actual_pitch = x->pitch;
-          }/* end if autopitch*/
-
-/*          post ("x->actual_pitch:%f, x->autopitch:%f",x->actual_pitch,x->autopitch); */
-          
-          if (x->normalize) n_factor = x->normalize / x->workgrain->maximum;
-          else  n_factor = 1;
-
-          SETFLOAT(at, (x->workgrain->size - 2) / x->actual_pitch);
-          SETFLOAT(at+1, x->r_grain + 1);
-          outlet_list(x->trigger2, 0, 2, at);
-
-        }/*end if workgrain !=NULL */
-     }/* end finding a new grain*/
-         
-     if (x->play && x->gotagrain){
-         /*write graincontent to output*/
-         /* 4 point interpolation taken from ../src/d_array.c tabread4~ */
-         index = x->grain_r;
-         if (index < 1)
-           index = 1, frac = 0;
-         else if (index > x->workgrain->size - 3)
-           index = x->workgrain->size - 3, frac = 1;
-         else
-            frac = x->grain_r - index;
-
-         fp = (t_float*)(x->workgrain->L + index);
-         a = fp[-1];
-         b = fp[0];
-         c = fp[1];
-         d = fp[2];
-
-         cminusb = c-b;
-         *out[0]++ = (b + frac * (
-                  cminusb - 0.5f * (frac-1.) * (
-                    (a - d + 3.0f * cminusb) * frac + (b - a - cminusb)
-                  )
-         )) * n_factor;
-
-         if (x->x_channels == 2){
-           fp = (t_float*)(x->workgrain->R + index);
-           a = fp[-1];
-           b = fp[0];
-           c = fp[1];
-           d = fp[2];
-           cminusb = c-b;
-           *out[1]++ = (b + frac * (
-                      cminusb - 0.5f * (frac-1.) * (
-                          (a - d + 3.0f * cminusb) * frac + (b - a - cminusb)
-                      )
-           )) * n_factor;
-         }
-         x->grain_r += x->current_dir * x->actual_pitch;
-     }else/* if play*/{
-        *out[0]++ = 0;
-        if (x->x_channels == 2)
-          *out[1]++ = 0;
-     }/*end if play */
-   }/*end while n-- */
-   return (w + x->x_channels * 2 + 3);
-}
-
-static void scramble_tilde_dsp(t_scramble_tilde *x, t_signal **sp)
-{
-    switch (x->x_channels) {
-       case 1:
-          dsp_add(scramble_tilde_perform, 4, x, sp[0]->s_vec,
-          sp[1]->s_vec, sp[0]->s_n);
-//          post ("1 channel");
-          break;
-       case 2:
-          dsp_add(scramble_tilde_perform, 6, x, sp[0]->s_vec,
-          sp[1]->s_vec,sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
-//          post ("2 channels");
-          break;
-     }
-}
-
-
-static void scramble_tilde_free(t_scramble_tilde *x){
-  int n = x->grains - 1;
-  while (n--){
-    scramble_tilde_freegrain (scramble_tilde_getgrain(x->firstgrain,n),x->x_channels);
-    scramble_tilde_freegrain (x->ring,x->x_channels);
-  }
-}
-
-
-static void *scramble_tilde_new(t_floatarg c,t_floatarg b)
-{
-    t_scramble_tilde *x = (t_scramble_tilde *)pd_new(scramble_tilde_class);
-    int i;
-//    x->bufL = NULL;
-//    x->bufR = NULL;
-    x->x_channels = (t_int)c;
-    if (x->x_channels > 2) {
-       x->x_channels = 2;
-       post ("maximum: 2 channels");
-    }
-    if (x->x_channels < 1) x->x_channels = 1;
-
-    outlet_new(&x->x_obj, gensym("signal"));
-    if (x->x_channels == 2){
-      inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
-      outlet_new(&x->x_obj, gensym("signal"));
-    }
-
-    x->trigger1 = outlet_new(&x->x_obj, &s_float);
-    x->trigger2 = outlet_new(&x->x_obj, &s_float);
-    x->dir = 1;
-    x->pitch = 1;
-    x->actual_pitch = 1;
-    x->autopitch = 0;
-    x->semitones = 1;
-    x->autofollow = 1;
-    x->playmode = 1;
-    x->normalize = 0;
-    x->analize = 1;
-    x->flush = 0;
-    x->x_n = (int)b;
-    if (x->x_n >882000 ){x->x_n = 882000;}
-    if (x->x_n < 88200 ){x->x_n = 88200;}
-/*    x->rR = x->rL = x->wR = x->wL = NULL;*/
-    x->lowptr = 0;
-    x->lastlowptr = x->r_d = x->grain_r = -1;
-    x->mindist = 1024;
-    x->lowborder = 0.35;
-//    scramble_tilde_tempbuf(x,x->x_n);
-    x->ring = scramble_tilde_newgrain();
-    scramble_tilde_grainbuf(x->ring,x->x_channels,x->x_n);
-
-    x->valsum = x->valavg = x->valsumcount = 0;
-    x->valsummax = 1024;
-
-    /* the grains:*/
-    x->grains = 50;
-    x->r_grain = 0;
-    x->w_grain = x->n_grain = -1;
-    x->firstgrain = x->workgrain = scramble_tilde_newgrain();
-    for (i = 1;i < x->grains;i++){
-        x->workgrain->next = scramble_tilde_newgrain();
-        x->workgrain = x->workgrain->next;
-    }
-    return (x);
-}
-
-void *scramble_tilde_float(t_scramble_tilde* x, t_float n){
-  x->play = n;
-  if (x->playmode == 2) x->n_grain = (int)n - 1;
-}
-
-void *scramble_tilde_buffer(t_scramble_tilde* x, t_float n){
-  if (n > 64) x->x_n = (int)n;
-//  post ("buffersize now:%d",x->x_n);
-}
-
-void *scramble_tilde_threshold(t_scramble_tilde* x, t_float t){
-    if (t >0) {
-      x->lowborder = t;
-      x->autofollow = 0;
-    }else{
-      post ("threshold must be a positive value (0.1 - 0.8 makes sense)");
-    }
-    
-}
-
-void *scramble_tilde_grains(t_scramble_tilde* x, t_float g){
-    if ((g > 1) && (g < 2048) ) x->newgrains = (int)g;
-    else post ("scramble~: minimum # of grains must be 2 an maximum # is 2048");
-}
-
-void scramble_tilde_mindist(t_scramble_tilde* x, t_float t){
-    if ((t > 0)  && (t < x->x_n)) x->mindist = (int)t;
-    else post ("scramble~: minimum distance must be positive value lower than buffersize");
-}
-
-void scramble_tilde_direction(t_scramble_tilde* x, t_float d){
-     if (d > 1) d = 1;
-     if (d < -1) d = -1;
-     x->dir = d;
-}
-
-void scramble_tilde_autofollow(t_scramble_tilde* x){
-     x->autofollow = 1;
-}
-
-void scramble_tilde_pitch(t_scramble_tilde* x, t_float p){
-     if (p > 0) x->pitch = p;
-     else post ("scramble~: pitch must be  > 0");
-}
-
-void scramble_tilde_autopitch(t_scramble_tilde* x, t_float p){
-     x->autopitch = p;
-}
-
-void scramble_tilde_semitones(t_scramble_tilde* x, t_float p){
-     x->semitones = (int)p;
-}
-
-
-void scramble_tilde_normalize(t_scramble_tilde* x, t_float n){
-     x->normalize = n;
-}
-
-void scramble_tilde_analize(t_scramble_tilde* x, t_float f){
-     x->analize = f;
-}
-
-void scramble_tilde_flush(t_scramble_tilde* x){
-    x->flush = 1;
-}
-
-void scramble_tilde_playmode(t_scramble_tilde* x, t_float p){
-    x->playmode = (int)p;
-    if (x->playmode < 0) x->playmode = 0;
-    if (x->playmode < 1) x->playmode = 2;
-    switch (x->playmode){
-      case 0: post ("scramble~: playmode off");
-              break;
-      case 1: post ("scramble~: active playmode");
-              break;
-      case 2: post ("scramble~: passive playmode");
-              break;
-      default: post ("scramble~: invalid playmode");        
-    }
-}
-
-
-void scramble_tilde_setup(void)
-{
-    scramble_tilde_class = class_new(gensym("scramble~"), (t_newmethod) scramble_tilde_new, 0,
-    	sizeof(t_scramble_tilde), 0, A_DEFFLOAT,A_DEFFLOAT, 0);
-    class_addfloat(scramble_tilde_class,scramble_tilde_float);
-    class_addmethod(scramble_tilde_class, nullfn, gensym("signal"), 0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_dsp, gensym("dsp"), 0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_buffer, gensym("buffer"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_threshold, gensym("threshold"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_grains, gensym("grains"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_mindist, gensym("min_length"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_direction, gensym("direction"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_autofollow, gensym("autofollow"),0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_pitch, gensym("pitch"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_autopitch, gensym("autopitch"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_semitones, gensym("semitones"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_flush, gensym("flush"), 0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_normalize, gensym("normalize"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_analize, gensym("analize"), A_DEFFLOAT,0);
-    class_addmethod(scramble_tilde_class, (t_method) scramble_tilde_playmode, gensym("playmode"), A_DEFFLOAT,0);
-}
diff --git a/externals/ext13/send13~.c b/externals/ext13/send13~.c
index 78bcc6e8be63aa4acf251ea02465b19727045345..14a143474f9ac8df22ed121952955a5cc9d16f10 100644
--- a/externals/ext13/send13~.c
+++ b/externals/ext13/send13~.c
@@ -52,7 +52,7 @@
  void sigsend13_dsp(t_sigsend13 *x, t_signal **sp)
 {
     if (x->x_n == sp[0]->s_n)
-    	dsp_add(sigsend13_perform, 3, sp[0]->s_vec, x->x_vec, sp[0]->s_n);
+    	dsp_add(sigsend13_perform, 3, sp[0]->s_vec, x->x_vec, (t_int)sp[0]->s_n);
     else error("sigsend13 %s: unexpected vector size", x->x_sym->s_name);
 }
 
diff --git a/externals/ext13/sfread.c b/externals/ext13/sfread.c
index d9c796373f11a88e0b3e73ec7b2f7dbc8028c833..9d990a47b843d8135bc6e0795a72ae83c37d9ee3 100644
--- a/externals/ext13/sfread.c
+++ b/externals/ext13/sfread.c
@@ -169,17 +169,17 @@ static void sfread_dsp(t_sfread *x, t_signal **sp)
      switch (x->x_channels) {
      case 1:
 	  dsp_add(sfread_perform, 4, x, sp[0]->s_vec, 
-		  sp[1]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 2:
 	  dsp_add(sfread_perform, 5, x, sp[0]->s_vec, 
-		  sp[1]->s_vec,sp[2]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec,sp[2]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 4:
 	  dsp_add(sfread_perform, 6, x, sp[0]->s_vec, 
 		  sp[1]->s_vec,sp[2]->s_vec,
 		  sp[3]->s_vec,sp[4]->s_vec,
-		  sp[0]->s_n);
+		  (t_int)sp[0]->s_n);
 	  break;
      }
 }
@@ -304,18 +304,18 @@ static void sfwrite_dsp(t_sfwrite *x, t_signal **sp)
      switch (x->x_channels) {
      case 1:
 	  dsp_add(sfwrite_perform, 3, x, sp[0]->s_vec, 
-		   sp[0]->s_n);
+		   (t_int)sp[0]->s_n);
 	  break;
      case 2:
 	  dsp_add(sfwrite_perform, 4, x, sp[0]->s_vec, 
-		  sp[1]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 4:
 	  dsp_add(sfwrite_perform, 6, x, sp[0]->s_vec, 
 		  sp[1]->s_vec,
 		  sp[2]->s_vec,
 		  sp[3]->s_vec,
-		  sp[0]->s_n);
+		  (t_int)sp[0]->s_n);
 	  break;
      }
      post("sfwrite: dsp end"); 
diff --git a/externals/ext13/sfwrite13~.c b/externals/ext13/sfwrite13~.c
index 0e2e7124ec4355ac25c027a16801ffebc9f26956..ecf4532ddb8ce1f232b9c29b0dd3d45bc41c2879 100644
--- a/externals/ext13/sfwrite13~.c
+++ b/externals/ext13/sfwrite13~.c
@@ -238,18 +238,18 @@ static void sfwrite13_dsp(t_sfwrite13 *x, t_signal **sp)
      switch (x->x_channels) {
      case 1:
 	  dsp_add(sfwrite13_perform, 3, x, sp[0]->s_vec, 
-		   sp[0]->s_n);
+		   (t_int)sp[0]->s_n);
 	  break;
      case 2:
 	  dsp_add(sfwrite13_perform, 4, x, sp[0]->s_vec, 
-		  sp[1]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 4:
 	  dsp_add(sfwrite13_perform, 6, x, sp[0]->s_vec, 
 		  sp[1]->s_vec,
 		  sp[2]->s_vec,
 		  sp[3]->s_vec,
-		  sp[0]->s_n);
+		  (t_int)sp[0]->s_n);
 	  break;
      }
 }
diff --git a/externals/ext13/streamin13~.c b/externals/ext13/streamin13~.c
index 65f63394079233be75bfb10c9dbd9f0e05d33c06..9ef6bc308d4fb32cacfd9b8c107705d65727246b 100644
--- a/externals/ext13/streamin13~.c
+++ b/externals/ext13/streamin13~.c
@@ -187,7 +187,8 @@ static t_int *streamin13_perform(t_int *w)
    for (i=0;i < x->x_n;i++) {
       out[i] = (t_float *)(w[offset+i]);
    }
-   if (x->x_connectsocket){
+
+   if (x->x_connectsocket >= 0){
 	     timeout.tv_sec = 0;
 	     timeout.tv_usec = 0;
 	
@@ -210,8 +211,11 @@ static t_int *streamin13_perform(t_int *w)
 	            }
 	         }
 	       }
-	 free(out);	      
-	 return (w+offset+1+i);
+
+#ifdef _WIN32
+	 free(out);
+#endif
+	 return (w+offset+i);
 	     } else {
 	        x->x_ndone++;
 	     }
@@ -276,7 +280,7 @@ static t_int *streamin13_perform(t_int *w)
 #ifdef _WIN32
 	free(out);
 #endif 
-     return (w+offset+1+i);
+     return (w+offset+i);
 }
 	
 	
@@ -284,14 +288,14 @@ static t_int *streamin13_perform(t_int *w)
 static void streamin13_dsp(t_streamin13 *x, t_signal **sp)
 {
   int i;
-  t_int** myvec = getbytes(sizeof(t_int)*(x->x_n + 3));
+  t_int** myvec = getbytes(sizeof(t_int)*(x->x_n + 2));
    
   myvec[0] = (t_int*)x;
   myvec[1] = (t_int*)sp[0]->s_n;
   for (i=0;i < x->x_n;i++)
     myvec[2 + i] = (t_int*)sp[i]->s_vec;
-  dsp_addv(streamin13_perform, x->x_n + 3, (t_int*)myvec);
-  freebytes(myvec,sizeof(t_int)*(x->x_n + 3));
+  dsp_addv(streamin13_perform, x->x_n + 2, (t_int*)myvec);
+  freebytes(myvec,sizeof(t_int)*(x->x_n + 2));
 
 }
 
diff --git a/externals/ext13/streamout13~.c b/externals/ext13/streamout13~.c
index 7e68a4acf88898cacf61165dd985497cbb4405a8..817583248e100bbd4ef97fe0400b91df3abc9e02 100644
--- a/externals/ext13/streamout13~.c
+++ b/externals/ext13/streamout13~.c
@@ -172,7 +172,6 @@ static t_int *streamout13_perform(t_int *w)
       in[i] = (t_float *)(w[offset+i]);
     }
 
-
    if (x->x_fd > 0){
 
      if (n != x->nsamples)
@@ -272,23 +271,24 @@ static t_int *streamout13_perform(t_int *w)
 #ifdef _WIN32
   free(in);
 #endif
-  return (w + 2 + i * 2);
+  return (w + 3 + i);
 }
 
 static void streamout13_dsp(t_streamout13 *x, t_signal **sp)
 {
 /*
-    dsp_add(streamout13_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(streamout13_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 */
+
   int i;
-  t_int** myvec = getbytes(sizeof(t_int)*(x->x_n + 3));
+  t_int** myvec = getbytes(sizeof(t_int)*(x->x_n + 2));
    
   myvec[0] = (t_int*)x;
   myvec[1] = (t_int*)sp[0]->s_n;
   for (i=0;i < x->x_n/*+1*/;i++)
     myvec[2 + i] = (t_int*)sp[i]->s_vec;
-  dsp_addv(streamout13_perform, x->x_n + 3, (t_int*)myvec);
-  freebytes(myvec,sizeof(t_int)*(x->x_n + 3));
+  dsp_addv(streamout13_perform, x->x_n + 2, (t_int *)myvec);
+  freebytes(myvec,sizeof(t_int)*(x->x_n + 2));
 }
 
 static void streamout13_grain(t_streamout13 *x,t_floatarg grain)
diff --git a/externals/ext13/throw13~.c b/externals/ext13/throw13~.c
index dc9d439ef6b02b75f9793c4f47a23749bd107182..d0252c75aabb5fde721f8dfe7f61efc45e15bfb7 100644
--- a/externals/ext13/throw13~.c
+++ b/externals/ext13/throw13~.c
@@ -75,7 +75,7 @@
     {
     	sigthrow13_set(x, x->x_sym);
     	dsp_add(sigthrow13_perform, 3,
-    	    x, sp[0]->s_vec, sp[0]->s_n);
+    	    x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/externals/fftw/rfftw~.c b/externals/fftw/rfftw~.c
index 4678c8c797f1305c5d43ad9dd53e4842280daaae..f9142a3311b1b1435b71a06d9ed2de027a693913 100644
--- a/externals/fftw/rfftw~.c
+++ b/externals/fftw/rfftw~.c
@@ -64,7 +64,7 @@ static void sigrfftw_dsp(t_sigrfftw *x, t_signal **sp)
                                               NULL,
                                               in, out1, out2,
                                               FFTW_ESTIMATE | FFTW_PRESERVE_INPUT);
-      dsp_add(sigrfftw_perform,3,&x->plan,out2+1,n2-1);
+      dsp_add(sigrfftw_perform,3,&x->plan,out2+1,(t_int)(n2-1));
     }
 
   dsp_add_zero(out1 + n2, n2);
diff --git a/externals/fftw/rifftw~.c b/externals/fftw/rifftw~.c
index a0d85ac50d02f8d5a80705803969ad048a69767f..f563c535a618bb5477a99dce42b38d0f9e342e81 100644
--- a/externals/fftw/rifftw~.c
+++ b/externals/fftw/rifftw~.c
@@ -65,7 +65,7 @@ static void sigrifftw_dsp(t_sigrifftw *x, t_signal **sp)
                                               in1, in2, out, 
                                               FFTW_ESTIMATE | FFTW_PRESERVE_INPUT);
       dsp_add_zero(in1+ n/2, n/2);
-      dsp_add(sigrifftw_perform,3,&x->plan,in2,n2);
+      dsp_add(sigrifftw_perform,3,&x->plan,in2,(t_int)n2);
     }
 }
 
diff --git a/externals/fluid~/fluid~.c b/externals/fluid~/fluid~.c
index 3a81a7d1b2437fe17965a1357007df91a50b9d6a..8aca760cf1553c87f14a5bd4d53030be6f16341d 100644
--- a/externals/fluid~/fluid~.c
+++ b/externals/fluid~/fluid~.c
@@ -28,7 +28,7 @@ t_int *fluid_tilde_perform(t_int *w)
 static void fluid_tilde_dsp(t_fluid_tilde *x, t_signal **sp)
 {
     dsp_add(fluid_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void fluid_tilde_free(t_fluid_tilde *x)
diff --git a/externals/footils/rx7/pd/rx7~.cpp b/externals/footils/rx7/pd/rx7~.cpp
index e7d573aa8f1e0edf9eb5c3682c65871feb0c6c1e..738a5f90b869f2b8f2c346d350d851db83852a76 100644
--- a/externals/footils/rx7/pd/rx7~.cpp
+++ b/externals/footils/rx7/pd/rx7~.cpp
@@ -226,7 +226,7 @@ static t_int *rx7_perform(t_int *w)
 
 static void rx7_dsp(t_rx7 *x, t_signal **sp)
 {
-	dsp_add(rx7_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+	dsp_add(rx7_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 extern "C" void rx7_tilde_setup(void)
diff --git a/externals/freeverb~/freeverb~.c b/externals/freeverb~/freeverb~.c
index 237ad71538c009fbb671cd0cd2c1af307a66dec3..c9fc331d81299ae2d2d18e3a5380520949f170d0 100644
--- a/externals/freeverb~/freeverb~.c
+++ b/externals/freeverb~/freeverb~.c
@@ -527,9 +527,9 @@ static void dsp_add_freeverb(t_freeverb *x, t_sample *in1, t_sample *in2,
 							 t_sample *out1, t_sample *out2, int n)
 {
 	if(n & 7)	// check whether block size is multiple of 8
-		dsp_add(freeverb_perform, 6, x, in1, in2, out1, out2, n);
+		dsp_add(freeverb_perform, 6, x, in1, in2, out1, out2, (t_int)n);
 	else
-		dsp_add(freeverb_perf8, 6, x, in1, in2, out1, out2, n);
+		dsp_add(freeverb_perf8, 6, x, in1, in2, out1, out2, (t_int)n);
 }
 
 void freeverb_dsp(t_freeverb *x, t_signal **sp)
diff --git a/externals/ggee/control/inv.c b/externals/ggee/control/inv.c
index de3d1c6c36d7038617723b34e0148e0023e1bbd1..f25102464252a297590f876b32ea1df4d31857b0 100644
--- a/externals/ggee/control/inv.c
+++ b/externals/ggee/control/inv.c
@@ -30,7 +30,7 @@ static t_int *inv_perform(t_int *w)    /* not static; also used in d_fft.c */
 
 static void inv_dsp(t_inv *x, t_signal **sp)
 {
-    dsp_add(inv_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(inv_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void inv_tilde_setup(void)
diff --git a/externals/ggee/experimental/fofsynth~.c b/externals/ggee/experimental/fofsynth~.c
index 637f06194d7e8f87fc8f24ba1675f879c6c018f6..7294578e65852c6482032900742af9f4149d189a 100644
--- a/externals/ggee/experimental/fofsynth~.c
+++ b/externals/ggee/experimental/fofsynth~.c
@@ -277,7 +277,7 @@ static void fofsynth_dsp(t_fofsynth *x, t_signal **sp)
      }
                
      dsp_add(fofsynth_perform, 4, x,
-	     sp[0]->s_vec,sp[1]->s_vec, sp[0]->s_n);
+	     sp[0]->s_vec,sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/ggee/experimental/pvocfreq.c b/externals/ggee/experimental/pvocfreq.c
index d1f4b189ffe0fc066035854f586c44206e7b5882..506440543649936e870de8c431593e7ca94bb65b 100644
--- a/externals/ggee/experimental/pvocfreq.c
+++ b/externals/ggee/experimental/pvocfreq.c
@@ -85,7 +85,7 @@ static t_int *shuffle_perform(t_int *w)
 static void shuffle_dsp(t_shuffle *x, t_signal **sp)
 {
 	  dsp_add(shuffle_perform, 5, x, sp[0]->s_vec, 
-		  sp[1]->s_vec,sp[2]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec,sp[2]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/ggee/experimental/stk.cpp b/externals/ggee/experimental/stk.cpp
index c69f93a66f314b4a9ca01ff177f2ae61c3c0a124..a1fb9adb405040151672c33941bde0ba6e10af46 100644
--- a/externals/ggee/experimental/stk.cpp
+++ b/externals/ggee/experimental/stk.cpp
@@ -105,7 +105,7 @@ static t_int *stk_perform(t_int *w)
 
 static void stk_dsp(t_stk *x, t_signal **sp)
 {
-     dsp_add(stk_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+     dsp_add(stk_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/ggee/experimental/tabwrite4~.c b/externals/ggee/experimental/tabwrite4~.c
index 87e1f2cfa853920fe74b8668180f8ae32bc7ccb8..5edab05a0f82bd72364e6cbc167835d46bdc7ad1 100644
--- a/externals/ggee/experimental/tabwrite4~.c
+++ b/externals/ggee/experimental/tabwrite4~.c
@@ -156,7 +156,7 @@ void tabwrite4_tilde_set(t_tabwrite4_tilde *x, t_symbol *s)
 static void tabwrite4_tilde_dsp(t_tabwrite4_tilde *x, t_signal **sp)
 {
     tabwrite4_tilde_set(x, x->x_arrayname);
-    dsp_add(tabwrite4_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(tabwrite4_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void tabwrite4_tilde_bang(t_tabwrite4_tilde *x)
diff --git a/externals/ggee/filters/moog~.c b/externals/ggee/filters/moog~.c
index 5719fcc63549773734e4972f99b45fdad33e6a96..3a95f66668bd2325bf31e67c82997a47e3713e19 100644
--- a/externals/ggee/filters/moog~.c
+++ b/externals/ggee/filters/moog~.c
@@ -161,9 +161,9 @@ t_int *moog_perf8(t_int *w)
 void dsp_add_moog(t_moog *x, t_sample *in1, t_sample *in2, t_sample *in3, t_sample *out, int n)
 {
     if (n&7)
-    	dsp_add(moog_perform, 6,(t_int)x, in1,in2,in3, out, n);
+    	dsp_add(moog_perform, 6,(t_int)x, in1,in2,in3, out, (t_int)n);
     else	
-    	dsp_add(moog_perf8, 6,(t_int) x, in1, in2, in3, out, n);
+    	dsp_add(moog_perf8, 6,(t_int) x, in1, in2, in3, out, (t_int)n);
 }
 
 static void moog_dsp(t_moog *x, t_signal **sp)
diff --git a/externals/ggee/signal/atan2~.c b/externals/ggee/signal/atan2~.c
index 63ee0d00e145d3673653df963be69c586eb98c76..8211437d1c31d5b84e9d271b1e6d92bec0ce0fbe 100644
--- a/externals/ggee/signal/atan2~.c
+++ b/externals/ggee/signal/atan2~.c
@@ -67,9 +67,9 @@ t_int *atan2_perf8(t_int *w)
 void dsp_add_atan2(t_sample *in1, t_sample *in2, t_sample *out, int n)
 {
     if (n&7)
-    	dsp_add(atan2_perform, 4, in1, in2, out, n);
+    	dsp_add(atan2_perform, 4, in1, in2, out, (t_int)n);
     else	
-    	dsp_add(atan2_perf8, 4, in1, in2, out, n);
+    	dsp_add(atan2_perf8, 4, in1, in2, out, (t_int)n);
 }
 
 static void atan2_dsp(t_atan2 *x, t_signal **sp)
diff --git a/externals/ggee/signal/mixer~.c b/externals/ggee/signal/mixer~.c
index 90c1d278c521352b2a061c8a08f4d037f6d4b650..5b395500c2ea3f14d3a12be92aec22f1acf8a041 100644
--- a/externals/ggee/signal/mixer~.c
+++ b/externals/ggee/signal/mixer~.c
@@ -91,7 +91,7 @@ static void mixer_dsp(t_mixer *x, t_signal **sp)
   for (i=0;i < x->x_n+1;i++)
     myvec[2 + i] = (t_int*)sp[i]->s_vec;
 
-  dsp_addv(mixer_perform, x->x_n + 3, (t_int*)myvec);
+  dsp_addv(mixer_perform, (t_int)(x->x_n + 3), (t_int*)myvec);
   freebytes(myvec,sizeof(t_int)*(x->x_n + 3));
 }
 
diff --git a/externals/ggee/signal/sfwrite~.c b/externals/ggee/signal/sfwrite~.c
index 71ef52de48efeea68391f4968bd85dc0ba2c52fe..1209572c5b344a6e878cbf7790c4c815c2fb0734 100644
--- a/externals/ggee/signal/sfwrite~.c
+++ b/externals/ggee/signal/sfwrite~.c
@@ -217,18 +217,18 @@ static void sfwrite_dsp(t_sfwrite *x, t_signal **sp)
      switch (x->x_channels) {
      case 1:
 	  dsp_add(sfwrite_perform, 3, x, sp[0]->s_vec, 
-		   sp[0]->s_n);
+		   (t_int)sp[0]->s_n);
 	  break;
      case 2:
 	  dsp_add(sfwrite_perform, 4, x, sp[0]->s_vec, 
-		  sp[1]->s_vec, sp[0]->s_n);
+		  sp[1]->s_vec, (t_int)sp[0]->s_n);
 	  break;
      case 4:
 	  dsp_add(sfwrite_perform, 6, x, sp[0]->s_vec, 
 		  sp[1]->s_vec,
 		  sp[2]->s_vec,
 		  sp[3]->s_vec,
-		  sp[0]->s_n);
+		  (t_int)sp[0]->s_n);
 	  break;
      }
 }
diff --git a/externals/ggee/signal/streamin~.c b/externals/ggee/signal/streamin~.c
index 646670afd7443ad44fa036a2daaf79f1197a3753..93306ab51434f9b2f43e0a460f238e9aeac1979a 100644
--- a/externals/ggee/signal/streamin~.c
+++ b/externals/ggee/signal/streamin~.c
@@ -355,7 +355,7 @@ static t_int *streamin_perform(t_int *w)
 
 static void streamin_dsp(t_streamin *x, t_signal **sp)
 {
-    dsp_add(streamin_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(streamin_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/ggee/signal/streamout~.c b/externals/ggee/signal/streamout~.c
index 34233b19248c11688045cb48ab435cd889c060b7..d8e9e77f16e143924da858d2728935af763010b4 100644
--- a/externals/ggee/signal/streamout~.c
+++ b/externals/ggee/signal/streamout~.c
@@ -252,16 +252,16 @@ static void streamout_dsp(t_streamout *x, t_signal **sp)
 {
   switch (x->x_tag.channels) {
   case 1:
-    dsp_add(streamout_perform, 3, x,sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(streamout_perform, 3, x,sp[0]->s_vec, (t_int)sp[0]->s_n);
     post("one channel mode");
     break;
   case 2:
-    dsp_add(streamout_perform, 4, x,sp[0]->s_vec, sp[1]->s_vec,sp[0]->s_n);
+    dsp_add(streamout_perform, 4, x,sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
     post("two channel mode");
     break;
   case 4:
     dsp_add(streamout_perform, 6, x,sp[0]->s_vec, sp[1]->s_vec,
-	    sp[2]->s_vec,sp[3]->s_vec,sp[0]->s_n);
+	    sp[2]->s_vec,sp[3]->s_vec, (t_int)sp[0]->s_n);
     post("four channel mode");
     break;
   default:
diff --git a/externals/grh/adaptive/src/lms2~.c b/externals/grh/adaptive/src/lms2~.c
index 1946d53c2b5f06fa2bd643767e8bfa9a1da76f94..4d4c684538dc35856062b5c4a0779e2b75b65b56 100644
--- a/externals/grh/adaptive/src/lms2~.c
+++ b/externals/grh/adaptive/src/lms2~.c
@@ -226,7 +226,7 @@ static void lms2_tilde_dsp(t_lms2_tilde *x, t_signal **sp)
   }
   
   dsp_add(lms2_tilde_perform, 6, sp[0]->s_vec, sp[1]->s_vec, 
-          sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n, x);
+          sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 static void lms2_tilde_helper(void)
diff --git a/externals/grh/adaptive/src/lms~.c b/externals/grh/adaptive/src/lms~.c
index e8bcddfb5f1adba98ce50851b69463192988577f..593fa59563c9b4fd2afb759eeb83f5490aba5a56 100644
--- a/externals/grh/adaptive/src/lms~.c
+++ b/externals/grh/adaptive/src/lms~.c
@@ -201,7 +201,7 @@ static void lms_tilde_dsp(t_lms_tilde *x, t_signal **sp)
   }
 
   dsp_add(lms_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, 
-	  sp[2]->s_vec, sp[0]->s_n);
+	  sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void lms_tilde_helper(void)
diff --git a/externals/grh/adaptive/src/nlms2~.c b/externals/grh/adaptive/src/nlms2~.c
index 847f907b60f7f3161a52742f0f9c8481dae0bca2..c5006dbca0d79b98e5eb4d9f7f1646eec2a17fc1 100644
--- a/externals/grh/adaptive/src/nlms2~.c
+++ b/externals/grh/adaptive/src/nlms2~.c
@@ -249,7 +249,7 @@ static void nlms2_tilde_dsp(t_nlms2_tilde *x, t_signal **sp)
   }
 
   dsp_add(nlms2_tilde_perform, 6, sp[0]->s_vec, sp[1]->s_vec, 
-          sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n, x);
+          sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 static void nlms2_tilde_helper(void)
diff --git a/externals/grh/adaptive/src/nlms3~.c b/externals/grh/adaptive/src/nlms3~.c
index 162f65ab5e5711df9785a397fa4550c141aa38ce..19c344c58c4aee938dde524e2a88ae3defa8f939 100644
--- a/externals/grh/adaptive/src/nlms3~.c
+++ b/externals/grh/adaptive/src/nlms3~.c
@@ -179,7 +179,6 @@ static t_int *nlms3_tilde_perform(t_int *w)
   int i, j, tmp;
   t_sample x_2;
   
-  
   // calculate inlet2 (filter+adaptation)
   if(x->adapt)
   {
@@ -288,22 +287,22 @@ static void nlms3_tilde_dsp(t_nlms3_tilde *x, t_signal **sp)
   {
     if(sp[0]->s_n < x->N)
       post("nlms3~ WARNING: buffersize must be bigger than N, you will get wrong results !!!"); 
-    
+
     if(x->in_tmp) freebytes(x->in_tmp, sizeof(t_sample) * x->bufsize);
     x->in_tmp = (t_sample *)getbytes(sizeof(t_sample) * sp[0]->s_n);
-    
+
     if(x->y_tmp) freebytes(x->y_tmp, sizeof(t_sample) * x->bufsize);
     x->y_tmp = (t_sample *)getbytes(sizeof(t_sample) * sp[0]->s_n);
-    
+
     if(x->e_tmp) freebytes(x->e_tmp, sizeof(t_sample) * x->bufsize);
     x->e_tmp = (t_sample *)getbytes(sizeof(t_sample) * sp[0]->s_n);
-    
+
     x->bufsize =  sp[0]->s_n;
   }
 
   dsp_add(nlms3_tilde_perform, 8, sp[0]->s_vec, sp[1]->s_vec, 
           sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, 
-          sp[5]->s_vec, sp[0]->s_n, x);
+          sp[5]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 static void nlms3_tilde_helper(void)
@@ -379,7 +378,7 @@ static void nlms3_tilde_free(t_nlms3_tilde *x)
   if(x->c) freebytes(x->c, sizeof(t_float) * x->N);
   if(x->buf) freebytes(x->buf, sizeof(t_sample) * x->N-1);
   if(x->xbuf) freebytes(x->xbuf, sizeof(t_sample) * x->N-1);
-  if(x->in_tmp) freebytes(x->y_tmp, sizeof(t_sample) * x->bufsize);
+  if(x->in_tmp) freebytes(x->in_tmp, sizeof(t_sample) * x->bufsize);
   if(x->y_tmp) freebytes(x->y_tmp, sizeof(t_sample) * x->bufsize);
   if(x->e_tmp) freebytes(x->e_tmp, sizeof(t_sample) * x->bufsize);
   if(x->coef) freebytes(x->coef, sizeof(t_atom) * x->N);
diff --git a/externals/grh/adaptive/src/nlms~.c b/externals/grh/adaptive/src/nlms~.c
index 0d4f95da42251eb574bef9f835f3e1dc7befab69..631d1df4338f17778c9e51a3266c773e911b7305 100644
--- a/externals/grh/adaptive/src/nlms~.c
+++ b/externals/grh/adaptive/src/nlms~.c
@@ -225,7 +225,7 @@ static void nlms_tilde_dsp(t_nlms_tilde *x, t_signal **sp)
   }
 
   dsp_add(nlms_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, 
-	  sp[2]->s_vec, sp[0]->s_n);
+	  sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void nlms_tilde_helper(void)
diff --git a/externals/grh/pix_linNN/pix_linNN.cpp b/externals/grh/pix_linNN/pix_linNN.cpp
index bc68398e662fbba6cf3db0e9088194a9e5f4ae43..3c0436157036a4dd4d2cc3849e69eeda32d6bc13 100644
--- a/externals/grh/pix_linNN/pix_linNN.cpp
+++ b/externals/grh/pix_linNN/pix_linNN.cpp
@@ -213,7 +213,7 @@ t_int* pix_linNN::perform(t_int* w)
  */
 void pix_linNN::dspMess(void *data, t_signal** sp)
 {
-  dsp_add(perform, 4, data, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(perform, 4, data, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 //----------------------------------------------------------
diff --git a/externals/grh/pix_recNN/pix_recNN.cpp b/externals/grh/pix_recNN/pix_recNN.cpp
index e816135b29d3a65f846ea2b38366450e575d4820..3b8787b2160a8f55a91813fc5a863535de9c0e91 100644
--- a/externals/grh/pix_recNN/pix_recNN.cpp
+++ b/externals/grh/pix_recNN/pix_recNN.cpp
@@ -264,7 +264,7 @@ t_int* pix_recNN::perform(t_int* w)
  */
 void pix_recNN::dspMess(void *data, t_signal** sp)
 {
-  dsp_add(perform, 4, data, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(perform, 4, data, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 //----------------------------------------------------------
diff --git a/externals/iem/iem_adaptfilt/src/NLMSCC~.c b/externals/iem/iem_adaptfilt/src/NLMSCC~.c
index 5824e1fb997d10b9d9293f1eacc10dafd6c12c2b..0b43ac2f3226ce6e6a8d266ca27f57b5125fa245 100644
--- a/externals/iem/iem_adaptfilt/src/NLMSCC~.c
+++ b/externals/iem/iem_adaptfilt/src/NLMSCC~.c
@@ -288,9 +288,9 @@ static void NLMSCC_tilde_dsp(t_NLMSCC_tilde *x, t_signal **sp)
     x->x_wmax_array_mem_beg = NLMSCC_tilde_check_array(x->x_wmax_array_sym_name, x->x_n_order);
 
     if(!(x->x_w_array_mem_beg && x->x_wmin_array_mem_beg && x->x_wmax_array_mem_beg))
-        dsp_add(NLMSCC_tilde_perform_zero, 2, x, n);
+        dsp_add(NLMSCC_tilde_perform_zero, 2, x, (t_int)n);
     else
-        dsp_add(NLMSCC_tilde_perform, 2, x, n);
+        dsp_add(NLMSCC_tilde_perform, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c b/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c
index b0f300e67c27ed64b94bf931d7e7b96f67d5af54..c3246fe5601c6b41ba8657dacc042bee1ceeadca 100644
--- a/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c
+++ b/externals/iem/iem_adaptfilt/src/NLMSerr_in~.c
@@ -200,9 +200,9 @@ static void NLMSerr_in_tilde_dsp(t_NLMSerr_in_tilde *x, t_signal **sp)
     x->x_w_array_mem_beg = NLMSerr_in_tilde_check_array(x->x_w_array_sym_name, x->x_n_order);
 
     if(!x->x_w_array_mem_beg)
-        dsp_add(NLMSerr_in_tilde_perform_zero, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+        dsp_add(NLMSerr_in_tilde_perform_zero, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
     else
-        dsp_add(NLMSerr_in_tilde_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+        dsp_add(NLMSerr_in_tilde_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/iem/iem_adaptfilt/src/NLMS~.c b/externals/iem/iem_adaptfilt/src/NLMS~.c
index ee225baa1f5b44300976fe996364f385bf810a5c..e2e2cba2a8df94cff275a32482bea5950b1d54b5 100644
--- a/externals/iem/iem_adaptfilt/src/NLMS~.c
+++ b/externals/iem/iem_adaptfilt/src/NLMS~.c
@@ -246,9 +246,9 @@ static void NLMS_tilde_dsp(t_NLMS_tilde *x, t_signal **sp)
     x->x_w_array_mem_beg = NLMS_tilde_check_array(x->x_w_array_sym_name, x->x_n_order);
 
     if(!x->x_w_array_mem_beg)
-        dsp_add(NLMS_tilde_perform_zero, 2, x, n);
+        dsp_add(NLMS_tilde_perform_zero, 2, x, (t_int)n);
     else
-        dsp_add(NLMS_tilde_perform, 2, x, n);
+        dsp_add(NLMS_tilde_perform, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c b/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c
index 23a00d8d4fd57335e078995963c1bd69468c9393..49f2aa9547dbcedc3a64e0952151b53d7edd9851 100644
--- a/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c
+++ b/externals/iem/iem_adaptfilt/src/n_CLNLMS~.c
@@ -376,9 +376,9 @@ static void n_CLNLMS_tilde_dsp(t_n_CLNLMS_tilde *x, t_signal **sp)
   }
   
   if(!ok_w)
-    dsp_add(n_CLNLMS_tilde_perform_zero, 2, x, n);
+    dsp_add(n_CLNLMS_tilde_perform_zero, 2, x, (t_int)n);
   else
-    dsp_add(n_CLNLMS_tilde_perform, 2, x, n);
+    dsp_add(n_CLNLMS_tilde_perform, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_adaptfilt/src/n_CNLMS~.c b/externals/iem/iem_adaptfilt/src/n_CNLMS~.c
index 1b636fc6150018a8bed50d923e9a6fc7b229044e..216585dcac9a3505ae203c8b3d01b110fbbee8d1 100644
--- a/externals/iem/iem_adaptfilt/src/n_CNLMS~.c
+++ b/externals/iem/iem_adaptfilt/src/n_CNLMS~.c
@@ -365,9 +365,9 @@ static void n_CNLMS_tilde_dsp(t_n_CNLMS_tilde *x, t_signal **sp)
   }
   
   if(!ok_w)
-    dsp_add(n_CNLMS_tilde_perform_zero, 2, x, n);
+    dsp_add(n_CNLMS_tilde_perform_zero, 2, x, (t_int)n);
   else
-    dsp_add(n_CNLMS_tilde_perform, 2, x, n);
+    dsp_add(n_CNLMS_tilde_perform, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_delay/src/block_delay~.c b/externals/iem/iem_delay/src/block_delay~.c
index 0bec230db979cdcd707ddff476fcb8df4d0746e0..77797a5b2678ceda8959cde83fb3670aa79d1326 100644
--- a/externals/iem/iem_delay/src/block_delay~.c
+++ b/externals/iem/iem_delay/src/block_delay~.c
@@ -92,9 +92,9 @@ static void block_delay_tilde_dsp(t_block_delay_tilde *x, t_signal **sp)
 		x->x_begmem = (t_float *)resizebytes(x->x_begmem, x->x_blocksize*sizeof(t_float), n*sizeof(t_float));
 	x->x_blocksize = n;
 	if(n&7)
-		dsp_add(block_delay_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+		dsp_add(block_delay_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 	else
-		dsp_add(block_delay_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+		dsp_add(block_delay_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *block_delay_tilde_new(void)
diff --git a/externals/iem/iem_delay/src/n_delay1p_line~.c b/externals/iem/iem_delay/src/n_delay1p_line~.c
index 35516d2f6a82b2c2ac0ea17e4696e2dad8cecff8..cbc32c48995eb032a51417c599d8bd69e891aa3c 100644
--- a/externals/iem/iem_delay/src/n_delay1p_line~.c
+++ b/externals/iem/iem_delay/src/n_delay1p_line~.c
@@ -359,9 +359,9 @@ static void n_delay1p_line_tilde_dsp(t_n_delay1p_line_tilde *x, t_signal **sp)
 	for(i=0; i<nd; i++)
 		x->x_io[i] = sp[i]->s_vec;
 	if(n&7)
-		dsp_add(n_delay1p_line_tilde_perform, 2, x, n);
+		dsp_add(n_delay1p_line_tilde_perform, 2, x, (t_int)n);
 	else
-		dsp_add(n_delay1p_line_tilde_perf8, 2, x, n);
+		dsp_add(n_delay1p_line_tilde_perf8, 2, x, (t_int)n);
 }
 
 static void *n_delay1p_line_tilde_new(t_floatarg fout, t_floatarg delay_ms, t_floatarg interpol_ms)
diff --git a/externals/iem/iem_delay/src/n_delay2p_line~.c b/externals/iem/iem_delay/src/n_delay2p_line~.c
index 5a91e2abb5a1d6cbd57b0b5f54b0c4a7911a30f8..fb6137ea3db53d03cb7783951da7aee8f0acc3a9 100644
--- a/externals/iem/iem_delay/src/n_delay2p_line~.c
+++ b/externals/iem/iem_delay/src/n_delay2p_line~.c
@@ -392,9 +392,9 @@ static void n_delay2p_line_tilde_dsp(t_n_delay2p_line_tilde *x, t_signal **sp)
 	for(i=0; i<nd; i++)
 		x->x_io[i] = sp[i]->s_vec;
 	if(n&7)
-		dsp_add(n_delay2p_line_tilde_perform, 2, x, n);
+		dsp_add(n_delay2p_line_tilde_perform, 2, x, (t_int)n);
 	else
-		dsp_add(n_delay2p_line_tilde_perf8, 2, x, n);
+		dsp_add(n_delay2p_line_tilde_perf8, 2, x, (t_int)n);
 }
 
 static void *n_delay2p_line_tilde_new(t_floatarg fout, t_floatarg delay_ms, t_floatarg interpol_ms)
diff --git a/externals/iem/iem_delay/src/nz~.c b/externals/iem/iem_delay/src/nz~.c
index 6318dbfc01460630217a3bc4e95e5532a45f5074..34b880fa1cad72678bb0a36bf2a81ea0ae3c3c10 100644
--- a/externals/iem/iem_delay/src/nz~.c
+++ b/externals/iem/iem_delay/src/nz~.c
@@ -191,9 +191,9 @@ static void nz_tilde_dsp(t_nz_tilde *x, t_signal **sp)
 	for(i=0; i<num_dels; i++)
 		x->x_io[i] = sp[i]->s_vec;
 	if(n&7)
-		dsp_add(nz_tilde_perform, 2, x, n);
+		dsp_add(nz_tilde_perform, 2, x, (t_int)n);
 	else
-		dsp_add(nz_tilde_perf8, 2, x, n);
+		dsp_add(nz_tilde_perf8, 2, x, (t_int)n);
 }
 
 static void *nz_tilde_new(t_floatarg n_delays, t_floatarg max_delay_samples)
diff --git a/externals/iem/iem_matrix/src/matrix_bundle_line8~.c b/externals/iem/iem_matrix/src/matrix_bundle_line8~.c
index e9f61453697dd1ec0eee59e4e4ebc9035b84480c..deb3defb46c22e26f083909d8f6870a6811d1d57 100644
--- a/externals/iem/iem_matrix/src/matrix_bundle_line8~.c
+++ b/externals/iem/iem_matrix/src/matrix_bundle_line8~.c
@@ -371,11 +371,11 @@ static void matrix_bundle_line8_tilde_dsp(t_matrix_bundle_line8_tilde *x, t_sign
   
   if(n&7)
   {
-    dsp_add(matrix_bundle_line8_tilde_perform_zero, 2, x, n);
+    dsp_add(matrix_bundle_line8_tilde_perform_zero, 2, x, (t_int)n);
     post("ERROR!!! matrix_bundle_line8_tilde~ : blocksize is %d and not a multiple of 8", n);
   }
   else
-    dsp_add(matrix_bundle_line8_tilde_perf8, 2, x, n);
+    dsp_add(matrix_bundle_line8_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_bundle_line~.c b/externals/iem/iem_matrix/src/matrix_bundle_line~.c
index e7ae5f93b8801ee88a28a66ebf304ed6f9b89494..44736a4cf25283d6d83d59106d89f326a1872258 100644
--- a/externals/iem/iem_matrix/src/matrix_bundle_line~.c
+++ b/externals/iem/iem_matrix/src/matrix_bundle_line~.c
@@ -385,11 +385,11 @@ static void matrix_bundle_line_tilde_dsp(t_matrix_bundle_line_tilde *x, t_signal
   
   if(n&7)
   {
-    dsp_add(matrix_bundle_line_tilde_perform_zero, 2, x, n);
+    dsp_add(matrix_bundle_line_tilde_perform_zero, 2, x, (t_int)n);
     post("ERROR!!! matrix_bundle_line_tilde~ : blocksize is %d and not a multiple of 8", n);
   }
   else
-    dsp_add(matrix_bundle_line_tilde_perf8, 2, x, n);
+    dsp_add(matrix_bundle_line_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_bundle_stat~.c b/externals/iem/iem_matrix/src/matrix_bundle_stat~.c
index df0f14700eabef1139e4bcea239073002e770264..64ddc7001cd26d1f53f544eba7a95c61f58054fc 100644
--- a/externals/iem/iem_matrix/src/matrix_bundle_stat~.c
+++ b/externals/iem/iem_matrix/src/matrix_bundle_stat~.c
@@ -217,9 +217,9 @@ static void matrix_bundle_stat_tilde_dsp(t_matrix_bundle_stat_tilde *x, t_signal
   
   n = sp[0]->s_n;
   if(n&7)
-    dsp_add(matrix_bundle_stat_tilde_perform, 2, x, sp[0]->s_n);
+    dsp_add(matrix_bundle_stat_tilde_perform, 2, x, (t_int)sp[0]->s_n);
   else
-    dsp_add(matrix_bundle_stat_tilde_perf8, 2, x, sp[0]->s_n);
+    dsp_add(matrix_bundle_stat_tilde_perf8, 2, x, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_diag_mul_line8~.c b/externals/iem/iem_matrix/src/matrix_diag_mul_line8~.c
index 771ea8ba70940d0a7d714484ba15e65a218a98a1..a0097397818d1a118433f9a3cd007b7eda1356e1 100644
--- a/externals/iem/iem_matrix/src/matrix_diag_mul_line8~.c
+++ b/externals/iem/iem_matrix/src/matrix_diag_mul_line8~.c
@@ -296,9 +296,9 @@ static void matrix_diag_mul_line8_tilde_dsp(t_matrix_diag_mul_line8_tilde *x, t_
   x->x_8overn = 8.0f / (t_float)n;
   
   if(n&7)
-    dsp_add(matrix_diag_mul_line8_tilde_perform_zero, 2, x, n);
+    dsp_add(matrix_diag_mul_line8_tilde_perform_zero, 2, x, (t_int)n);
   else
-    dsp_add(matrix_diag_mul_line8_tilde_perf8, 2, x, n);
+    dsp_add(matrix_diag_mul_line8_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_diag_mul_line~.c b/externals/iem/iem_matrix/src/matrix_diag_mul_line~.c
index 7bad1bb0fa7c1f05bb149936345e2d1c02d912f3..71bb0bb5e35143a0fc961eebaba422dfa213f35c 100644
--- a/externals/iem/iem_matrix/src/matrix_diag_mul_line~.c
+++ b/externals/iem/iem_matrix/src/matrix_diag_mul_line~.c
@@ -302,9 +302,9 @@ static void matrix_diag_mul_line_tilde_dsp(t_matrix_diag_mul_line_tilde *x, t_si
   x->x_1overn = 1.0f / (t_float)n;
   
   if(n&7)
-    dsp_add(matrix_diag_mul_line_tilde_perform_zero, 2, x, n);
+    dsp_add(matrix_diag_mul_line_tilde_perform_zero, 2, x, (t_int)n);
   else
-    dsp_add(matrix_diag_mul_line_tilde_perf8, 2, x, n);
+    dsp_add(matrix_diag_mul_line_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_diag_mul_stat~.c b/externals/iem/iem_matrix/src/matrix_diag_mul_stat~.c
index 9edb511f56fe3c24f8edd96a05f6eefc43f43cdc..de2645ba1755885e3e76875d52c52f1344114091 100644
--- a/externals/iem/iem_matrix/src/matrix_diag_mul_stat~.c
+++ b/externals/iem/iem_matrix/src/matrix_diag_mul_stat~.c
@@ -171,9 +171,9 @@ static void matrix_diag_mul_stat_tilde_dsp(t_matrix_diag_mul_stat_tilde *x, t_si
   
   n = sp[0]->s_n;
   if(n&7)
-    dsp_add(matrix_diag_mul_stat_tilde_perform, 2, x, n);
+    dsp_add(matrix_diag_mul_stat_tilde_perform, 2, x, (t_int)n);
   else
-    dsp_add(matrix_diag_mul_stat_tilde_perf8, 2, x, n);
+    dsp_add(matrix_diag_mul_stat_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_mul_line8~.c b/externals/iem/iem_matrix/src/matrix_mul_line8~.c
index 10f58fb214e817f8ef3916ccc7d2cd3316836b8a..7b615a32da569e71c144c1e789446ada88029978 100644
--- a/externals/iem/iem_matrix/src/matrix_mul_line8~.c
+++ b/externals/iem/iem_matrix/src/matrix_mul_line8~.c
@@ -557,11 +557,11 @@ static void matrix_mul_line8_tilde_dsp(t_matrix_mul_line8_tilde *x, t_signal **s
   
   if(n&7)
   {
-    dsp_add(matrix_mul_line8_tilde_perform_zero, 2, x, n);
+    dsp_add(matrix_mul_line8_tilde_perform_zero, 2, x, (t_int)n);
     post("ERROR!!! matrix_mul_line8~ : blocksize is %d and not a multiple of 8", n);
   }
   else
-    dsp_add(matrix_mul_line8_tilde_perf8, 2, x, n);
+    dsp_add(matrix_mul_line8_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_mul_line~.c b/externals/iem/iem_matrix/src/matrix_mul_line~.c
index b41c8b2c3683bff82d47f4474a7bbb3e4558d0dc..96dc598774ff8553564aba80e49b8a7a544af024 100644
--- a/externals/iem/iem_matrix/src/matrix_mul_line~.c
+++ b/externals/iem/iem_matrix/src/matrix_mul_line~.c
@@ -586,11 +586,11 @@ static void matrix_mul_line_tilde_dsp(t_matrix_mul_line_tilde *x, t_signal **sp)
   
   if(n&7)
   {
-    dsp_add(matrix_mul_line_tilde_perform_zero, 2, x, n);
+    dsp_add(matrix_mul_line_tilde_perform_zero, 2, x, (t_int)n);
     post("ERROR!!! matrix_mul_line~ : blocksize is %d and not a multiple of 8", n);
   }
   else
-    dsp_add(matrix_mul_line_tilde_perf8, 2, x, n);
+    dsp_add(matrix_mul_line_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_matrix/src/matrix_mul_stat~.c b/externals/iem/iem_matrix/src/matrix_mul_stat~.c
index ada652a53905238379537c27defee8567deb22ee..f61d1746d850b9ed11868cb4bf67067347a8897b 100644
--- a/externals/iem/iem_matrix/src/matrix_mul_stat~.c
+++ b/externals/iem/iem_matrix/src/matrix_mul_stat~.c
@@ -394,9 +394,9 @@ static void matrix_mul_stat_tilde_dsp(t_matrix_mul_stat_tilde *x, t_signal **sp)
   
   n = sp[0]->s_n;
   if(n&7)
-    dsp_add(matrix_mul_stat_tilde_perform, 2, x, n);
+    dsp_add(matrix_mul_stat_tilde_perform, 2, x, (t_int)n);
   else
-    dsp_add(matrix_mul_stat_tilde_perf8, 2, x, n);
+    dsp_add(matrix_mul_stat_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_spec2/src/spec2_1p1z_freq~.c b/externals/iem/iem_spec2/src/spec2_1p1z_freq~.c
index 6d95a864968743f6f4f5e5b37eb8eb4778f21ff3..fef24b46afc9f6c70e4c3bcf5afb9745b944647c 100644
--- a/externals/iem/iem_spec2/src/spec2_1p1z_freq~.c
+++ b/externals/iem/iem_spec2/src/spec2_1p1z_freq~.c
@@ -463,9 +463,9 @@ static void spec2_1p1z_freq_tilde_dsp(t_spec2_1p1z_freq_tilde *x, t_signal **sp)
   }
   
   if(n&15)
-    dsp_add(spec2_1p1z_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(spec2_1p1z_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
   else
-    dsp_add(spec2_1p1z_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(spec2_1p1z_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void spec2_1p1z_freq_tilde_free(t_spec2_1p1z_freq_tilde *x)
diff --git a/externals/iem/iem_spec2/src/spec2_1p1z_time~.c b/externals/iem/iem_spec2/src/spec2_1p1z_time~.c
index 852ea990853091e6347c382d1b87082c4651791f..196f709139914f95fcaa67ea48bfcd52a76be4be 100644
--- a/externals/iem/iem_spec2/src/spec2_1p1z_time~.c
+++ b/externals/iem/iem_spec2/src/spec2_1p1z_time~.c
@@ -174,9 +174,9 @@ static void spec2_1p1z_time_tilde_dsp(t_spec2_1p1z_time_tilde *x, t_signal **sp)
     x->x_begmem_back = x->x_begmem_forw + n +1;
   }
   if(n&15)
-    dsp_add(spec2_1p1z_time_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(spec2_1p1z_time_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
   else
-    dsp_add(spec2_1p1z_time_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(spec2_1p1z_time_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *spec2_1p1z_time_tilde_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/iem/iem_spec2/src/spec2_abs~.c b/externals/iem/iem_spec2/src/spec2_abs~.c
index 521b0e0f92b2356c6c6743a847064a0aea4edf58..ebae0277da4e91b613041dfaec14d9b305da8d67 100644
--- a/externals/iem/iem_spec2/src/spec2_abs~.c
+++ b/externals/iem/iem_spec2/src/spec2_abs~.c
@@ -68,9 +68,9 @@ static void spec2_abs_tilde_dsp(t_spec2_abs_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_abs_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+    dsp_add(spec2_abs_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_abs_tilde_perf16, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+    dsp_add(spec2_abs_tilde_perf16, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_abs_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_add_scalar~.c b/externals/iem/iem_spec2/src/spec2_add_scalar~.c
index 219baeefc589f1c22799fbb2d1e75001ef5fa970..78a3987142ac6cb756c036a09de3c1bbf3889ef3 100644
--- a/externals/iem/iem_spec2/src/spec2_add_scalar~.c
+++ b/externals/iem/iem_spec2/src/spec2_add_scalar~.c
@@ -74,9 +74,9 @@ static void spec2_add_scalar_tilde_dsp(t_spec2_add_scalar_tilde *x, t_signal **s
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_add_scalar_tilde_perform, 3, sp[0]->s_vec, x, n);
+    dsp_add(spec2_add_scalar_tilde_perform, 3, sp[0]->s_vec, x, (t_int)n);
   else
-    dsp_add(spec2_add_scalar_tilde_perf16, 3, sp[0]->s_vec, x, n);
+    dsp_add(spec2_add_scalar_tilde_perf16, 3, sp[0]->s_vec, x, (t_int)n);
 }
 
 static void *spec2_add_scalar_tilde_new(t_floatarg f)
diff --git a/externals/iem/iem_spec2/src/spec2_add~.c b/externals/iem/iem_spec2/src/spec2_add~.c
index cfb7249f6b8825b34f3261bb4aeb2c88690eadcb..297a86c301c339a798623b89bfaa5ba5acc3d981 100644
--- a/externals/iem/iem_spec2/src/spec2_add~.c
+++ b/externals/iem/iem_spec2/src/spec2_add~.c
@@ -71,9 +71,9 @@ static void spec2_add_tilde_dsp(t_spec2_add_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_add_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_add_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_add_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_add_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
 }
 
 static void *spec2_add_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_block_delay~.c b/externals/iem/iem_spec2/src/spec2_block_delay~.c
index 5c52b28638c812841288034c554a2d505b9bbc72..57e3d08e83a5cdbca664bd2c5148cadfe5d02282 100644
--- a/externals/iem/iem_spec2/src/spec2_block_delay~.c
+++ b/externals/iem/iem_spec2/src/spec2_block_delay~.c
@@ -125,9 +125,9 @@ static void spec2_block_delay_tilde_dsp(t_spec2_block_delay_tilde *x, t_signal *
     x->x_blocksize = n;
   }
   if(n&15)
-    dsp_add(spec2_block_delay_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(spec2_block_delay_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
   else
-    dsp_add(spec2_block_delay_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(spec2_block_delay_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *spec2_block_delay_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_clip_max~.c b/externals/iem/iem_spec2/src/spec2_clip_max~.c
index 2aebcdc64e92108af223baa19ed8452df89f2776..026663472181aebda3f98784c7a073a3987b67b5 100644
--- a/externals/iem/iem_spec2/src/spec2_clip_max~.c
+++ b/externals/iem/iem_spec2/src/spec2_clip_max~.c
@@ -138,9 +138,9 @@ static void spec2_clip_max_tilde_dsp(t_spec2_clip_max_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_clip_max_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_clip_max_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_clip_max_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_clip_max_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
 }
 
 static void *spec2_clip_max_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_clip_min~.c b/externals/iem/iem_spec2/src/spec2_clip_min~.c
index ccdbf12cb4ae9add83e07359f69a73243fceb017..fd6bd46fe0ce2115ce886632cb7d6c58573b8820 100644
--- a/externals/iem/iem_spec2/src/spec2_clip_min~.c
+++ b/externals/iem/iem_spec2/src/spec2_clip_min~.c
@@ -138,9 +138,9 @@ static void spec2_clip_min_tilde_dsp(t_spec2_clip_min_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_clip_min_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_clip_min_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_clip_min_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_clip_min_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
 }
 
 static void *spec2_clip_min_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_dbtopow~.c b/externals/iem/iem_spec2/src/spec2_dbtopow~.c
index e780af45b5afb09fd4a1cf8c14a2abbbf335593b..a33f31fd758035231d8d24a4020aeb9a38b3a2f1 100644
--- a/externals/iem/iem_spec2/src/spec2_dbtopow~.c
+++ b/externals/iem/iem_spec2/src/spec2_dbtopow~.c
@@ -45,7 +45,7 @@ static void spec2_dbtopow_tilde_dsp(t_spec2_dbtopow_tilde *x, t_signal **sp)
 {
   int n = (sp[0]->s_n)/2;
   
-  dsp_add(spec2_dbtopow_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+  dsp_add(spec2_dbtopow_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_dbtopow_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_dbtorms~.c b/externals/iem/iem_spec2/src/spec2_dbtorms~.c
index b89ff9b491aaeffb12158b2f7edabd75b3adf22b..af0ed685b28267f32b50f47309cc4ff31e0b3919 100644
--- a/externals/iem/iem_spec2/src/spec2_dbtorms~.c
+++ b/externals/iem/iem_spec2/src/spec2_dbtorms~.c
@@ -45,7 +45,7 @@ static void spec2_dbtorms_tilde_dsp(t_spec2_dbtorms_tilde *x, t_signal **sp)
 {
   int n = (sp[0]->s_n)/2;
   
-  dsp_add(spec2_dbtorms_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+  dsp_add(spec2_dbtorms_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_dbtorms_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_matrix_bundle_stat~.c b/externals/iem/iem_spec2/src/spec2_matrix_bundle_stat~.c
index b4efea449d783276efd34b813bad1feabc165c3f..78d9502845b99463d769be67f029000fce8c67ba 100644
--- a/externals/iem/iem_spec2/src/spec2_matrix_bundle_stat~.c
+++ b/externals/iem/iem_spec2/src/spec2_matrix_bundle_stat~.c
@@ -219,9 +219,9 @@ static void spec2_matrix_bundle_stat_tilde_dsp(t_spec2_matrix_bundle_stat_tilde
   
   n = sp[0]->s_n/2;
   if(n&7)
-    dsp_add(spec2_matrix_bundle_stat_tilde_perform, 2, x, n);
+    dsp_add(spec2_matrix_bundle_stat_tilde_perform, 2, x, (t_int)n);
   else
-    dsp_add(spec2_matrix_bundle_stat_tilde_perf8, 2, x, n);
+    dsp_add(spec2_matrix_bundle_stat_tilde_perf8, 2, x, (t_int)n);
 }
 
 
diff --git a/externals/iem/iem_spec2/src/spec2_mul_scalar~.c b/externals/iem/iem_spec2/src/spec2_mul_scalar~.c
index 3ff5a7e52d7144d55c6710f4098345fd486615de..6ae9bd9faad567cfbee4b1dd2b665cca657bfc1f 100644
--- a/externals/iem/iem_spec2/src/spec2_mul_scalar~.c
+++ b/externals/iem/iem_spec2/src/spec2_mul_scalar~.c
@@ -73,9 +73,9 @@ static void spec2_mul_scalar_tilde_dsp(t_spec2_mul_scalar_tilde *x, t_signal **s
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_mul_scalar_tilde_perform, 3, sp[0]->s_vec, x, n);
+    dsp_add(spec2_mul_scalar_tilde_perform, 3, sp[0]->s_vec, x, (t_int)n);
   else
-    dsp_add(spec2_mul_scalar_tilde_perf16, 3, sp[0]->s_vec, x, n);
+    dsp_add(spec2_mul_scalar_tilde_perf16, 3, sp[0]->s_vec, x, (t_int)n);
 }
 
 static void *spec2_mul_scalar_tilde_new(t_floatarg f)
diff --git a/externals/iem/iem_spec2/src/spec2_mul~.c b/externals/iem/iem_spec2/src/spec2_mul~.c
index 97b8605a5920441fd40a5c93e0abc87735b98bf8..58bd2dd0d61006bda14fd6c4ed2761a27ebc403d 100644
--- a/externals/iem/iem_spec2/src/spec2_mul~.c
+++ b/externals/iem/iem_spec2/src/spec2_mul~.c
@@ -70,9 +70,9 @@ static void spec2_mul_tilde_dsp(t_spec2_mul_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_mul_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_mul_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_mul_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_mul_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
 }
 
 static void *spec2_mul_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_powtodb~.c b/externals/iem/iem_spec2/src/spec2_powtodb~.c
index d9fa7cba500d0a45071b91c1e589cb4c4d9a3db8..8224c25252836e339328d82a581b9a5a09c7d2cd 100644
--- a/externals/iem/iem_spec2/src/spec2_powtodb~.c
+++ b/externals/iem/iem_spec2/src/spec2_powtodb~.c
@@ -44,7 +44,7 @@ static void spec2_powtodb_tilde_dsp(t_spec2_powtodb_tilde *x, t_signal **sp)
 {
   int n = (sp[0]->s_n)/2;
   
-  dsp_add(spec2_powtodb_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+  dsp_add(spec2_powtodb_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_powtodb_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_rmstodb~.c b/externals/iem/iem_spec2/src/spec2_rmstodb~.c
index 0bba8e3b93a140425362a29dfd119076a0b6319f..9dfa93573bbc8e186517c79fb646a487162c452d 100644
--- a/externals/iem/iem_spec2/src/spec2_rmstodb~.c
+++ b/externals/iem/iem_spec2/src/spec2_rmstodb~.c
@@ -45,7 +45,7 @@ static void spec2_rmstodb_tilde_dsp(t_spec2_rmstodb_tilde *x, t_signal **sp)
 {
   int n = (sp[0]->s_n)/2;
   
-  dsp_add(spec2_rmstodb_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+  dsp_add(spec2_rmstodb_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_rmstodb_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_shift~.c b/externals/iem/iem_spec2/src/spec2_shift~.c
index de3471e6b585f9b4799fe4bc51bce4dec89599c2..9876f44331a26565848b64cbfe51ee9beba3de53 100644
--- a/externals/iem/iem_spec2/src/spec2_shift~.c
+++ b/externals/iem/iem_spec2/src/spec2_shift~.c
@@ -76,7 +76,7 @@ static void spec2_shift_tilde_dsp(t_spec2_shift_tilde *x, t_signal **sp)
     x->x_spec = (t_float *)resizebytes(x->x_spec, (x->x_blocksize+1)*sizeof(t_float), (n+1)*sizeof(t_float));
     x->x_blocksize = n;
   }
-  dsp_add(spec2_shift_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+  dsp_add(spec2_shift_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *spec2_shift_tilde_new(t_floatarg add)
diff --git a/externals/iem/iem_spec2/src/spec2_sqrt~.c b/externals/iem/iem_spec2/src/spec2_sqrt~.c
index 6f25ee133e03b5cb55a4507c7a396c743655bcf5..98cd0a5b6c68a36ac46a287045d7a66256240796 100644
--- a/externals/iem/iem_spec2/src/spec2_sqrt~.c
+++ b/externals/iem/iem_spec2/src/spec2_sqrt~.c
@@ -49,7 +49,7 @@ static void spec2_sqrt_tilde_dsp(t_spec2_sqrt_tilde *x, t_signal **sp)
 {
   int n = (sp[0]->s_n)/2;
   
-  dsp_add(spec2_sqrt_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+  dsp_add(spec2_sqrt_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_sqrt_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_stretch~.c b/externals/iem/iem_spec2/src/spec2_stretch~.c
index 9d060af5e6c0c91be62230dc02233757549e0b38..ef00e5b50fb486a2317f573d17362bef6c6dcd82 100644
--- a/externals/iem/iem_spec2/src/spec2_stretch~.c
+++ b/externals/iem/iem_spec2/src/spec2_stretch~.c
@@ -72,7 +72,7 @@ static void spec2_stretch_tilde_dsp(t_spec2_stretch_tilde *x, t_signal **sp)
     x->x_spec = (t_float *)resizebytes(x->x_spec, (x->x_blocksize+1)*sizeof(t_float), (n+1)*sizeof(t_float));
     x->x_blocksize = n;
   }
-  dsp_add(spec2_stretch_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+  dsp_add(spec2_stretch_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *spec2_stretch_tilde_new(t_floatarg mul)
diff --git a/externals/iem/iem_spec2/src/spec2_sub~.c b/externals/iem/iem_spec2/src/spec2_sub~.c
index b972d4fd01b165bed6bbcdd9efe13eecf44cfe9d..b5ff9ca5280163f05c18917e9a333f336b79261e 100644
--- a/externals/iem/iem_spec2/src/spec2_sub~.c
+++ b/externals/iem/iem_spec2/src/spec2_sub~.c
@@ -70,9 +70,9 @@ static void spec2_sub_tilde_dsp(t_spec2_sub_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_sub_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_sub_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_sub_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, n);
+    dsp_add(spec2_sub_tilde_perf16, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)n);
 }
 
 static void *spec2_sub_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_sum~.c b/externals/iem/iem_spec2/src/spec2_sum~.c
index 796447de7f9ecfb1f809f70e825baca2371741f7..ad656bd4abe7f8d6e57c86ba121fb12480da088e 100644
--- a/externals/iem/iem_spec2/src/spec2_sum~.c
+++ b/externals/iem/iem_spec2/src/spec2_sum~.c
@@ -96,9 +96,9 @@ static void spec2_sum_tilde_dsp(t_spec2_sum_tilde *x, t_signal **sp)
   int n = (sp[0]->s_n)/2;
   
   if(n&15)
-    dsp_add(spec2_sum_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+    dsp_add(spec2_sum_tilde_perform, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
   else
-    dsp_add(spec2_sum_tilde_perf16, 3, sp[0]->s_vec, sp[0]->s_vec, n);
+    dsp_add(spec2_sum_tilde_perf16, 3, sp[0]->s_vec, sp[0]->s_vec, (t_int)n);
 }
 
 static void *spec2_sum_tilde_new(void)
diff --git a/externals/iem/iem_spec2/src/spec2_tab_conv~.c b/externals/iem/iem_spec2/src/spec2_tab_conv~.c
index 98059209756ace0211b3ab1e413a639bdecf9a9c..6bb7baf6958058edb2e6ffd2d1544a552f2ebfd1 100644
--- a/externals/iem/iem_spec2/src/spec2_tab_conv~.c
+++ b/externals/iem/iem_spec2/src/spec2_tab_conv~.c
@@ -106,7 +106,7 @@ static void spec2_tab_conv_tilde_dsp(t_spec2_tab_conv_tilde *x, t_signal **sp)
     x->x_blocksize = n;
   }
   
-  dsp_add(spec2_tab_conv_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+  dsp_add(spec2_tab_conv_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void spec2_tab_conv_tilde_free(t_spec2_tab_conv_tilde *x)
diff --git a/externals/iem/iem_spec2/src/spec2_tabreceive_enable~.c b/externals/iem/iem_spec2/src/spec2_tabreceive_enable~.c
index e9f0eb06d1c213f5fbe464c9c0297f22554fb0d8..4a22eb36dadceff0b4f340baea27789473180fbb 100644
--- a/externals/iem/iem_spec2/src/spec2_tabreceive_enable~.c
+++ b/externals/iem/iem_spec2/src/spec2_tabreceive_enable~.c
@@ -124,8 +124,11 @@ static void spec2_tabreceive_enable_tilde_dsp(t_spec2_tabreceive_enable_tilde *x
   
   if(!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
   {
-    if(*x->x_arrayname->s_name)
-      error("spec2_tabreceive_enable~: %s: no such array", x->x_arrayname->s_name);
+      if (x->x_arrayname && *x->x_arrayname->s_name)
+          pd_error(x, "spec2_tabreceive_enable~: %s: no such array",
+              x->x_arrayname->s_name);
+      else
+          pd_error(x, "spec2_tabreceive_enable~: no array name given");
   }
   else if(!iemarray_getarray(a, &vecsize, &x->x_vec))
     error("%s: bad template for spec2_tabreceive_enable~", x->x_arrayname->s_name);
@@ -137,9 +140,9 @@ static void spec2_tabreceive_enable_tilde_dsp(t_spec2_tabreceive_enable_tilde *x
       vecsize = n;
     vecsize /= 2;
     if(vecsize&15)
-      dsp_add(spec2_tabreceive_enable_tilde_perform, 3, x, sp[0]->s_vec, vecsize);
+      dsp_add(spec2_tabreceive_enable_tilde_perform, 3, x, sp[0]->s_vec, (t_int)vecsize);
     else
-      dsp_add(spec2_tabreceive_enable_tilde_perf16, 3, x, sp[0]->s_vec, vecsize);
+      dsp_add(spec2_tabreceive_enable_tilde_perf16, 3, x, sp[0]->s_vec, (t_int)vecsize);
   }
 }
 
@@ -148,6 +151,7 @@ static void *spec2_tabreceive_enable_tilde_new(t_symbol *s, int argc, t_atom *ar
   t_spec2_tabreceive_enable_tilde *x = (t_spec2_tabreceive_enable_tilde *)pd_new(spec2_tabreceive_enable_tilde_class);
   
   x->x_enable = 0;
+  x->x_arrayname = &s_;
   if((argc >= 1) && IS_A_SYMBOL(argv,0))
     x->x_arrayname = atom_getsymbolarg(0, argc, argv);
   if((argc >= 2) && IS_A_FLOAT(argv,1))
diff --git a/externals/iem/iem_spec2/src/spec2_tabreceive~.c b/externals/iem/iem_spec2/src/spec2_tabreceive~.c
index ac30b5c56eb07492d7f57f30fe124709f1f63943..dbf38f3a17c05b2be772a40f607830c1ff41f0e8 100644
--- a/externals/iem/iem_spec2/src/spec2_tabreceive~.c
+++ b/externals/iem/iem_spec2/src/spec2_tabreceive~.c
@@ -125,9 +125,9 @@ static void spec2_tabreceive_tilde_dsp(t_spec2_tabreceive_tilde *x, t_signal **s
       vecsize = n;
     vecsize /= 2;
     if(vecsize&15)
-      dsp_add(spec2_tabreceive_tilde_perform, 3, x, sp[0]->s_vec, vecsize);
+      dsp_add(spec2_tabreceive_tilde_perform, 3, x, sp[0]->s_vec, (t_int)vecsize);
     else
-      dsp_add(spec2_tabreceive_tilde_perf16, 3, x, sp[0]->s_vec, vecsize);
+      dsp_add(spec2_tabreceive_tilde_perf16, 3, x, sp[0]->s_vec, (t_int)vecsize);
   }
 }
 
diff --git a/externals/iem/iemmatrix/src/mtx_mul~.c b/externals/iem/iemmatrix/src/mtx_mul~.c
index 3f072f35bf8f4b959569a43246214da76a51e3a5..ee9ba932229d692bf8ba261061db38a55e37fe1d 100644
--- a/externals/iem/iemmatrix/src/mtx_mul~.c
+++ b/externals/iem/iemmatrix/src/mtx_mul~.c
@@ -776,10 +776,10 @@ static void matrix_multilde_dsp(t_matrix_multilde *x, t_signal **sp)
 
   if(n&7)
     {
-      dsp_add(matrix_multilde_perform, 2, x, n);
+      dsp_add(matrix_multilde_perform, 2, x, (t_int)n);
     }
   else {
-    dsp_add(matrix_multilde_perf8, 2, x, n);
+    dsp_add(matrix_multilde_perf8, 2, x, (t_int)n);
   }
 }
 
diff --git a/externals/iem16/src/del16read~.c b/externals/iem16/src/del16read~.c
index cc148a9d5452dde3be8465e7ba35e0c1ab180355..30f3ea6e0984b9bb095de90e0663af7ff1401909 100644
--- a/externals/iem16/src/del16read~.c
+++ b/externals/iem16/src/del16read~.c
@@ -88,7 +88,7 @@ static void sigdel16read_dsp(t_sigdel16read *x, t_signal **sp){
 		    0 : delwriter->x_vecsize);
     sigdel16read_16bit(x, x->x_deltime);
     dsp_add(sigdel16read_perform, 4,
-    	    sp[0]->s_vec, &delwriter->x_cspace, &x->x_delsamps, sp[0]->s_n);
+    	    sp[0]->s_vec, &delwriter->x_cspace, &x->x_delsamps, (t_int)sp[0]->s_n);
   }
   else if (*x->x_sym->s_name)
     error("delread~: %s: no such delwrite~",x->x_sym->s_name);
diff --git a/externals/iem16/src/del16write~.c b/externals/iem16/src/del16write~.c
index 56f63237b635948838e574efee7f8323650cd12f..05f3862bb287b34034b8d460db3c1ee8a90c004e 100644
--- a/externals/iem16/src/del16write~.c
+++ b/externals/iem16/src/del16write~.c
@@ -67,7 +67,7 @@ static t_int *sigdel16write_perform(t_int *w){
 static void sigdel16write_dsp(t_sigdel16write *x, t_signal **sp){
   dsp_add(sigdel16write_perform, 3, sp[0]->s_vec, &x->x_cspace, sp[0]->s_n);
   x->x_sortno = ugen_getsortno();
-  sigdel16write_checkvecsize(x, sp[0]->s_n);
+  sigdel16write_checkvecsize(x, (t_int)sp[0]->s_n);
 }
 
 static void sigdel16write_free(t_sigdel16write *x){
diff --git a/externals/iem16/src/tab16play~.c b/externals/iem16/src/tab16play~.c
index 4af5df75df82d0b10c26c2c399e3d419c01ac07a..1f5ec96325587691815848dd86fb0f6deaf2d2da 100644
--- a/externals/iem16/src/tab16play~.c
+++ b/externals/iem16/src/tab16play~.c
@@ -90,7 +90,7 @@ void tab16play_tilde_set(t_tab16play_tilde *x, t_symbol *s){
 
 static void tab16play_tilde_dsp(t_tab16play_tilde *x, t_signal **sp){
   tab16play_tilde_set(x, x->x_arrayname);
-  dsp_add(tab16play_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(tab16play_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void tab16play_tilde_list(t_tab16play_tilde *x, t_symbol *s,
diff --git a/externals/iem16/src/tab16read4~.c b/externals/iem16/src/tab16read4~.c
index c85ea0e55b2dfd0ad78d96984ced34b0134c8b59..34a4af18b3a1bb84ddfd85d75db45254dcd80140 100644
--- a/externals/iem16/src/tab16read4~.c
+++ b/externals/iem16/src/tab16read4~.c
@@ -101,7 +101,7 @@ static void tab16read4_tilde_dsp(t_tab16read4_tilde *x, t_signal **sp){
   tab16read4_tilde_set(x, x->x_arrayname);
 
   dsp_add(tab16read4_tilde_perform, 4, x,
-	  sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void tab16read4_tilde_setup(void){
diff --git a/externals/iem16/src/tab16read~.c b/externals/iem16/src/tab16read~.c
index e384bb80619cb3a81ec42f172dfaf8a8da0ac5d7..be86f093e480d78c28c8cacdb3f31e543da389cc 100644
--- a/externals/iem16/src/tab16read~.c
+++ b/externals/iem16/src/tab16read~.c
@@ -86,7 +86,7 @@ static void tab16read_tilde_dsp(t_tab16read_tilde *x, t_signal **sp){
   tab16read_tilde_set(x, x->x_arrayname);
 
   dsp_add(tab16read_tilde_perform, 4, x,
-	  sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	  sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/iem16/src/tab16receive~.c b/externals/iem16/src/tab16receive~.c
index 6eaa8d6986c343658d4e1b1c105b70439fb875d3..c0006c002bd7e3e88ace1af11eac65d6ae83fc07 100644
--- a/externals/iem16/src/tab16receive~.c
+++ b/externals/iem16/src/tab16receive~.c
@@ -54,7 +54,7 @@ static void tab16receive_dsp(t_tab16receive *x, t_signal **sp){
     int n = sp[0]->s_n;
     if (n < vecsize) vecsize = n;
     table16_usedindsp(a);
-    dsp_add(tab16receive_perform, 3, x, sp[0]->s_vec, vecsize);
+    dsp_add(tab16receive_perform, 3, x, sp[0]->s_vec, (t_int)vecsize);
   }
 }
 
diff --git a/externals/iem16/src/tab16send~.c b/externals/iem16/src/tab16send~.c
index 9e8ede54257b07bd11ac016a62fefec804928b73..65bae5a026267299c2558d2a409a54e41d9e158f 100644
--- a/externals/iem16/src/tab16send~.c
+++ b/externals/iem16/src/tab16send~.c
@@ -74,7 +74,7 @@ static void tab16send_dsp(t_tab16send *x, t_signal **sp){
     if (x->x_graphcount > ticksper) x->x_graphcount = ticksper;
     if (n < vecsize) vecsize = n;
     table16_usedindsp(a);
-    dsp_add(tab16send_perform, 3, x, sp[0]->s_vec, vecsize);
+    dsp_add(tab16send_perform, 3, x, sp[0]->s_vec, (t_int)vecsize);
   }
 }
 
diff --git a/externals/iem16/src/tab16write~.c b/externals/iem16/src/tab16write~.c
index f88574311a0f8b1c1123375a99e0a656fabeaafb..edcc37add09d2cefa3a37406853845b8b2105422 100644
--- a/externals/iem16/src/tab16write~.c
+++ b/externals/iem16/src/tab16write~.c
@@ -78,7 +78,7 @@ void tab16write_tilde_set(t_tab16write_tilde *x, t_symbol *s){
 
 static void tab16write_tilde_dsp(t_tab16write_tilde *x, t_signal **sp){
   tab16write_tilde_set(x, x->x_arrayname);
-  dsp_add(tab16write_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(tab16write_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void tab16write_tilde_bang(t_tab16write_tilde *x){
diff --git a/externals/iem16/src/vd16~.c b/externals/iem16/src/vd16~.c
index 7a85eefb06d225faef3b734e635dbe60bac012e8..16744ea020a73da6ff3271299f317a5efd5e4dc3 100644
--- a/externals/iem16/src/vd16~.c
+++ b/externals/iem16/src/vd16~.c
@@ -92,7 +92,7 @@ static void sig16vd_dsp(t_sig16vd *x, t_signal **sp){
 		    0 : delwriter->x_vecsize);
     dsp_add(sig16vd_perform, 5,
     	    sp[0]->s_vec, sp[1]->s_vec,
-	    &delwriter->x_cspace, x, sp[0]->s_n);
+	    &delwriter->x_cspace, x, (t_int)sp[0]->s_n);
   }
   else error("vd~: %s: no such delwrite~",x->x_sym->s_name);
 }
diff --git a/externals/iemlib/iem_mp3/src/mp3play~.c b/externals/iemlib/iem_mp3/src/mp3play~.c
index 5658b238e7027c8d6d81e5768d95b830b9c613c1..d4c342a442ee338513b978da06b562e04864337d 100644
--- a/externals/iemlib/iem_mp3/src/mp3play~.c
+++ b/externals/iemlib/iem_mp3/src/mp3play~.c
@@ -3758,7 +3758,7 @@ static void mp3play_tilde_dsp(t_mp3play_tilde *x, t_signal **sp)
 {
     x->obj_sr = (int)(sp[0]->s_sr);
     x->obj_n = (int)(sp[0]->s_n);
-    dsp_add(mp3play_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(mp3play_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/iemlib/iem_t3_lib/src/t3_line~.c b/externals/iemlib/iem_t3_lib/src/t3_line~.c
index 92878c63c6b79450742791cc77ca19131617db97..d825cc940449dfc30dc11a401d620bb061ea9666 100644
--- a/externals/iemlib/iem_t3_lib/src/t3_line~.c
+++ b/externals/iemlib/iem_t3_lib/src/t3_line~.c
@@ -231,7 +231,7 @@ static void t3_line_tilde_dsp(t_t3_line_tilde *x, t_signal **sp)
     *trans++ = val;
   x->x_ms2samps = 0.001*(double)sp[0]->s_sr;
   x->x_ticks2ms = (double)x->x_n / x->x_ms2samps;
-  dsp_add(t3_line_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(t3_line_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void t3_line_tilde_free(t_t3_line_tilde *x)
diff --git a/externals/iemlib/iem_t3_lib/src/t3_sig~.c b/externals/iemlib/iem_t3_lib/src/t3_sig~.c
index fdbb5e8f60846d8c2fb149bce46081994b48d88d..188864dfd2a74b5b9045753de9d55560046a080f 100644
--- a/externals/iemlib/iem_t3_lib/src/t3_sig~.c
+++ b/externals/iemlib/iem_t3_lib/src/t3_sig~.c
@@ -154,9 +154,9 @@ static void t3_sig_tilde_dsp(t_t3_sig_tilde *x, t_signal **sp)
     *trans++ = val;
   
   if((sp[0]->s_n)&7)
-    dsp_add(t3_sig_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(t3_sig_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
   else
-    dsp_add(t3_sig_tilde_perf8, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(t3_sig_tilde_perf8, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void t3_sig_tilde_free(t_t3_sig_tilde *x)
diff --git a/externals/iemlib/iemlib1/src/FIR~.c b/externals/iemlib/iemlib1/src/FIR~.c
index e3dd3739e869ea25cb8be8e26e9f4bd948398d23..00ff2b725035fe6541b7f913ddc9c8ed440f8a7f 100644
--- a/externals/iemlib/iemlib1/src/FIR~.c
+++ b/externals/iemlib/iemlib1/src/FIR~.c
@@ -141,7 +141,7 @@ void FIR_tilde_set(t_FIR_tilde *x, t_symbol *table_name, t_floatarg forder)
 static void FIR_tilde_dsp(t_FIR_tilde *x, t_signal **sp)
 {
   FIR_tilde_set(x, x->x_table_name, x->x_fir_order);
-  dsp_add(FIR_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(FIR_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *FIR_tilde_new(t_symbol *array_name, t_floatarg forder)
diff --git a/externals/iemlib/iemlib1/src/filter~.c b/externals/iemlib/iemlib1/src/filter~.c
index 62ebcdbd7b79a62fc84423fe9645cba09eb56d88..30be3ca0fee5d1017aeafc174cb9047730c1aa88 100644
--- a/externals/iemlib/iemlib1/src/filter~.c
+++ b/externals/iemlib/iemlib1/src/filter~.c
@@ -1178,16 +1178,16 @@ static void filter_tilde_dsp(t_filter_tilde *x, t_signal **sp)
     if(x->x_para.dp.filter_function_is_first_order)
     {
       if(n&7)
-        dsp_add(filter_tilde_dp_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_dp_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
       else
-        dsp_add(filter_tilde_dp_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_dp_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
     }
     else
     {
       if(n&7)
-        dsp_add(filter_tilde_dp_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_dp_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
       else
-        dsp_add(filter_tilde_dp_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_dp_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
     }
   }
   else
@@ -1221,16 +1221,16 @@ static void filter_tilde_dsp(t_filter_tilde *x, t_signal **sp)
     if(x->x_para.sp.filter_function_is_first_order)
     {
       if(n&7)
-        dsp_add(filter_tilde_sp_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_sp_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
       else
-        dsp_add(filter_tilde_sp_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_sp_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
     }
     else
     {
       if(n&7)
-        dsp_add(filter_tilde_sp_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_sp_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
       else
-        dsp_add(filter_tilde_sp_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+        dsp_add(filter_tilde_sp_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
     }
   }
 }
diff --git a/externals/iemlib/iemlib1/src/hml_shelf~.c b/externals/iemlib/iemlib1/src/hml_shelf~.c
index 4727d25d90d63cc6779ffdb2753e9d17cefb0ca6..69c59c48b7cc657f32994cd0748b84b885abab82 100644
--- a/externals/iemlib/iemlib1/src/hml_shelf~.c
+++ b/externals/iemlib/iemlib1/src/hml_shelf~.c
@@ -457,9 +457,9 @@ static void hml_shelf_tilde_dsp(t_hml_shelf_tilde *x, t_signal **sp)
   x->ticks = i;
   x->rcp_ticks = 1.0f / (t_float)i;
   if(n&7)
-    dsp_add(hml_shelf_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(hml_shelf_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
   else
-    dsp_add(hml_shelf_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(hml_shelf_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *hml_shelf_tilde_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/iemlib/iemlib1/src/iem_cot4~.c b/externals/iemlib/iemlib1/src/iem_cot4~.c
index 2951193c6866061a16c6c15ebfe4496760924f0d..7587132d40c012623498dc749a54b9dd197061b5 100644
--- a/externals/iemlib/iemlib1/src/iem_cot4~.c
+++ b/externals/iemlib/iemlib1/src/iem_cot4~.c
@@ -121,7 +121,7 @@ static t_int *iem_cot4_tilde_perform(t_int *w)
 static void iem_cot4_tilde_dsp(t_iem_cot4_tilde *x, t_signal **sp)
 {
   x->x_sr = 2.0f / (t_float)sp[0]->s_sr;
-  dsp_add(iem_cot4_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(iem_cot4_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void iem_cot4_tilde_maketable(void)
diff --git a/externals/iemlib/iemlib1/src/iem_delay~.c b/externals/iemlib/iemlib1/src/iem_delay~.c
index d08e3c471835631d2741a18a95b10ad125268699..2ef2173a5ef2f31e57e97766f274ad842b78c7cc 100644
--- a/externals/iemlib/iemlib1/src/iem_delay~.c
+++ b/externals/iemlib/iemlib1/src/iem_delay~.c
@@ -151,9 +151,9 @@ static void iem_delay_tilde_dsp(t_iem_delay_tilde *x, t_signal **sp)
   }
   
   if(blocksize&7)
-    dsp_add(iem_delay_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, blocksize);
+    dsp_add(iem_delay_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)blocksize);
   else
-    dsp_add(iem_delay_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, blocksize);
+    dsp_add(iem_delay_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)blocksize);
 }
 
 static void *iem_delay_tilde_new(t_floatarg max_delay_ms, t_floatarg current_delay_ms)
diff --git a/externals/iemlib/iemlib1/src/iem_pow4~.c b/externals/iemlib/iemlib1/src/iem_pow4~.c
index 70b32ceb24de21fe9b683ecfa3cf03e799443bbf..7a934b673061a05b45432130802db6b17ecc1a7a 100644
--- a/externals/iemlib/iemlib1/src/iem_pow4~.c
+++ b/externals/iemlib/iemlib1/src/iem_pow4~.c
@@ -64,7 +64,7 @@ static t_int *iem_pow4_tilde_perform(t_int *w)
 
 static void iem_pow4_tilde_dsp(t_iem_pow4_tilde *x, t_signal **sp)
 {
-  dsp_add(iem_pow4_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(iem_pow4_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *iem_pow4_tilde_new(t_floatarg f)
diff --git a/externals/iemlib/iemlib1/src/iem_sqrt4~.c b/externals/iemlib/iemlib1/src/iem_sqrt4~.c
index 21a599b8a326cb184db0ca8f07419542fc9a2a4b..88275fe9f96bd57c6c17977b3125198d0d25601f 100644
--- a/externals/iemlib/iemlib1/src/iem_sqrt4~.c
+++ b/externals/iemlib/iemlib1/src/iem_sqrt4~.c
@@ -59,7 +59,7 @@ static t_int *iem_sqrt4_tilde_perform(t_int *w)
 
 static void iem_sqrt4_tilde_dsp(t_iem_sqrt4_tilde *x, t_signal **sp)
 {
-  dsp_add(iem_sqrt4_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(iem_sqrt4_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void iem_sqrt4_tilde_init(void)
diff --git a/externals/iemlib/iemlib1/src/lp1_t~.c b/externals/iemlib/iemlib1/src/lp1_t~.c
index 9db41ac3db32eb37bc2844f4b943b8303732dbc3..e29e4faddc68d331acb5c2dfdd1b68fc02bfc3c1 100644
--- a/externals/iemlib/iemlib1/src/lp1_t~.c
+++ b/externals/iemlib/iemlib1/src/lp1_t~.c
@@ -162,9 +162,9 @@ static void lp1_t_tilde_dsp(t_lp1_t_tilde *x, t_signal **sp)
     x->c1 = exp((x->sr)/x->cur_t);
   x->c0 = 1.0 - x->c1;
   if(n&7)
-    dsp_add(lp1_t_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(lp1_t_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
   else
-    dsp_add(lp1_t_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(lp1_t_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *lp1_t_tilde_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/iemlib/iemlib1/src/mov_avrg_kern~.c b/externals/iemlib/iemlib1/src/mov_avrg_kern~.c
index 04755ffb591ad145e80c9adbc0f4c8eeebcd248c..058fa0499ba1e6dfa19bf764da580bc6bcfc2d5f 100644
--- a/externals/iemlib/iemlib1/src/mov_avrg_kern~.c
+++ b/externals/iemlib/iemlib1/src/mov_avrg_kern~.c
@@ -101,7 +101,7 @@ static void mov_avrg_kern_tilde_dsp(t_mov_avrg_kern_tilde *x, t_signal **sp)
   x->x_counter = x->x_nsamps;
   x->x_wn1 = 0.0;
   x->x_a0 = 1.0/(double)(x->x_nsamps);
-  dsp_add(mov_avrg_kern_tilde_perform, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, x, sp[0]->s_n);
+  dsp_add(mov_avrg_kern_tilde_perform, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *mov_avrg_kern_tilde_new(t_floatarg mstime)
diff --git a/externals/iemlib/iemlib1/src/para_bp2~.c b/externals/iemlib/iemlib1/src/para_bp2~.c
index e25368fe3bcb26422dfdd6c30d8be52ab994a696..4d1d20a3246d57dff8684336c9838f90e90b73d3 100644
--- a/externals/iemlib/iemlib1/src/para_bp2~.c
+++ b/externals/iemlib/iemlib1/src/para_bp2~.c
@@ -330,9 +330,9 @@ static void para_bp2_tilde_dsp(t_para_bp2_tilde *x, t_signal **sp)
     x->cur_l = co/si;
   }
   if(n&7)
-    dsp_add(para_bp2_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(para_bp2_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
   else
-    dsp_add(para_bp2_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, n);
+    dsp_add(para_bp2_tilde_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)n);
 }
 
 static void *para_bp2_tilde_new(t_symbol *s, int argc, t_atom *argv)
diff --git a/externals/iemlib/iemlib1/src/peakenv_hold~.c b/externals/iemlib/iemlib1/src/peakenv_hold~.c
index c2a58244be9f9e78adc23a9948e1120c8f092bef..e6f8880febaf3e3add5a37051d0d9dfaa8af9c31 100644
--- a/externals/iemlib/iemlib1/src/peakenv_hold~.c
+++ b/externals/iemlib/iemlib1/src/peakenv_hold~.c
@@ -91,7 +91,7 @@ static void peakenv_hold_tilde_dsp(t_peakenv_hold_tilde *x, t_signal **sp)
   x->x_sr = (double)sp[0]->s_sr;
   peakenv_hold_tilde_ft1(x, x->x_holdtime);
   peakenv_hold_tilde_ft2(x, x->x_releasetime);
-  dsp_add(peakenv_hold_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(peakenv_hold_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *peakenv_hold_tilde_new(t_float t_hold, t_float t_rel)
diff --git a/externals/iemlib/iemlib1/src/peakenv~.c b/externals/iemlib/iemlib1/src/peakenv~.c
index d515f6986414d9a596785aaa1826bbc9b97fad90..1c85372c46214427d606e89f380b436c43dd7c73 100644
--- a/externals/iemlib/iemlib1/src/peakenv~.c
+++ b/externals/iemlib/iemlib1/src/peakenv~.c
@@ -66,7 +66,7 @@ static void peakenv_tilde_dsp(t_peakenv_tilde *x, t_signal **sp)
 {
   x->x_sr = (double)sp[0]->s_sr;
   peakenv_tilde_ft1(x, x->x_releasetime);
-  dsp_add(peakenv_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(peakenv_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *peakenv_tilde_new(t_floatarg f)
diff --git a/externals/iemlib/iemlib1/src/prvu~.c b/externals/iemlib/iemlib1/src/prvu~.c
index f7bae03929c97bfe574145189cd340dd7720e654..0d966f9274bce8bde1abe594f4c6fefb13042d97 100644
--- a/externals/iemlib/iemlib1/src/prvu~.c
+++ b/externals/iemlib/iemlib1/src/prvu~.c
@@ -136,7 +136,7 @@ static void prvu_tilde_dsp(t_prvu_tilde *x, t_signal **sp)
 {
   x->x_sr = 0.001*(t_float)sp[0]->s_sr;
   x->x_rcp = 1.0/(x->x_sr*x->x_metro_time);
-  dsp_add(prvu_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(prvu_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
   clock_delay(x->x_clock_metro, x->x_metro_time);
 }
 
diff --git a/externals/iemlib/iemlib1/src/pvu~.c b/externals/iemlib/iemlib1/src/pvu~.c
index 7aae0b4dd69e375f78c23ede6e64e35e6f8b1dc0..be929288de82274408157fa06b5b046b4aac2f05 100644
--- a/externals/iemlib/iemlib1/src/pvu~.c
+++ b/externals/iemlib/iemlib1/src/pvu~.c
@@ -110,7 +110,7 @@ static t_int *pvu_tilde_perform(t_int *w)
 
 static void pvu_tilde_dsp(t_pvu_tilde *x, t_signal **sp)
 {
-  dsp_add(pvu_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(pvu_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
   clock_delay(x->x_clock, x->x_metro_time);
 }
 
diff --git a/externals/iemlib/iemlib1/src/rvu~.c b/externals/iemlib/iemlib1/src/rvu~.c
index 539ee63198b377425a4a1e74080078b24225dec3..da3cdf6e4ff689aaeb3a1bc9c5c295c50b8d7511 100644
--- a/externals/iemlib/iemlib1/src/rvu~.c
+++ b/externals/iemlib/iemlib1/src/rvu~.c
@@ -102,7 +102,7 @@ static void rvu_tilde_dsp(t_rvu_tilde *x, t_signal **sp)
 {
   x->x_sr = 0.001*(t_float)sp[0]->s_sr;
   x->x_rcp = 1.0/(x->x_sr*x->x_metro_time);
-  dsp_add(rvu_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(rvu_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
   clock_delay(x->x_clock_metro, x->x_metro_time);
 }
 
diff --git a/externals/iemlib/iemlib1/src/sin_freq~.c b/externals/iemlib/iemlib1/src/sin_freq~.c
index 093806c58809476d675d96f48c1e0547f0a02197..436d665ab70f8eb24f012e15d939198082f14a62 100644
--- a/externals/iemlib/iemlib1/src/sin_freq~.c
+++ b/externals/iemlib/iemlib1/src/sin_freq~.c
@@ -63,7 +63,7 @@ static t_int *sin_freq_tilde_perform(t_int *w)
 static void sin_freq_tilde_dsp(t_sin_freq_tilde *x, t_signal **sp)
 {
   x->x_sr = (t_sample)sp[0]->s_sr;
-  dsp_add(sin_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(sin_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *sin_freq_tilde_new(void)
diff --git a/externals/iemlib/iemlib1/src/sin_phase~.c b/externals/iemlib/iemlib1/src/sin_phase~.c
index 9684cd7b9072e4abb715aaec9f8b5d908ae966bb..9c281a720ca71e654e0d9b9337579514b8b692c2 100644
--- a/externals/iemlib/iemlib1/src/sin_phase~.c
+++ b/externals/iemlib/iemlib1/src/sin_phase~.c
@@ -89,7 +89,7 @@ static t_int *sin_phase_tilde_perform(t_int *w)
 
 static void sin_phase_tilde_dsp(t_sin_phase_tilde *x, t_signal **sp)
 {
-  dsp_add(sin_phase_tilde_perform, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, x, sp[0]->s_n);
+  dsp_add(sin_phase_tilde_perform, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *sin_phase_tilde_new(void)
diff --git a/externals/iemlib/iemlib1/src/sparse_FIR~.c b/externals/iemlib/iemlib1/src/sparse_FIR~.c
index 893e36c2a654156df19358e18d8744e716d58922..4ef520d8b32a3bc908c279da6873e82c5d99770e 100644
--- a/externals/iemlib/iemlib1/src/sparse_FIR~.c
+++ b/externals/iemlib/iemlib1/src/sparse_FIR~.c
@@ -221,7 +221,7 @@ static void sparse_FIR_tilde_order(t_sparse_FIR_tilde *x, t_floatarg fn)
 
 static void sparse_FIR_tilde_dsp(t_sparse_FIR_tilde *x, t_signal **sp)
 {
-  dsp_add(sparse_FIR_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(sparse_FIR_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *sparse_FIR_tilde_new(t_floatarg fn)
diff --git a/externals/iemlib/iemlib1/src/vcf_filter~.c b/externals/iemlib/iemlib1/src/vcf_filter~.c
index f4a78f5da25b52ff79e3295cf4a29c15f5bdd03a..3541e4f19424033962fdb3c08b7075beffc063f7 100644
--- a/externals/iemlib/iemlib1/src/vcf_filter~.c
+++ b/externals/iemlib/iemlib1/src/vcf_filter~.c
@@ -282,20 +282,20 @@ static void vcf_filter_tilde_dsp(t_vcf_filter_tilde *x, t_signal **sp)
 {
   if(!strcmp(x->x_filtname,"bp2"))
     dsp_add(vcf_filter_tilde_perform_bp2, 6, sp[0]->s_vec, sp[1]->s_vec, 
-    sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+    sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
   else if(!strcmp(x->x_filtname,"rbp2"))
     dsp_add(vcf_filter_tilde_perform_rbp2, 6, sp[0]->s_vec, sp[1]->s_vec, 
-    sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+    sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
   else if(!strcmp(x->x_filtname,"lp2"))
     dsp_add(vcf_filter_tilde_perform_lp2, 6, sp[0]->s_vec, sp[1]->s_vec,
-    sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+    sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
   else if(!strcmp(x->x_filtname,"hp2"))
     dsp_add(vcf_filter_tilde_perform_hp2, 6, sp[0]->s_vec, sp[1]->s_vec,
-    sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+    sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
   else
   {
     dsp_add(vcf_filter_tilde_perform_snafu, 6, sp[0]->s_vec, sp[1]->s_vec,
-      sp[2]->s_vec, sp[3]->s_vec, x, sp[0]->s_n);
+      sp[2]->s_vec, sp[3]->s_vec, x, (t_int)sp[0]->s_n);
     post("vcf_filter~-Error: 1. initial-arguments: <sym> kind: lp2, bp2, rbp2, hp2!");
   }
 }
diff --git a/externals/iemlib/iemlib2/src/LFO_noise~.c b/externals/iemlib/iemlib2/src/LFO_noise~.c
index a5774c8bb210808757447209c5d0233b0a303a00..aad4a135fb5112a330406f96a72fdb72e92ceaf5 100644
--- a/externals/iemlib/iemlib2/src/LFO_noise~.c
+++ b/externals/iemlib/iemlib2/src/LFO_noise~.c
@@ -107,7 +107,7 @@ static void LFO_noise_tilde_float(t_LFO_noise_tilde *x, t_floatarg freq)
 static void LFO_noise_tilde_dsp(t_LFO_noise_tilde *x, t_signal **sp)
 {
   x->x_fact = 2.0f / sp[0]->s_sr;
-  dsp_add(LFO_noise_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(LFO_noise_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 void LFO_noise_tilde_setup(void)
diff --git a/externals/iemlib/iemlib2/src/fade~.c b/externals/iemlib/iemlib2/src/fade~.c
index 1087b0b09e4c02716081f2bee583b5b6af2e15fd..5b29593f3d94cfeb6819c7212825c8a18cbffadd 100644
--- a/externals/iemlib/iemlib2/src/fade~.c
+++ b/externals/iemlib/iemlib2/src/fade~.c
@@ -107,7 +107,7 @@ static t_int *fade_tilde_perform(t_int *w)
 
 static void fade_tilde_dsp(t_fade_tilde *x, t_signal **sp)
 {
-  dsp_add(fade_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(fade_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void fade_tilde_maketable(void)
diff --git a/externals/iemlib/iemlib2/src/m2f~.c b/externals/iemlib/iemlib2/src/m2f~.c
index 3cecbc845a375fb6842bee32b7cbaa5469b24df3..89da053a3b13902e9f2ef4140616ea871497e78e 100644
--- a/externals/iemlib/iemlib2/src/m2f~.c
+++ b/externals/iemlib/iemlib2/src/m2f~.c
@@ -87,7 +87,7 @@ static t_int *m2f_tilde_perform(t_int *w)
 
 static void m2f_tilde_dsp(t_m2f_tilde *x, t_signal **sp)
 {
-  dsp_add(m2f_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(m2f_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void m2f_tilde_maketable(void)
diff --git a/externals/lyonpotpourri/adsr~.c b/externals/lyonpotpourri/adsr~.c
index 467187dd978cfad856265984cb5e678a9dc6252b..8f684f23e49514f6309a1fac92e5312414cd573c 100755
--- a/externals/lyonpotpourri/adsr~.c
+++ b/externals/lyonpotpourri/adsr~.c
@@ -326,7 +326,7 @@ void adsr_dsp(t_adsr *x, t_signal **sp)
 		x->ebreak3 = x->asamps+x->dsamps+x->ssamps;
 		x->counter = 0;	
 	}
-	dsp_add(adsr_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+	dsp_add(adsr_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/lyonpotpourri/arrayfilt~.c b/externals/lyonpotpourri/arrayfilt~.c
index 01f17fc7add921df67827daf014d93baa24fee41..d347bc9ddc702320007e5b0ddb51866d01b6adae 100755
--- a/externals/lyonpotpourri/arrayfilt~.c
+++ b/externals/lyonpotpourri/arrayfilt~.c
@@ -86,5 +86,5 @@ exit:
 void arrayfilt_dsp(t_arrayfilt *x, t_signal **sp)
 {
     dsp_add(arrayfilt_perform,6, x,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 }
diff --git a/externals/lyonpotpourri/bashfest~.c b/externals/lyonpotpourri/bashfest~.c
index 8055eced3470d91a43e119c28727b581cf0a2dfc..4069a79800dc785e2338c44c2b894ce547822bfa 100755
--- a/externals/lyonpotpourri/bashfest~.c
+++ b/externals/lyonpotpourri/bashfest~.c
@@ -273,6 +273,8 @@ void *bashfest_new(t_symbol *msg, short argc, t_atom *argv)
 	
     /* argument list: buffer name, work buffer duration, latency in samples, number of overlaps */
     atom_arg_getsym(&x->wavename,0,argc,argv);
+    /* We probably don't want to segfault when instantiating with no args, so */
+    if (!x->wavename) x->wavename = &s_;
     atom_arg_getfloat(&x->work_buffer_size,1,argc,argv);
     tmpfloat = DEFAULT_LATENCY;
     atom_arg_getfloat(&tmpfloat,2,argc,argv);
@@ -437,7 +439,7 @@ void bashfest_setbuf(t_bashfest *x, t_symbol *wavename)
         garray_usedindsp(a);
         x->b_valid = 1;
     }
-    
+
 }
 
 
@@ -1310,7 +1312,7 @@ void bashfest_dsp_free(t_bashfest *x)
 void bashfest_dsp(t_bashfest *x, t_signal **sp)
 {
     bashfest_setbuf(x, x->wavename);
-	
+
     if( x->hosed ){
         error("bashfest~ needs a valid buffer");
     }
@@ -1331,10 +1333,10 @@ void bashfest_dsp(t_bashfest *x, t_signal **sp)
 	
     if(x->hosed){
         dsp_add(bashfest_perform_hosed, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);	
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     } else {
         dsp_add(bashfest_perform, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);		
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 /*
diff --git a/externals/lyonpotpourri/buffet~.c b/externals/lyonpotpourri/buffet~.c
index f85240ae89ea8a103e8a6375a15ce909c7bcab94..b29955d527a0d3b1d984ce7626b8ccb673061ece 100755
--- a/externals/lyonpotpourri/buffet~.c
+++ b/externals/lyonpotpourri/buffet~.c
@@ -1081,6 +1081,8 @@ void *buffet_new(t_symbol *msg, short argc, t_atom *argv)
             OBJECT_NAME);
     }
     atom_arg_getsym(&x->wavename,0,argc,argv);
+    /* Let's not crash just yet... */
+    if (!x->wavename) x->wavename = &s_;
     atom_arg_getfloat(&x->minframes,1,argc,argv);
     atom_arg_getfloat(&x->maxframes,2,argc,argv);
     if(!x->minframes)
@@ -2155,7 +2157,7 @@ void buffet_dsp(t_buffet *x, t_signal **sp)
 	}
 	
 	dsp_add(buffet_perform, 3, x,
-			sp[0]->s_vec, sp[0]->s_n);
+			sp[0]->s_vec, (t_int)sp[0]->s_n);
 	
 }
 
diff --git a/externals/lyonpotpourri/bvplay~.c b/externals/lyonpotpourri/bvplay~.c
index 0f759f51300a4fcbcc9b6ef560416761be11be94..906b43023b183eaab2f9550980e671bfdfcddd0d 100755
--- a/externals/lyonpotpourri/bvplay~.c
+++ b/externals/lyonpotpourri/bvplay~.c
@@ -283,14 +283,14 @@ void bvplay_dsp(t_bvplay *x, t_signal **sp)
     	x->taper_frames = x->R * x->taper_dur;
     }
     // Pd buffers always mono ...
-    dsp_add(bvplay_perform_mono, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(bvplay_perform_mono, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     /*
     if( x->wavebuf->b_nchans == 1 ) {
     	// post("initiating mono processor");
-   	 	dsp_add(bvplay_perform_mono, 3, x, sp[0]->s_vec, sp[0]->s_n);
+   	 	dsp_add(bvplay_perform_mono, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     } else if( x->wavebuf->b_nchans == 2) {
     	// post("initiating stereo processor");
-   	 	dsp_add(bvplay_perform_stereo,4,x,sp[0]->s_vec,sp[1]->s_vec,sp[0]->s_n);
+   	 	dsp_add(bvplay_perform_stereo,4,x,sp[0]->s_vec,sp[1]->s_vec,(t_int)sp[0]->s_n);
     } else {
      	post("%s: bad channel spec: %d, cannot initiate dsp code",OBJECT_NAME,  x->wavebuf->b_nchans);
     }*/
diff --git a/externals/lyonpotpourri/cartopol~.c b/externals/lyonpotpourri/cartopol~.c
index 094eb208d1f860a6820a134372f73adf7163c82e..0e53e2a0fa321ef4b1153d5c1df7712342a6cb99 100755
--- a/externals/lyonpotpourri/cartopol~.c
+++ b/externals/lyonpotpourri/cartopol~.c
@@ -59,5 +59,5 @@ t_int *cartopol_perform(t_int *w)
 void cartopol_dsp(t_cartopol *x, t_signal **sp)
 {
     dsp_add(cartopol_perform,6, x,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 }
diff --git a/externals/lyonpotpourri/channel~.c b/externals/lyonpotpourri/channel~.c
index b281944d4446aa975f71596513e962e9f6446bb8..d2776a74af7f08c628f8b9f5308fa3655df1d671 100755
--- a/externals/lyonpotpourri/channel~.c
+++ b/externals/lyonpotpourri/channel~.c
@@ -79,6 +79,6 @@ t_int *channel_perform(t_int *w)
 
 void channel_dsp(t_channel *x, t_signal **sp)
 {
-    dsp_add(channel_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(channel_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/chopper~.c b/externals/lyonpotpourri/chopper~.c
index 71550cc4f719d695e45ea2b9223d9ec4912bcc1b..1d570140c5d6537b44b5eee2f105f02e20bf482a 100755
--- a/externals/lyonpotpourri/chopper~.c
+++ b/externals/lyonpotpourri/chopper~.c
@@ -897,7 +897,7 @@ void chopper_dsp(t_chopper *x, t_signal **sp)
     return;
   }
 
-	dsp_add(chopper_pd_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+	dsp_add(chopper_pd_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/lyonpotpourri/click2bang~.c b/externals/lyonpotpourri/click2bang~.c
index a95a6e995d8961d2e429917b56f1662595baf7ab..784cfdb18a201b93cffce4ee06a99e43f4e05bd7 100755
--- a/externals/lyonpotpourri/click2bang~.c
+++ b/externals/lyonpotpourri/click2bang~.c
@@ -59,6 +59,6 @@ t_int *click2bang_perform(t_int *w)
 
 void click2bang_dsp(t_click2bang *x, t_signal **sp)
 {
-    dsp_add(click2bang_perform, 3, x, sp[0]->s_vec,sp[0]->s_n);
+    dsp_add(click2bang_perform, 3, x, sp[0]->s_vec,(t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/click2float~.c b/externals/lyonpotpourri/click2float~.c
index f5671cdd65922b7c18dab1231ffe3593244e32a9..ff407b8f469cf4d5f7346e60ce25aea69db9052a 100755
--- a/externals/lyonpotpourri/click2float~.c
+++ b/externals/lyonpotpourri/click2float~.c
@@ -63,6 +63,6 @@ t_int *click2float_perform(t_int *w)
 
 void click2float_dsp(t_click2float *x, t_signal **sp)
 {
-    dsp_add(click2float_perform, 3, x, sp[0]->s_vec,sp[0]->s_n);
+    dsp_add(click2float_perform, 3, x, sp[0]->s_vec,(t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/clickhold~.c b/externals/lyonpotpourri/clickhold~.c
index 279dac57325fe91d3615a6dc5ceac683e1594eb8..2bff7021efa50eb452d2c23086e3d97bfb1eb110 100755
--- a/externals/lyonpotpourri/clickhold~.c
+++ b/externals/lyonpotpourri/clickhold~.c
@@ -56,6 +56,6 @@ t_int *clickhold_perform(t_int *w)
 
 void clickhold_dsp(t_clickhold *x, t_signal **sp)
 {
-    dsp_add(clickhold_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(clickhold_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/click~.c b/externals/lyonpotpourri/click~.c
index bea1af97e0e2f2a0bac289049de3a4e35a1d6e70..31cf0c19891d016186fac14f0941a45d12d4ddb3 100755
--- a/externals/lyonpotpourri/click~.c
+++ b/externals/lyonpotpourri/click~.c
@@ -73,6 +73,6 @@ t_int *click_perform(t_int *w)
 
 void click_dsp(t_click *x, t_signal **sp)
 {
-    dsp_add(click_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(click_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/counter~.c b/externals/lyonpotpourri/counter~.c
index 2c529b4309de0fc9284b91d004789863a5add578..ea685822cef98bb09f5a999ada111090d7d6a07f 100755
--- a/externals/lyonpotpourri/counter~.c
+++ b/externals/lyonpotpourri/counter~.c
@@ -123,5 +123,5 @@ static t_int *counter_perform(t_int *w)
 
 static void counter_dsp(t_counter *x, t_signal **sp)
 {
-    dsp_add(counter_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(counter_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
diff --git a/externals/lyonpotpourri/distortion~.c b/externals/lyonpotpourri/distortion~.c
index 498989740ffb316b66d4b0a6f30750565a520191..441f3b9b2df5a60d159e3ae698645396a61ec101 100755
--- a/externals/lyonpotpourri/distortion~.c
+++ b/externals/lyonpotpourri/distortion~.c
@@ -220,7 +220,7 @@ void distortion_mute(t_distortion *x, t_floatarg f) {
 void distortion_dsp(t_distortion *x, t_signal **sp)
 {
 
-	dsp_add(distortion2_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,sp[0]->s_n);
+	dsp_add(distortion2_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,(t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/lyonpotpourri/dynss~.c b/externals/lyonpotpourri/dynss~.c
index 70e9c9a39b56dadd9c661302895933695ea19730..c34af99518926efe24ecf1b4c6a506f8d015e653 100755
--- a/externals/lyonpotpourri/dynss~.c
+++ b/externals/lyonpotpourri/dynss~.c
@@ -320,5 +320,5 @@ void dynss_dsp(t_dynss *x, t_signal **sp)
 	if(x->srate != sp[0]->s_sr) {
 		x->srate = sp[0]->s_sr;
 	}
-	dsp_add(dynss_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,sp[0]->s_n);
+	dsp_add(dynss_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,(t_int)sp[0]->s_n);
 }
diff --git a/externals/lyonpotpourri/expflam~.c b/externals/lyonpotpourri/expflam~.c
index 78bd5593fd95bc90274f68946bac9d4743072cc8..b7db2409d0943b92583e5a160c1b660c204030db 100755
--- a/externals/lyonpotpourri/expflam~.c
+++ b/externals/lyonpotpourri/expflam~.c
@@ -1 +1 @@
-#include "MSPd.h"


static t_class *expflam_class;

#define OBJECT_NAME "expflam~"

#define MAXFLAMS (64)
#define MAXATTACKS (128)
#define STOPGAIN (.001)


typedef struct
{
	int attack_count; // number of triggers per flam event
	float *attack_times; // trigger times in seconds
	int *attack_points; // trigger times in samples
	int fdex; // current flam
	float gainatten; // attenuation factor
	float amp; // current amp
	int atks;// number of attacks per flam
	long counter; // internal clock
	short active; // flag that flam is turned on


} t_flam;

typedef struct _expflam
{

	t_object x_obj;
	float x_f;
	t_flam *flams; // contain flams
	float start_delay; // initial flam delay
	float end_delay;// end delay
	float atten; // attenuation factor
	float slope;// slope of curve
	int atks;// number of attacks per flam
	float sr;
	float *trigvec; // hold input vector (to protect from memory sharing)
	float *bypvec; // ditto for flamgate vector
	short flamall; // flag to put a flam on everything
	short bypass; // flag to copy input to output without flam
	short flamgate_connected; // flag that a flamgate logical signal is connected to inlet 2

} t_expflam;


void *expflam_new(void);
t_int *expflam_perform(t_int *w);
void expflam_dsp(t_expflam *x, t_signal **sp);
void expflam_setflam(t_expflam *x, t_symbol *msg, short argc, t_atom *argv);
void expflam_free(t_expflam *x);
void expflam_assist(t_expflam *x, void *b, long msg, long arg, char *dst);
void expflam_flamall(t_expflam *x, t_floatarg tog);
void expflam_bypass(t_expflam *x, t_floatarg tog);


void expflam_tilde_setup(void)
{
expflam_class = class_new(gensym("expflam~"),(t_newmethod)expflam_new,
(t_method)expflam_free, sizeof(t_expflam), 0, 0);
	CLASS_MAINSIGNALIN(expflam_class,t_expflam, x_f );
	class_addmethod(expflam_class,(t_method)expflam_dsp,gensym("dsp"),A_CANT,0);
	class_addmethod(expflam_class,(t_method)expflam_setflam,gensym("setflam"),A_GIMME,0);
	class_addmethod(expflam_class,(t_method)expflam_flamall,gensym("flamall"),A_FLOAT,0);
	class_addmethod(expflam_class,(t_method)expflam_bypass,gensym("bypass"),A_FLOAT,0);
    potpourri_announce(OBJECT_NAME);
}

void expflam_flamall(t_expflam *x, t_floatarg tog)
{
	x->flamall = (short) tog;
}

void expflam_bypass(t_expflam *x, t_floatarg tog)
{
	x->bypass = (short) tog;
}

void expflam_assist(t_expflam *x, void *b, long msg, long arg, char *dst)
{
  if (msg==1) {
    switch (arg) {
    	case 0: sprintf(dst,"(signal) Trigger Click"); break;
		case 1: sprintf(dst,"(signal) Flam Gate"); break;
    }
  } else if (msg==2) {
    sprintf(dst,"(signal) Flam Clicks");
  }
}

void *expflam_new(void)
{
	int i;
	t_expflam *x = (t_expflam *)pd_new(expflam_class);
	inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
	outlet_new(&x->x_obj, gensym("signal"));
	x->flams = (t_flam *) calloc(MAXFLAMS, sizeof(t_flam));   
	for(i = 0; i < MAXFLAMS; i++){
	  	x->flams[i].attack_times = (float *) calloc(MAXATTACKS, sizeof(float));
	  	x->flams[i].attack_points = (int *) calloc(MAXATTACKS, sizeof(int));
	}
	   
	x->trigvec = malloc(8192 * sizeof(float)); // maximum vector size
	x->bypvec = malloc(8192 * sizeof(float)); // maximum vector size
    x->sr = sys_getsr();
    x->start_delay = .025;
    x->end_delay = 0.1;
    x->slope = -3.0;
    x->atks = 8;
    x->atten = 0.8;
	x->bypass = 0;
	x->flamall = 0;
	
    return x;
}

void expflam_setflam(t_expflam *x, t_symbol *msg, short argc, t_atom *argv)
{
  if( argc != 5 ){
    error("%s: setflam format: startdelay enddelay attacks slope gainatten",OBJECT_NAME);
    return;
  }
  x->start_delay = atom_getfloatarg(0,argc,argv) * 0.001;
  x->end_delay = atom_getfloatarg(1,argc,argv) * 0.001;
  x->atks = (int) atom_getfloatarg(2,argc,argv);
  x->slope = atom_getfloatarg(3,argc,argv);
  x->atten = atom_getfloatarg(4,argc,argv);
  if(x->slope == 0)
  	x->slope = .0001;
  if(x->start_delay <= 0)
  	x->start_delay = .00001;
  if(x->end_delay <= 0)
  	x->end_delay = .00001;
  if(x->atks < 2)
  	x->atks = 2;
  if(x->atks > MAXATTACKS){
  	post("%s: exceeded maximum of %d attacks",OBJECT_NAME, MAXATTACKS);
  	x->atks = MAXATTACKS;
  }
}

void expflam_free(t_expflam *x)
{
int i;

	free(x->trigvec);
	free(x->bypvec);
  for(i = 0; i < MAXFLAMS; i++){
  	free(x->flams[i].attack_times);
  	free(x->flams[i].attack_points);
  }
  free(x->flams);
	
}

t_int *expflam_perform(t_int *w)
{
	int i,j,k;
	t_expflam *x = (t_expflam *) (w[1]);
	float *in_vec = (t_float *)(w[2]);
	float *in2_vec = (t_float *)(w[3]);
	float *out_vec = (t_float *)(w[4]);
	int n = (int) w[5];
	
	float *trigvec = x->trigvec;
	float *flamgate_vec = x->bypvec;
	t_flam *flams = x->flams;
	int atks = x->atks;
	float atten = x->atten;
	float slope = x->slope;
	float start_delay = x->start_delay;
	float end_delay = x->end_delay;
	float sr = x->sr;
	short flamgate_connected = x->flamgate_connected;
	short flamall = x->flamall;
	
	/* in flamgate mode copy input to output and return */
	if(x->bypass){
		memcpy( (void *)out_vec, (void *)in_vec, n * sizeof(float) );
		return (w+6);
	}
	/* copy input vectors */
	memcpy( (void *)flamgate_vec, (void *)in2_vec, n * sizeof(float) );// the order of these mcopies matters
	memcpy( (void *)trigvec, (void *)in_vec, n * sizeof(float) );
	memcpy( (void *)out_vec, (void *)in_vec, n * sizeof(float) );// copy triggers to output for a start
		
	/* look for activation triggers */
	for(i = 0; i < n; i++){
		if(trigvec[i] && (flamgate_vec[i] || ! flamgate_connected || flamall ) ){	
//		post("triggered with t %f and flamgate %f",trigvec[i],flamgate_vec[i]);
			j = 0;  
			while(flams[j].active && j < MAXFLAMS){
				++j;
			}
			if(j >= MAXFLAMS){
				post("too many flams");				
			}
			else {
//				post("inserting flam at location %d",j);
				flams[j].active = 1;
				flams[j].attack_times[0] = 0.0;
				flams[j].attack_points[0] = i;
				flams[j].gainatten = atten;
				flams[j].amp = trigvec[i];
				flams[j].counter = 0;
				flams[j].fdex = 0;
				flams[j].atks = atks;
				
				for(k = 1; k < atks; k++){
					flams[j].attack_times[k] = start_delay + (end_delay - start_delay) * ((1.0 - exp((float)k * slope/((float)atks-1.0)))/(1.0-exp(slope)));
					flams[j].attack_times[k] += flams[j].attack_times[k - 1];
					flams[j].attack_points[k] = flams[j].attack_times[k] * sr + i;
				}						
			}
		}
	}
	/* now iterate through active flams */
	for( i = 0; i < n; i++){
		for(j = 0; j < MAXFLAMS; j++){
			if(flams[j].active){
				if(flams[j].counter >= flams[j].attack_points[flams[j].fdex]){
					out_vec[i] += flams[j].amp;
					flams[j].amp *= flams[j].gainatten;
					if( flams[j].amp <= STOPGAIN ){
						flams[j].active = 0;
					}
					flams[j].fdex++;
					if(flams[j].fdex >= flams[j].atks){
						flams[j].active = 0;
					}
				}
				flams[j].counter++;
			}
		}
	}

	return w+6;
}

void expflam_dsp(t_expflam *x, t_signal **sp)
{

	x->flamgate_connected = 1;
	dsp_add(expflam_perform, 5, x,
			sp[0]->s_vec, 
			sp[1]->s_vec,
			sp[2]->s_vec,  
			sp[0]->s_n
	);
}

\ No newline at end of file
+#include "MSPd.h"


static t_class *expflam_class;

#define OBJECT_NAME "expflam~"

#define MAXFLAMS (64)
#define MAXATTACKS (128)
#define STOPGAIN (.001)


typedef struct
{
	int attack_count; // number of triggers per flam event
	float *attack_times; // trigger times in seconds
	int *attack_points; // trigger times in samples
	int fdex; // current flam
	float gainatten; // attenuation factor
	float amp; // current amp
	int atks;// number of attacks per flam
	long counter; // internal clock
	short active; // flag that flam is turned on


} t_flam;

typedef struct _expflam
{

	t_object x_obj;
	float x_f;
	t_flam *flams; // contain flams
	float start_delay; // initial flam delay
	float end_delay;// end delay
	float atten; // attenuation factor
	float slope;// slope of curve
	int atks;// number of attacks per flam
	float sr;
	float *trigvec; // hold input vector (to protect from memory sharing)
	float *bypvec; // ditto for flamgate vector
	short flamall; // flag to put a flam on everything
	short bypass; // flag to copy input to output without flam
	short flamgate_connected; // flag that a flamgate logical signal is connected to inlet 2

} t_expflam;


void *expflam_new(void);
t_int *expflam_perform(t_int *w);
void expflam_dsp(t_expflam *x, t_signal **sp);
void expflam_setflam(t_expflam *x, t_symbol *msg, short argc, t_atom *argv);
void expflam_free(t_expflam *x);
void expflam_assist(t_expflam *x, void *b, long msg, long arg, char *dst);
void expflam_flamall(t_expflam *x, t_floatarg tog);
void expflam_bypass(t_expflam *x, t_floatarg tog);


void expflam_tilde_setup(void)
{
expflam_class = class_new(gensym("expflam~"),(t_newmethod)expflam_new,
(t_method)expflam_free, sizeof(t_expflam), 0, 0);
	CLASS_MAINSIGNALIN(expflam_class,t_expflam, x_f );
	class_addmethod(expflam_class,(t_method)expflam_dsp,gensym("dsp"),A_CANT,0);
	class_addmethod(expflam_class,(t_method)expflam_setflam,gensym("setflam"),A_GIMME,0);
	class_addmethod(expflam_class,(t_method)expflam_flamall,gensym("flamall"),A_FLOAT,0);
	class_addmethod(expflam_class,(t_method)expflam_bypass,gensym("bypass"),A_FLOAT,0);
    potpourri_announce(OBJECT_NAME);
}

void expflam_flamall(t_expflam *x, t_floatarg tog)
{
	x->flamall = (short) tog;
}

void expflam_bypass(t_expflam *x, t_floatarg tog)
{
	x->bypass = (short) tog;
}

void expflam_assist(t_expflam *x, void *b, long msg, long arg, char *dst)
{
  if (msg==1) {
    switch (arg) {
    	case 0: sprintf(dst,"(signal) Trigger Click"); break;
		case 1: sprintf(dst,"(signal) Flam Gate"); break;
    }
  } else if (msg==2) {
    sprintf(dst,"(signal) Flam Clicks");
  }
}

void *expflam_new(void)
{
	int i;
	t_expflam *x = (t_expflam *)pd_new(expflam_class);
	inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
	outlet_new(&x->x_obj, gensym("signal"));
	x->flams = (t_flam *) calloc(MAXFLAMS, sizeof(t_flam));   
	for(i = 0; i < MAXFLAMS; i++){
	  	x->flams[i].attack_times = (float *) calloc(MAXATTACKS, sizeof(float));
	  	x->flams[i].attack_points = (int *) calloc(MAXATTACKS, sizeof(int));
	}
	   
	x->trigvec = malloc(8192 * sizeof(float)); // maximum vector size
	x->bypvec = malloc(8192 * sizeof(float)); // maximum vector size
    x->sr = sys_getsr();
    x->start_delay = .025;
    x->end_delay = 0.1;
    x->slope = -3.0;
    x->atks = 8;
    x->atten = 0.8;
	x->bypass = 0;
	x->flamall = 0;
	
    return x;
}

void expflam_setflam(t_expflam *x, t_symbol *msg, short argc, t_atom *argv)
{
  if( argc != 5 ){
    error("%s: setflam format: startdelay enddelay attacks slope gainatten",OBJECT_NAME);
    return;
  }
  x->start_delay = atom_getfloatarg(0,argc,argv) * 0.001;
  x->end_delay = atom_getfloatarg(1,argc,argv) * 0.001;
  x->atks = (int) atom_getfloatarg(2,argc,argv);
  x->slope = atom_getfloatarg(3,argc,argv);
  x->atten = atom_getfloatarg(4,argc,argv);
  if(x->slope == 0)
  	x->slope = .0001;
  if(x->start_delay <= 0)
  	x->start_delay = .00001;
  if(x->end_delay <= 0)
  	x->end_delay = .00001;
  if(x->atks < 2)
  	x->atks = 2;
  if(x->atks > MAXATTACKS){
  	post("%s: exceeded maximum of %d attacks",OBJECT_NAME, MAXATTACKS);
  	x->atks = MAXATTACKS;
  }
}

void expflam_free(t_expflam *x)
{
int i;

	free(x->trigvec);
	free(x->bypvec);
  for(i = 0; i < MAXFLAMS; i++){
  	free(x->flams[i].attack_times);
  	free(x->flams[i].attack_points);
  }
  free(x->flams);
	
}

t_int *expflam_perform(t_int *w)
{
	int i,j,k;
	t_expflam *x = (t_expflam *) (w[1]);
	float *in_vec = (t_float *)(w[2]);
	float *in2_vec = (t_float *)(w[3]);
	float *out_vec = (t_float *)(w[4]);
	int n = (int) w[5];
	
	float *trigvec = x->trigvec;
	float *flamgate_vec = x->bypvec;
	t_flam *flams = x->flams;
	int atks = x->atks;
	float atten = x->atten;
	float slope = x->slope;
	float start_delay = x->start_delay;
	float end_delay = x->end_delay;
	float sr = x->sr;
	short flamgate_connected = x->flamgate_connected;
	short flamall = x->flamall;
	
	/* in flamgate mode copy input to output and return */
	if(x->bypass){
		memcpy( (void *)out_vec, (void *)in_vec, n * sizeof(float) );
		return (w+6);
	}
	/* copy input vectors */
	memcpy( (void *)flamgate_vec, (void *)in2_vec, n * sizeof(float) );// the order of these mcopies matters
	memcpy( (void *)trigvec, (void *)in_vec, n * sizeof(float) );
	memcpy( (void *)out_vec, (void *)in_vec, n * sizeof(float) );// copy triggers to output for a start
		
	/* look for activation triggers */
	for(i = 0; i < n; i++){
		if(trigvec[i] && (flamgate_vec[i] || ! flamgate_connected || flamall ) ){	
//		post("triggered with t %f and flamgate %f",trigvec[i],flamgate_vec[i]);
			j = 0;  
			while(flams[j].active && j < MAXFLAMS){
				++j;
			}
			if(j >= MAXFLAMS){
				post("too many flams");				
			}
			else {
//				post("inserting flam at location %d",j);
				flams[j].active = 1;
				flams[j].attack_times[0] = 0.0;
				flams[j].attack_points[0] = i;
				flams[j].gainatten = atten;
				flams[j].amp = trigvec[i];
				flams[j].counter = 0;
				flams[j].fdex = 0;
				flams[j].atks = atks;
				
				for(k = 1; k < atks; k++){
					flams[j].attack_times[k] = start_delay + (end_delay - start_delay) * ((1.0 - exp((float)k * slope/((float)atks-1.0)))/(1.0-exp(slope)));
					flams[j].attack_times[k] += flams[j].attack_times[k - 1];
					flams[j].attack_points[k] = flams[j].attack_times[k] * sr + i;
				}						
			}
		}
	}
	/* now iterate through active flams */
	for( i = 0; i < n; i++){
		for(j = 0; j < MAXFLAMS; j++){
			if(flams[j].active){
				if(flams[j].counter >= flams[j].attack_points[flams[j].fdex]){
					out_vec[i] += flams[j].amp;
					flams[j].amp *= flams[j].gainatten;
					if( flams[j].amp <= STOPGAIN ){
						flams[j].active = 0;
					}
					flams[j].fdex++;
					if(flams[j].fdex >= flams[j].atks){
						flams[j].active = 0;
					}
				}
				flams[j].counter++;
			}
		}
	}

	return w+6;
}

void expflam_dsp(t_expflam *x, t_signal **sp)
{

	x->flamgate_connected = 1;
	dsp_add(expflam_perform, 5, x,
			sp[0]->s_vec, 
			sp[1]->s_vec,
			sp[2]->s_vec,  
			(t_int)sp[0]->s_n
	);
}

diff --git a/externals/lyonpotpourri/flanjah~.c b/externals/lyonpotpourri/flanjah~.c
index f3c2d06a3f8e8e047cc2933bc1e7690728fac20a..501e4d64399fe516c06b6ca4f37a41d15d029b45 100755
--- a/externals/lyonpotpourri/flanjah~.c
+++ b/externals/lyonpotpourri/flanjah~.c
@@ -241,7 +241,7 @@ void flanjah_dsp(t_flanjah *x, t_signal **sp)
     }
     dsp_add(flanjah_perform, 8, x,
             sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
 }
 
 void flanjah_mute(t_flanjah *x, t_floatarg state)
diff --git a/externals/lyonpotpourri/granola~.c b/externals/lyonpotpourri/granola~.c
index adb6735b3d91b51aa282bf07725dea1b860fe2f8..0c3b81685042070847f1225b45407c7ec313cfff 100755
--- a/externals/lyonpotpourri/granola~.c
+++ b/externals/lyonpotpourri/granola~.c
@@ -325,6 +325,6 @@ t_int *granola_perform(t_int *w)
 void granola_dsp(t_granola *x, t_signal **sp)
 {
     
-    dsp_add(granola_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,  sp[0]->s_n);
+    dsp_add(granola_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/granulesf~.c b/externals/lyonpotpourri/granulesf~.c
index 63ac71b61afa38add8d40b9fe67c107833c269da..dae925c5694bc80781e02d3661f38f1222858ea6 100755
--- a/externals/lyonpotpourri/granulesf~.c
+++ b/externals/lyonpotpourri/granulesf~.c
@@ -1054,7 +1054,7 @@ void granulesf_dsp(t_granulesf *x, t_signal **sp)
 	if( x->hosed ){
 		post("You need some valid buffers");
 		dsp_add(granulesf_performhose, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 		return;
 	}
 	if( x->sr != sp[0]->s_sr){
@@ -1067,10 +1067,10 @@ void granulesf_dsp(t_granulesf *x, t_signal **sp)
 	} 
 	if(x->interpolate){
 		dsp_add(granulesf_perform, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 	} else {
 		dsp_add(granulesf_perform_no_interpolation, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 	}
 }
 
diff --git a/externals/lyonpotpourri/granule~.c b/externals/lyonpotpourri/granule~.c
index 019118df487f57c3f895f3caf00d6964de4c1b33..2bad59fa96130f7352808a71cc7d948d3ce3b617 100755
--- a/externals/lyonpotpourri/granule~.c
+++ b/externals/lyonpotpourri/granule~.c
@@ -1 +1 @@
-#include "MSPd.h"

#define MAXGRAINS (512) // just for present to get lower overhead

#define MAXSCALE (8192)
#define OBJECT_NAME "granule~"


static t_class *granule_class;


typedef struct {
    float amplitude;
    float panL;
    float panR;
    long delay; // samples to wait until event starts
    long duration;// length in samples of event
    float phase; // phase for frequency oscillator
    float ephase; // phase for envelope
    float si; // sampling increment for frequency
    float esi; // sampling increment for envelope
} t_grain;

typedef struct {
	t_word *b_samples;
	long b_frames;
	long b_nchans;
} t_pdbuffer;


typedef struct _granule
{
    
    t_object x_obj;
    float x_f;
    t_pdbuffer *wavebuf; // holds waveform samples
    t_pdbuffer *windowbuf; // holds window samples
	t_symbol *wavename; // name of waveform buffer
	t_symbol *windowname; // name of window buffer
    
	float sr; // sampling rate
	short mute;
	short hosed; // buffers are bad
	/* Global grain data*/
	long events; // number of events in a block
	long horizon; // length of block for random events
	float minfreq; // minimum frequency for a grain
	float maxfreq; // maximum frequency for a grain
	float minpan; // minimum pan for a grain
	float maxpan; // maxium pan for a grain
	float minamp; // minimum amplitude for a grain
	float maxamp; // maximum amplitude for a grain
	float mindur; // minumum duration for a grain
	float maxdur; // maximum duration for a grain
	t_grain *grains; // stores grain data
	float *pitchscale; // contains a frequency grid for pitch constraint
	int pitchsteps; // number of members in scale
	float transpose; // factor for scaling all pitches
	float pitch_deviation; // factor to adjust scaled pitches
	short steady; // toggles pulsed rhythmic activity
	float lowblock_freq; //lowest allowed frequency
	float highblock_freq;// highest allowed frequency
	float mindur_ms;//store duration in ms
	float maxdur_ms;//ditto
	float horizon_ms;//ditto
	short constrain_scale;//flag to only use bounded portion of scale rather than all of it
} t_granule;

void granule_setbuf(t_granule *x, t_symbol *wavename, t_symbol *windowname);
void *granule_new(t_symbol *msg, short argc, t_atom *argv);
t_int *granule_perform(t_int *w);
t_int *granule_performhose(t_int *w);
void granule_dsp(t_granule *x, t_signal **sp);
void granule_reload(t_granule *x);
void granule_spray(t_granule *x);
void granule_pitchspray(t_granule *x);
void granule_transpose(t_granule *x, t_floatarg t);
void granule_pitchdev(t_granule *x, t_floatarg d);
void granule_lowblock(t_granule *x, t_floatarg f);
void granule_highblock(t_granule *x, t_floatarg f);
void granule_events(t_granule *x, t_floatarg e);
float granule_boundrand(float min, float max);
void *granule_grist(t_granule *x, t_symbol *msg, short argc, t_atom *argv);
void *granule_grain(t_granule *x, t_symbol *msg, short argc, t_atom *argv);
void *granule_setscale(t_granule *x, t_symbol *msg, short argc, t_atom *argv);
void granule_info(t_granule *x);
void granule_mute(t_granule *x, t_floatarg toggle);
void granule_steady(t_granule *x, t_floatarg toggle);
void granule_constrain_scale(t_granule *x, t_floatarg toggle);
void granule_dsp_free(t_granule *x);
void granule_init(t_granule *x,short initialized);
void granule_constrain(int *index_min, int *index_max, float minfreq, float maxfreq, float *scale, int steps);

void granule_tilde_setup(void){
    granule_class = class_new(gensym("granule~"), (t_newmethod)granule_new,
                              (t_method)granule_dsp_free,sizeof(t_granule), 0,A_GIMME,0);
    CLASS_MAINSIGNALIN(granule_class, t_granule, x_f);
    class_addmethod(granule_class,(t_method)granule_dsp,gensym("dsp"),0);
    class_addmethod(granule_class,(t_method)granule_mute,gensym("mute"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_setbuf,gensym("setbuf"),A_DEFSYM,A_DEFSYM,0);
    class_addmethod(granule_class,(t_method)granule_spray,gensym("spray"),0);
    class_addmethod(granule_class,(t_method)granule_info,gensym("info"),0);
    class_addmethod(granule_class,(t_method)granule_pitchspray,gensym("pitchspray"),0);
    class_addmethod(granule_class,(t_method)granule_transpose,gensym("transpose"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_events,gensym("events"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_pitchdev,gensym("pitchdev"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_lowblock,gensym("lowblock"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_highblock,gensym("highblock"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_steady,gensym("steady"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_constrain_scale,gensym("constrain_scale"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_grist,gensym("grist"),A_GIMME,0);
    class_addmethod(granule_class,(t_method)granule_grain,gensym("grain"),A_GIMME,0);
    class_addmethod(granule_class,(t_method)granule_setscale,gensym("setscale"),A_GIMME,0);
    potpourri_announce(OBJECT_NAME);
}

void granule_constrain_scale(t_granule *x, t_floatarg toggle)
{
	x->constrain_scale = toggle;
}
void granule_lowblock(t_granule *x, t_floatarg f)
{
	if(f > 0){
		x->lowblock_freq = f;
	}
}

void granule_highblock(t_granule *x, t_floatarg f)
{
	if(f > 0){
		x->highblock_freq = f;
	}
}

void granule_pitchdev(t_granule *x, t_floatarg d)
{
	if(d < 0 ){
		error("pitch deviation must be positive");
		return;
	}
	x->pitch_deviation = d;
}

void granule_mute(t_granule *x, t_floatarg toggle)
{
	x->mute = toggle;
}

void granule_steady(t_granule *x, t_floatarg toggle)
{
	x->steady = toggle;
}

void granule_events(t_granule *x, t_floatarg e)
{
	if( e <= 0 ){
		post("events must be positive!");
		return;
	}
	x->events = e;
    //	x->steady_dur = x->horizon / (float) x->events;
}

void granule_transpose(t_granule *x, t_floatarg t)
{
	if( t <= 0 ){
		error("transpose factor must be greater than zero!");
		return;
	}
	x->transpose = t;
}

void *granule_setscale(t_granule *x, t_symbol *msg, short argc, t_atom *argv)
{
	int i;
	float *pitchscale = x->pitchscale;
	if( argc >= MAXSCALE ){
		error("%d is the maximum size scale", MAXSCALE);
		return 0;
	}
	if( argc < 2 ){
		error("there must be at least 2 members in scale");
		return 0;
	}
	for(i=0; i < argc; i++){
		pitchscale[i] = atom_getfloatarg(i,argc,argv);
	}
	x->pitchsteps = argc;
    //	post("read %d values into scale", x->pitchsteps);
    return 0;
}

void granule_constrain(int *index_min, int *index_max, float minfreq, float maxfreq, float *scale, int steps)
{
	int imax = steps - 1;
	int imin = 0;
	while(scale[imin] < minfreq && imin < imax){
		++imin;
	}
	if(imin == imax){
        //		post("could not constrain minimum index  - your grist parameters are out of range for this scale");
		*index_min = 0;
		*index_max = steps - 1;
		return;
	}
    while(scale[imax] > maxfreq && imax > 0){
		--imax;
	}
	if(imax < 1 || imax <= imin){
        //		post("could not constrain maximum index - your grist parameters are out of range for this scale");
		*index_min = 0;
		*index_max = steps - 1;
		return;
	}
	*index_min = imin;
	*index_max = imax;
}

void granule_pitchspray(t_granule *x)
{
	int i,j;
    
	long eframes = x->windowbuf->b_frames;
	long frames = x->wavebuf->b_frames;
	float sr = x->sr;
	long horizon = x->horizon; // length of block for random events
	float mindur = x->mindur;
	float maxdur = x->maxdur;
	float minfreq = x->minfreq; // minimum frequency for a grain
	float maxfreq = x->maxfreq; // maximum frequency for a grain
	float minpan = x->minpan; // minimum pan for a grain
	float maxpan = x->maxpan; // maxium pan for a grain
	float minamp = x->minamp; // minimum amplitude for a grain
	float maxamp = x->maxamp; // maximum amplitude for a grain
	float transpose = x->transpose; // pitch scalar
	float lowblock_freq = x->lowblock_freq;
	float highblock_freq = x->highblock_freq;
	short steady = x->steady;
	float pitch_deviation = x->pitch_deviation;
	float pdev = 0;
	float pdev_invert = 0;
    //	float pscale;
	float pan;
	int index_min, index_max;
	int steps = x->pitchsteps;
	float *scale = x->pitchscale;
	int windex;
	short inserted = 0;
	short constrain_scale = x->constrain_scale;
	t_grain *grains = x->grains;
    
    
	if( steps < 2 ){
		error("scale is undefined");
		return;
	}
	if( pitch_deviation ){
		pdev = 1.0 + pitch_deviation;
		pdev_invert = 1.0 / pdev;
	}
	for( i = 0; i < x->events; i++ ){
		inserted = 0;
		for(j = 0; j < MAXGRAINS; j++ ){
			if( grains[j].ephase >= eframes ){
				if(steady){
					grains[j].delay = (float)(i * horizon) / (float) x->events ;
				} else {
    				grains[j].delay = granule_boundrand(0.0,(float) horizon);
    			}
    			grains[j].duration = (long) granule_boundrand(mindur, maxdur);
    			grains[j].phase = 0.0;
    			grains[j].ephase = 0.0;
    			pan = granule_boundrand(minpan, maxpan);
    			grains[j].panL = cos(pan * PIOVERTWO);
    			grains[j].panR = sin(pan * PIOVERTWO);
    			grains[j].amplitude = granule_boundrand(minamp, maxamp);
    			grains[j].esi =  (float) eframes / (float) grains[j].duration ;
				if(constrain_scale){
					granule_constrain(&index_min,&index_max,minfreq, maxfreq, scale, steps);
					windex = (int) granule_boundrand((float)index_min, (float)index_max);
				} else {
					windex = (int) granule_boundrand(0.0, (float)(steps-1));
				}
    			grains[j].si = transpose * scale[windex] * (float) frames / sr;
    			if( pitch_deviation ){
    				grains[j].si *= granule_boundrand(pdev_invert,pdev);
    			}
    			/* must add this code to spray, and also do for high frequencies
                 */
    			if(lowblock_freq > 0.0) {
    				if(grains[j].si * (sr/frames) < lowblock_freq){
    					post("lowblock: aborted grain with %f frequency",grains[j].si * (sr/frames));
    					grains[j].ephase = eframes; // abort grain
    				}
    			}
    			if(highblock_freq > 0.0) {
    				if(grains[j].si * (sr/frames) > highblock_freq){
    					post("highblock: aborted grain with %f frequency, greater than %f",
                             grains[j].si * (sr/frames), highblock_freq);
    					grains[j].ephase = eframes; // abort grain
    				}
    			}
    			inserted = 1;
    			goto nextgrain;
    		}
		}
		if(!inserted){
			error("could not insert grain");
			return;
		}
    nextgrain: ;
	}
}

void granule_spray(t_granule *x)
{
	int i,j;
	long eframes = x->windowbuf->b_frames;
	long frames = x->wavebuf->b_frames;
	float sr = x->sr;
	long horizon = x->horizon; // length of block for random events
	float mindur = x->mindur;
	float maxdur = x->maxdur;
	float minfreq = x->minfreq; // minimum frequency for a grain
	float maxfreq = x->maxfreq; // maximum frequency for a grain
	float minpan = x->minpan; // minimum pan for a grain
	float maxpan = x->maxpan; // maxium pan for a grain
	float minamp = x->minamp; // minimum amplitude for a grain
	float maxamp = x->maxamp; // maximum amplitude for a grain
	float transpose = x->transpose; // pitch scalar
    //	float steady_dur = x->steady_dur;
	short steady = x->steady;
	float pan;
	t_grain *grains = x->grains;
	short inserted;

	for( i = 0; i < x->events; i++ ){
		inserted = 0;
		for(j = 0; j < MAXGRAINS; j++ ){
			if( grains[j].ephase >= eframes ){
				if(steady){
					grains[j].delay = (float)(i * horizon) / (float) x->events ;
				} else {
    				grains[j].delay = granule_boundrand(0.0,(float) horizon);
    			}
   				grains[j].duration = (long) granule_boundrand(mindur, maxdur);
    			grains[j].phase = 0.0;
    			grains[j].ephase = 0.0;
    			pan = granule_boundrand(minpan, maxpan);
    			grains[j].panL = cos(pan * PIOVERTWO);
    			grains[j].panR = sin(pan * PIOVERTWO);
    			grains[j].amplitude = granule_boundrand(minamp, maxamp);
    			grains[j].esi =  (float) eframes / (float) grains[j].duration ;
				grains[j].si = transpose * granule_boundrand(minfreq, maxfreq) * (float) frames / sr;
    			inserted = 1;
    			goto nextgrain;
    		}
		}
		if(! inserted){
			error("could not insert grain");
			return;
		}
    nextgrain: ;
	}
}

void *granule_grain(t_granule *x, t_symbol *msg, short argc, t_atom *argv)
{
	short inserted;
	int j;
	float duration, frequency, amplitude, pan;
	t_grain *grains;
	long eframes;
	long frames;
	float sr;

	grains = x->grains;
	eframes = x->windowbuf->b_frames;
	frames = x->wavebuf->b_frames;
	sr = x->sr;

	if(argc < 4){
		error("grain takes 4 arguments, not %d",argc);
		post("duration frequency amplitude pan");
		return 0;
	}
	duration = atom_getintarg(0,argc,argv);
	frequency = atom_getfloatarg(1,argc,argv); // in ms
	amplitude = atom_getfloatarg(2,argc,argv);
	pan = atom_getfloatarg(3,argc,argv);
	if(duration <= 0.0){
		error("illegal duration:%f",duration);
		return 0;
	}
	if(frequency <= 0.0){
		error("illegal frequency:%f",frequency);
		return 0;
	}
	if(pan < 0.0 || pan > 1.0){
		error("illegal pan:%f",pan);
		return 0;
	}
	inserted = 0;
	for(j = 0; j < MAXGRAINS; j++ ){
		if( grains[j].ephase >= eframes ){
			grains[j].delay = 0.0;// immediate deployment
			grains[j].duration = (long) (.001 * x->sr * duration);
			grains[j].phase = 0.0;
			grains[j].ephase = 0.0;
			grains[j].panL = cos(pan * PIOVERTWO);
			grains[j].panR = sin(pan * PIOVERTWO);
			grains[j].amplitude = amplitude;
			grains[j].esi =  (float) eframes / (float) grains[j].duration ;
			grains[j].si = frequency * (float) frames / sr;
			return 0;
		}
	}
	
	error("could not insert grain");
	return 0;
	
}

float granule_boundrand(float min, float max)
{
	return min + (max-min) * ((float) (rand() % RAND_MAX)/ (float) RAND_MAX);
}


void *granule_new(t_symbol *msg, short argc, t_atom *argv)
{

    t_granule *x = (t_granule *)pd_new(granule_class);
    outlet_new(&x->x_obj, gensym("signal"));
    outlet_new(&x->x_obj, gensym("signal"));
    x->wavebuf = (t_pdbuffer*)malloc(sizeof(t_pdbuffer));
    x->windowbuf = (t_pdbuffer*)malloc(sizeof(t_pdbuffer));
	srand(time(0));
    
	x->pitchscale = (float *) t_getbytes(MAXSCALE * sizeof(float));
	x->grains = (t_grain *) t_getbytes(MAXGRAINS * sizeof(t_grain));
	
    
	// default names
	x->wavename = gensym("waveform");
	x->windowname = gensym("window");
    
	/* MaxMSP bug that may soon be fixed, this does not work:
     x->wavename = atom_getsymarg(0,argc,argv);
     x->windowname = atom_getsymarg(1,argc,argv); */
    
    // apparently Pd lacks this Max/MSP bug
	x->wavename = atom_getsymbolarg(0,argc,argv);
	x->windowname = atom_getsymbolarg(1,argc,argv);

    
	x->sr = sys_getsr();
	if(! x->sr )
		x->sr = 44100;
    
	granule_init(x,0);
    
    
    return (x);
}

void granule_init(t_granule *x,short initialized)
{
	int i;
	
	if(!initialized){
		x->pitchsteps = 0; // we could predefine a 12t scale
		x->mute = 0;
		x->steady = 0;
		x->events = 10;
		x->horizon_ms = 1000;
		x->minfreq = 220.0;
		x->maxfreq = 880.0;
		x->minpan = .1;
		x->maxpan = .9;
		x->minamp = .1;
		x->maxamp = 1.0;
		x->mindur_ms = 150;
		x->maxdur_ms = 750;
		x->transpose = 1.0;
		x->pitch_deviation = 0.0;
		x->lowblock_freq = 0.0; // by default we do not block any frequencies
		x->highblock_freq = 0.0; // ditto
		x->constrain_scale = 0;
	}
	x->horizon = x->horizon_ms * .001 * x->sr;
	x->mindur = x->mindur_ms * .001 * x->sr;
	x->maxdur = x->maxdur_ms * .001 * x->sr;
	for( i = 0; i < MAXGRAINS; i++ ){ // this is what we test for a legal place to insert grain
		x->grains[i].ephase = 9999999999.0;
	}
}

void granule_info(t_granule *x)
{
	int tcount = 0;
	t_grain *grains = x->grains;
	long eframes = x->windowbuf->b_frames;
	int i;
	
	for(i = 0; i < MAXGRAINS; i++ ){
		if( grains[i].ephase < eframes )
			++tcount;
	}
	post("%d active grains", tcount);
	post("wavename %s", x->wavename->s_name);
	post("windowname %s", x->windowname->s_name);
}


void *granule_grist(t_granule *x, t_symbol *msg, short argc, t_atom *argv)
{
	if(argc < 10 ){
		error("grist takes 10 arguments:");
		post("events horizon minfreq maxfreq minpan maxpan minamp maxamp mindur maxdur");
		return 0;
	}
	x->events = atom_getintarg(0,argc,argv);
	x->horizon_ms = atom_getfloatarg(1,argc,argv);
	x->minfreq = atom_getfloatarg(2,argc,argv);
	x->maxfreq = atom_getfloatarg(3,argc,argv);
	x->minpan = atom_getfloatarg(4,argc,argv);
	x->maxpan = atom_getfloatarg(5,argc,argv);
	x->minamp = atom_getfloatarg(6,argc,argv);
	x->maxamp = atom_getfloatarg(7,argc,argv);
	x->mindur_ms = atom_getfloatarg(8,argc,argv);
	x->maxdur_ms = atom_getfloatarg(9,argc,argv);
	
	x->mindur = .001 * x->sr * x->mindur_ms ;
	x->maxdur = .001 * x->sr * x->maxdur_ms;
	x->horizon = .001 * x->sr * x->horizon_ms;
	
	if(x->minfreq < 0){
		x->minfreq *= -1.0;
	}
	if(x->maxfreq < 0){
		x->maxfreq *= -1.0;
	}
	if(x->minpan < 0.0) {
		x->minpan = 0.0;
	}
	if(x->maxpan > 1.0) {
		x->maxpan = 1.0;
	}
	if(x->events < 0){
		x->events = 0;
	}
	return 0;
}


void granule_reload(t_granule *x)
{
	granule_setbuf(x, x->wavename, x->windowname);
}


void granule_setbuf(t_granule *x, t_symbol *wavename, t_symbol *windowname)
{
    t_garray *a;
    int frames;
    
    x->hosed = 0;
    x->wavebuf->b_frames = 0;
    x->windowbuf->b_frames = 0;
    x->wavebuf->b_nchans = 1;
    x->windowbuf->b_nchans = 1;
    if (!(a = (t_garray *)pd_findbyclass(wavename, garray_class))) {
        if (*wavename->s_name) pd_error(x, "granule~: %s: no such array", wavename->s_name);
        x->hosed = 1;
    }
    else if (!garray_getfloatwords(a, &frames, &x->wavebuf->b_samples)) {
        pd_error(x, "%s: bad template for granule~", wavename->s_name);
        x->hosed = 1;
    }
    else  {
        x->wavebuf->b_frames = frames;
        garray_usedindsp(a);
    }
    
    if (!(a = (t_garray *)pd_findbyclass(windowname, garray_class))) {
        if (*wavename->s_name) pd_error(x, "granule~: %s: no such array", windowname->s_name);
        x->hosed = 1;
    }
    else if (!garray_getfloatwords(a, &frames, &x->windowbuf->b_samples)) {
        pd_error(x, "%s: bad template for granule~", windowname->s_name);
        x->hosed = 1;
    }
    else  {
        x->windowbuf->b_frames = frames;
        garray_usedindsp(a);
    }
}


t_int *granule_performhose(t_int *w)
{
    //	t_granule *x = (t_granule *) (w[1]);
	float *outputL = (t_float *)(w[3]);
	float *outputR = (t_float *)(w[4]);
	int n = (int) w[5];
	while(n--) *outputL++ = *outputR++ = 0;
	return (w+6);
}

t_int *granule_perform(t_int *w)
{
	t_granule *x = (t_granule *) (w[1]);
    //	float *in = (t_float *)(w[2]); // ignoring input
	float *outputL = (t_float *)(w[3]);
	float *outputR = (t_float *)(w[4]);
	int n = (int) w[5];

	t_pdbuffer *wavebuf = x->wavebuf;
	t_pdbuffer *windowbuf = x->windowbuf;
	t_word *wavetable = wavebuf->b_samples;
	t_word *window = windowbuf->b_samples;
	t_grain *grains = x->grains;
	float sample;
	float envelope;
	float amplitude;
	float panL, panR;
	float si;
	float esi;
	float phase;
	float ephase;
	long delay;
	long frames = wavebuf->b_frames;
	long eframes = windowbuf->b_frames;
	int i,j;
	
    
    
	/* grain parameters */
    
    
	if( x->mute ){
		while(n--) *outputL++ = *outputR++ = 0;
		return (w+6);
	}
    
    // pre-clean buffer
	for( i = 0; i < n; i++ ){
		outputL[i] = outputR[i] = 0;
	}
    
	for (j=0; j<MAXGRAINS; j++) {
        
		if(grains[j].ephase >= eframes){
			goto nextgrain;
		}
		amplitude = grains[j].amplitude;
		si =  grains[j].si;
		esi = grains[j].esi;
		phase =  grains[j].phase;
		ephase = grains[j].ephase;
		delay =  grains[j].delay;
		panL = grains[j].panL;
		panR = grains[j].panR;
        
		
		for(i = 0; i < n; i++ ){
			// ++(x->sampcount); // not really needed
			if( delay > 0 ){
				--delay;
			}
			if( delay <= 0 && ephase < eframes){
				sample = wavetable[(int)phase].w_float;
                
				envelope = amplitude * window[(int)ephase].w_float;
				sample *= envelope;
				outputL[i] += panL * sample;
				outputR[i] += panR * sample;
				phase += si;
				ephase += esi;
				while( phase >= frames )
					phase -= frames;
                
				if( ephase >= eframes ){
					grains[j].ephase = ephase;
					goto nextgrain; // must escape loop now
				}
                
			}
		}
		grains[j].phase = phase;
		grains[j].ephase = ephase;
		grains[j].delay = delay;
		
    nextgrain: ;
	}
    
	return (w+6);
    
    
}

void granule_dsp_free(t_granule *x)
{

	t_freebytes(x->grains, MAXGRAINS * sizeof(t_grain));
	t_freebytes(x->pitchscale, MAXSCALE * sizeof(float));
}

void granule_dsp(t_granule *x, t_signal **sp)
{
    
	granule_reload(x);
	
	if( x->hosed ){
		post("You need some valid buffers");
		dsp_add(granule_performhose, 5, x,
                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
		return;
	}
	if( x->sr != sp[0]->s_sr){
		x->sr = sp[0]->s_sr;
		if( !x->sr ){
			post("warning: zero sampling rate!");
			x->sr = 44100;
		}
		granule_init(x,1);
	} 
	dsp_add(granule_perform, 5, x, 
			sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
}

\ No newline at end of file
+#include "MSPd.h"

#define MAXGRAINS (512) // just for present to get lower overhead

#define MAXSCALE (8192)
#define OBJECT_NAME "granule~"


static t_class *granule_class;


typedef struct {
    float amplitude;
    float panL;
    float panR;
    long delay; // samples to wait until event starts
    long duration;// length in samples of event
    float phase; // phase for frequency oscillator
    float ephase; // phase for envelope
    float si; // sampling increment for frequency
    float esi; // sampling increment for envelope
} t_grain;

typedef struct {
	t_word *b_samples;
	long b_frames;
	long b_nchans;
} t_pdbuffer;


typedef struct _granule
{
    
    t_object x_obj;
    float x_f;
    t_pdbuffer *wavebuf; // holds waveform samples
    t_pdbuffer *windowbuf; // holds window samples
	t_symbol *wavename; // name of waveform buffer
	t_symbol *windowname; // name of window buffer
    
	float sr; // sampling rate
	short mute;
	short hosed; // buffers are bad
	/* Global grain data*/
	long events; // number of events in a block
	long horizon; // length of block for random events
	float minfreq; // minimum frequency for a grain
	float maxfreq; // maximum frequency for a grain
	float minpan; // minimum pan for a grain
	float maxpan; // maxium pan for a grain
	float minamp; // minimum amplitude for a grain
	float maxamp; // maximum amplitude for a grain
	float mindur; // minumum duration for a grain
	float maxdur; // maximum duration for a grain
	t_grain *grains; // stores grain data
	float *pitchscale; // contains a frequency grid for pitch constraint
	int pitchsteps; // number of members in scale
	float transpose; // factor for scaling all pitches
	float pitch_deviation; // factor to adjust scaled pitches
	short steady; // toggles pulsed rhythmic activity
	float lowblock_freq; //lowest allowed frequency
	float highblock_freq;// highest allowed frequency
	float mindur_ms;//store duration in ms
	float maxdur_ms;//ditto
	float horizon_ms;//ditto
	short constrain_scale;//flag to only use bounded portion of scale rather than all of it
} t_granule;

void granule_setbuf(t_granule *x, t_symbol *wavename, t_symbol *windowname);
void *granule_new(t_symbol *msg, short argc, t_atom *argv);
t_int *granule_perform(t_int *w);
t_int *granule_performhose(t_int *w);
void granule_dsp(t_granule *x, t_signal **sp);
void granule_reload(t_granule *x);
void granule_spray(t_granule *x);
void granule_pitchspray(t_granule *x);
void granule_transpose(t_granule *x, t_floatarg t);
void granule_pitchdev(t_granule *x, t_floatarg d);
void granule_lowblock(t_granule *x, t_floatarg f);
void granule_highblock(t_granule *x, t_floatarg f);
void granule_events(t_granule *x, t_floatarg e);
float granule_boundrand(float min, float max);
void *granule_grist(t_granule *x, t_symbol *msg, short argc, t_atom *argv);
void *granule_grain(t_granule *x, t_symbol *msg, short argc, t_atom *argv);
void *granule_setscale(t_granule *x, t_symbol *msg, short argc, t_atom *argv);
void granule_info(t_granule *x);
void granule_mute(t_granule *x, t_floatarg toggle);
void granule_steady(t_granule *x, t_floatarg toggle);
void granule_constrain_scale(t_granule *x, t_floatarg toggle);
void granule_dsp_free(t_granule *x);
void granule_init(t_granule *x,short initialized);
void granule_constrain(int *index_min, int *index_max, float minfreq, float maxfreq, float *scale, int steps);

void granule_tilde_setup(void){
    granule_class = class_new(gensym("granule~"), (t_newmethod)granule_new,
                              (t_method)granule_dsp_free,sizeof(t_granule), 0,A_GIMME,0);
    CLASS_MAINSIGNALIN(granule_class, t_granule, x_f);
    class_addmethod(granule_class,(t_method)granule_dsp,gensym("dsp"),0);
    class_addmethod(granule_class,(t_method)granule_mute,gensym("mute"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_setbuf,gensym("setbuf"),A_DEFSYM,A_DEFSYM,0);
    class_addmethod(granule_class,(t_method)granule_spray,gensym("spray"),0);
    class_addmethod(granule_class,(t_method)granule_info,gensym("info"),0);
    class_addmethod(granule_class,(t_method)granule_pitchspray,gensym("pitchspray"),0);
    class_addmethod(granule_class,(t_method)granule_transpose,gensym("transpose"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_events,gensym("events"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_pitchdev,gensym("pitchdev"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_lowblock,gensym("lowblock"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_highblock,gensym("highblock"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_steady,gensym("steady"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_constrain_scale,gensym("constrain_scale"),A_FLOAT,0);
    class_addmethod(granule_class,(t_method)granule_grist,gensym("grist"),A_GIMME,0);
    class_addmethod(granule_class,(t_method)granule_grain,gensym("grain"),A_GIMME,0);
    class_addmethod(granule_class,(t_method)granule_setscale,gensym("setscale"),A_GIMME,0);
    potpourri_announce(OBJECT_NAME);
}

void granule_constrain_scale(t_granule *x, t_floatarg toggle)
{
	x->constrain_scale = toggle;
}
void granule_lowblock(t_granule *x, t_floatarg f)
{
	if(f > 0){
		x->lowblock_freq = f;
	}
}

void granule_highblock(t_granule *x, t_floatarg f)
{
	if(f > 0){
		x->highblock_freq = f;
	}
}

void granule_pitchdev(t_granule *x, t_floatarg d)
{
	if(d < 0 ){
		error("pitch deviation must be positive");
		return;
	}
	x->pitch_deviation = d;
}

void granule_mute(t_granule *x, t_floatarg toggle)
{
	x->mute = toggle;
}

void granule_steady(t_granule *x, t_floatarg toggle)
{
	x->steady = toggle;
}

void granule_events(t_granule *x, t_floatarg e)
{
	if( e <= 0 ){
		post("events must be positive!");
		return;
	}
	x->events = e;
    //	x->steady_dur = x->horizon / (float) x->events;
}

void granule_transpose(t_granule *x, t_floatarg t)
{
	if( t <= 0 ){
		error("transpose factor must be greater than zero!");
		return;
	}
	x->transpose = t;
}

void *granule_setscale(t_granule *x, t_symbol *msg, short argc, t_atom *argv)
{
	int i;
	float *pitchscale = x->pitchscale;
	if( argc >= MAXSCALE ){
		error("%d is the maximum size scale", MAXSCALE);
		return 0;
	}
	if( argc < 2 ){
		error("there must be at least 2 members in scale");
		return 0;
	}
	for(i=0; i < argc; i++){
		pitchscale[i] = atom_getfloatarg(i,argc,argv);
	}
	x->pitchsteps = argc;
    //	post("read %d values into scale", x->pitchsteps);
    return 0;
}

void granule_constrain(int *index_min, int *index_max, float minfreq, float maxfreq, float *scale, int steps)
{
	int imax = steps - 1;
	int imin = 0;
	while(scale[imin] < minfreq && imin < imax){
		++imin;
	}
	if(imin == imax){
        //		post("could not constrain minimum index  - your grist parameters are out of range for this scale");
		*index_min = 0;
		*index_max = steps - 1;
		return;
	}
    while(scale[imax] > maxfreq && imax > 0){
		--imax;
	}
	if(imax < 1 || imax <= imin){
        //		post("could not constrain maximum index - your grist parameters are out of range for this scale");
		*index_min = 0;
		*index_max = steps - 1;
		return;
	}
	*index_min = imin;
	*index_max = imax;
}

void granule_pitchspray(t_granule *x)
{
	int i,j;
    
	long eframes = x->windowbuf->b_frames;
	long frames = x->wavebuf->b_frames;
	float sr = x->sr;
	long horizon = x->horizon; // length of block for random events
	float mindur = x->mindur;
	float maxdur = x->maxdur;
	float minfreq = x->minfreq; // minimum frequency for a grain
	float maxfreq = x->maxfreq; // maximum frequency for a grain
	float minpan = x->minpan; // minimum pan for a grain
	float maxpan = x->maxpan; // maxium pan for a grain
	float minamp = x->minamp; // minimum amplitude for a grain
	float maxamp = x->maxamp; // maximum amplitude for a grain
	float transpose = x->transpose; // pitch scalar
	float lowblock_freq = x->lowblock_freq;
	float highblock_freq = x->highblock_freq;
	short steady = x->steady;
	float pitch_deviation = x->pitch_deviation;
	float pdev = 0;
	float pdev_invert = 0;
    //	float pscale;
	float pan;
	int index_min, index_max;
	int steps = x->pitchsteps;
	float *scale = x->pitchscale;
	int windex;
	short inserted = 0;
	short constrain_scale = x->constrain_scale;
	t_grain *grains = x->grains;
    
    
	if( steps < 2 ){
		error("scale is undefined");
		return;
	}
	if( pitch_deviation ){
		pdev = 1.0 + pitch_deviation;
		pdev_invert = 1.0 / pdev;
	}
	for( i = 0; i < x->events; i++ ){
		inserted = 0;
		for(j = 0; j < MAXGRAINS; j++ ){
			if( grains[j].ephase >= eframes ){
				if(steady){
					grains[j].delay = (float)(i * horizon) / (float) x->events ;
				} else {
    				grains[j].delay = granule_boundrand(0.0,(float) horizon);
    			}
    			grains[j].duration = (long) granule_boundrand(mindur, maxdur);
    			grains[j].phase = 0.0;
    			grains[j].ephase = 0.0;
    			pan = granule_boundrand(minpan, maxpan);
    			grains[j].panL = cos(pan * PIOVERTWO);
    			grains[j].panR = sin(pan * PIOVERTWO);
    			grains[j].amplitude = granule_boundrand(minamp, maxamp);
    			grains[j].esi =  (float) eframes / (float) grains[j].duration ;
				if(constrain_scale){
					granule_constrain(&index_min,&index_max,minfreq, maxfreq, scale, steps);
					windex = (int) granule_boundrand((float)index_min, (float)index_max);
				} else {
					windex = (int) granule_boundrand(0.0, (float)(steps-1));
				}
    			grains[j].si = transpose * scale[windex] * (float) frames / sr;
    			if( pitch_deviation ){
    				grains[j].si *= granule_boundrand(pdev_invert,pdev);
    			}
    			/* must add this code to spray, and also do for high frequencies
                 */
    			if(lowblock_freq > 0.0) {
    				if(grains[j].si * (sr/frames) < lowblock_freq){
    					post("lowblock: aborted grain with %f frequency",grains[j].si * (sr/frames));
    					grains[j].ephase = eframes; // abort grain
    				}
    			}
    			if(highblock_freq > 0.0) {
    				if(grains[j].si * (sr/frames) > highblock_freq){
    					post("highblock: aborted grain with %f frequency, greater than %f",
                             grains[j].si * (sr/frames), highblock_freq);
    					grains[j].ephase = eframes; // abort grain
    				}
    			}
    			inserted = 1;
    			goto nextgrain;
    		}
		}
		if(!inserted){
			error("could not insert grain");
			return;
		}
    nextgrain: ;
	}
}

void granule_spray(t_granule *x)
{
	int i,j;
	long eframes = x->windowbuf->b_frames;
	long frames = x->wavebuf->b_frames;
	float sr = x->sr;
	long horizon = x->horizon; // length of block for random events
	float mindur = x->mindur;
	float maxdur = x->maxdur;
	float minfreq = x->minfreq; // minimum frequency for a grain
	float maxfreq = x->maxfreq; // maximum frequency for a grain
	float minpan = x->minpan; // minimum pan for a grain
	float maxpan = x->maxpan; // maxium pan for a grain
	float minamp = x->minamp; // minimum amplitude for a grain
	float maxamp = x->maxamp; // maximum amplitude for a grain
	float transpose = x->transpose; // pitch scalar
    //	float steady_dur = x->steady_dur;
	short steady = x->steady;
	float pan;
	t_grain *grains = x->grains;
	short inserted;

	for( i = 0; i < x->events; i++ ){
		inserted = 0;
		for(j = 0; j < MAXGRAINS; j++ ){
			if( grains[j].ephase >= eframes ){
				if(steady){
					grains[j].delay = (float)(i * horizon) / (float) x->events ;
				} else {
    				grains[j].delay = granule_boundrand(0.0,(float) horizon);
    			}
   				grains[j].duration = (long) granule_boundrand(mindur, maxdur);
    			grains[j].phase = 0.0;
    			grains[j].ephase = 0.0;
    			pan = granule_boundrand(minpan, maxpan);
    			grains[j].panL = cos(pan * PIOVERTWO);
    			grains[j].panR = sin(pan * PIOVERTWO);
    			grains[j].amplitude = granule_boundrand(minamp, maxamp);
    			grains[j].esi =  (float) eframes / (float) grains[j].duration ;
				grains[j].si = transpose * granule_boundrand(minfreq, maxfreq) * (float) frames / sr;
    			inserted = 1;
    			goto nextgrain;
    		}
		}
		if(! inserted){
			error("could not insert grain");
			return;
		}
    nextgrain: ;
	}
}

void *granule_grain(t_granule *x, t_symbol *msg, short argc, t_atom *argv)
{
	short inserted;
	int j;
	float duration, frequency, amplitude, pan;
	t_grain *grains;
	long eframes;
	long frames;
	float sr;

	grains = x->grains;
	eframes = x->windowbuf->b_frames;
	frames = x->wavebuf->b_frames;
	sr = x->sr;

	if(argc < 4){
		error("grain takes 4 arguments, not %d",argc);
		post("duration frequency amplitude pan");
		return 0;
	}
	duration = atom_getintarg(0,argc,argv);
	frequency = atom_getfloatarg(1,argc,argv); // in ms
	amplitude = atom_getfloatarg(2,argc,argv);
	pan = atom_getfloatarg(3,argc,argv);
	if(duration <= 0.0){
		error("illegal duration:%f",duration);
		return 0;
	}
	if(frequency <= 0.0){
		error("illegal frequency:%f",frequency);
		return 0;
	}
	if(pan < 0.0 || pan > 1.0){
		error("illegal pan:%f",pan);
		return 0;
	}
	inserted = 0;
	for(j = 0; j < MAXGRAINS; j++ ){
		if( grains[j].ephase >= eframes ){
			grains[j].delay = 0.0;// immediate deployment
			grains[j].duration = (long) (.001 * x->sr * duration);
			grains[j].phase = 0.0;
			grains[j].ephase = 0.0;
			grains[j].panL = cos(pan * PIOVERTWO);
			grains[j].panR = sin(pan * PIOVERTWO);
			grains[j].amplitude = amplitude;
			grains[j].esi =  (float) eframes / (float) grains[j].duration ;
			grains[j].si = frequency * (float) frames / sr;
			return 0;
		}
	}
	
	error("could not insert grain");
	return 0;
	
}

float granule_boundrand(float min, float max)
{
	return min + (max-min) * ((float) (rand() % RAND_MAX)/ (float) RAND_MAX);
}


void *granule_new(t_symbol *msg, short argc, t_atom *argv)
{

    t_granule *x = (t_granule *)pd_new(granule_class);
    outlet_new(&x->x_obj, gensym("signal"));
    outlet_new(&x->x_obj, gensym("signal"));
    x->wavebuf = (t_pdbuffer*)malloc(sizeof(t_pdbuffer));
    x->windowbuf = (t_pdbuffer*)malloc(sizeof(t_pdbuffer));
	srand(time(0));
    
	x->pitchscale = (float *) t_getbytes(MAXSCALE * sizeof(float));
	x->grains = (t_grain *) t_getbytes(MAXGRAINS * sizeof(t_grain));
	
    
	// default names
	x->wavename = gensym("waveform");
	x->windowname = gensym("window");
    
	/* MaxMSP bug that may soon be fixed, this does not work:
     x->wavename = atom_getsymarg(0,argc,argv);
     x->windowname = atom_getsymarg(1,argc,argv); */
    
    // apparently Pd lacks this Max/MSP bug
	x->wavename = atom_getsymbolarg(0,argc,argv);
	x->windowname = atom_getsymbolarg(1,argc,argv);

    
	x->sr = sys_getsr();
	if(! x->sr )
		x->sr = 44100;
    
	granule_init(x,0);
    
    
    return (x);
}

void granule_init(t_granule *x,short initialized)
{
	int i;
	
	if(!initialized){
		x->pitchsteps = 0; // we could predefine a 12t scale
		x->mute = 0;
		x->steady = 0;
		x->events = 10;
		x->horizon_ms = 1000;
		x->minfreq = 220.0;
		x->maxfreq = 880.0;
		x->minpan = .1;
		x->maxpan = .9;
		x->minamp = .1;
		x->maxamp = 1.0;
		x->mindur_ms = 150;
		x->maxdur_ms = 750;
		x->transpose = 1.0;
		x->pitch_deviation = 0.0;
		x->lowblock_freq = 0.0; // by default we do not block any frequencies
		x->highblock_freq = 0.0; // ditto
		x->constrain_scale = 0;
	}
	x->horizon = x->horizon_ms * .001 * x->sr;
	x->mindur = x->mindur_ms * .001 * x->sr;
	x->maxdur = x->maxdur_ms * .001 * x->sr;
	for( i = 0; i < MAXGRAINS; i++ ){ // this is what we test for a legal place to insert grain
		x->grains[i].ephase = 9999999999.0;
	}
}

void granule_info(t_granule *x)
{
	int tcount = 0;
	t_grain *grains = x->grains;
	long eframes = x->windowbuf->b_frames;
	int i;
	
	for(i = 0; i < MAXGRAINS; i++ ){
		if( grains[i].ephase < eframes )
			++tcount;
	}
	post("%d active grains", tcount);
	post("wavename %s", x->wavename->s_name);
	post("windowname %s", x->windowname->s_name);
}


void *granule_grist(t_granule *x, t_symbol *msg, short argc, t_atom *argv)
{
	if(argc < 10 ){
		error("grist takes 10 arguments:");
		post("events horizon minfreq maxfreq minpan maxpan minamp maxamp mindur maxdur");
		return 0;
	}
	x->events = atom_getintarg(0,argc,argv);
	x->horizon_ms = atom_getfloatarg(1,argc,argv);
	x->minfreq = atom_getfloatarg(2,argc,argv);
	x->maxfreq = atom_getfloatarg(3,argc,argv);
	x->minpan = atom_getfloatarg(4,argc,argv);
	x->maxpan = atom_getfloatarg(5,argc,argv);
	x->minamp = atom_getfloatarg(6,argc,argv);
	x->maxamp = atom_getfloatarg(7,argc,argv);
	x->mindur_ms = atom_getfloatarg(8,argc,argv);
	x->maxdur_ms = atom_getfloatarg(9,argc,argv);
	
	x->mindur = .001 * x->sr * x->mindur_ms ;
	x->maxdur = .001 * x->sr * x->maxdur_ms;
	x->horizon = .001 * x->sr * x->horizon_ms;
	
	if(x->minfreq < 0){
		x->minfreq *= -1.0;
	}
	if(x->maxfreq < 0){
		x->maxfreq *= -1.0;
	}
	if(x->minpan < 0.0) {
		x->minpan = 0.0;
	}
	if(x->maxpan > 1.0) {
		x->maxpan = 1.0;
	}
	if(x->events < 0){
		x->events = 0;
	}
	return 0;
}


void granule_reload(t_granule *x)
{
	granule_setbuf(x, x->wavename, x->windowname);
}


void granule_setbuf(t_granule *x, t_symbol *wavename, t_symbol *windowname)
{
    t_garray *a;
    int frames;
    
    x->hosed = 0;
    x->wavebuf->b_frames = 0;
    x->windowbuf->b_frames = 0;
    x->wavebuf->b_nchans = 1;
    x->windowbuf->b_nchans = 1;
    if (!(a = (t_garray *)pd_findbyclass(wavename, garray_class))) {
        if (*wavename->s_name) pd_error(x, "granule~: %s: no such array", wavename->s_name);
        x->hosed = 1;
    }
    else if (!garray_getfloatwords(a, &frames, &x->wavebuf->b_samples)) {
        pd_error(x, "%s: bad template for granule~", wavename->s_name);
        x->hosed = 1;
    }
    else  {
        x->wavebuf->b_frames = frames;
        garray_usedindsp(a);
    }
    
    if (!(a = (t_garray *)pd_findbyclass(windowname, garray_class))) {
        if (*wavename->s_name) pd_error(x, "granule~: %s: no such array", windowname->s_name);
        x->hosed = 1;
    }
    else if (!garray_getfloatwords(a, &frames, &x->windowbuf->b_samples)) {
        pd_error(x, "%s: bad template for granule~", windowname->s_name);
        x->hosed = 1;
    }
    else  {
        x->windowbuf->b_frames = frames;
        garray_usedindsp(a);
    }
}


t_int *granule_performhose(t_int *w)
{
    //	t_granule *x = (t_granule *) (w[1]);
	float *outputL = (t_float *)(w[3]);
	float *outputR = (t_float *)(w[4]);
	int n = (int) w[5];
	while(n--) *outputL++ = *outputR++ = 0;
	return (w+6);
}

t_int *granule_perform(t_int *w)
{
	t_granule *x = (t_granule *) (w[1]);
    //	float *in = (t_float *)(w[2]); // ignoring input
	float *outputL = (t_float *)(w[3]);
	float *outputR = (t_float *)(w[4]);
	int n = (int) w[5];

	t_pdbuffer *wavebuf = x->wavebuf;
	t_pdbuffer *windowbuf = x->windowbuf;
	t_word *wavetable = wavebuf->b_samples;
	t_word *window = windowbuf->b_samples;
	t_grain *grains = x->grains;
	float sample;
	float envelope;
	float amplitude;
	float panL, panR;
	float si;
	float esi;
	float phase;
	float ephase;
	long delay;
	long frames = wavebuf->b_frames;
	long eframes = windowbuf->b_frames;
	int i,j;
	
    
    
	/* grain parameters */
    
    
	if( x->mute ){
		while(n--) *outputL++ = *outputR++ = 0;
		return (w+6);
	}
    
    // pre-clean buffer
	for( i = 0; i < n; i++ ){
		outputL[i] = outputR[i] = 0;
	}
    
	for (j=0; j<MAXGRAINS; j++) {
        
		if(grains[j].ephase >= eframes){
			goto nextgrain;
		}
		amplitude = grains[j].amplitude;
		si =  grains[j].si;
		esi = grains[j].esi;
		phase =  grains[j].phase;
		ephase = grains[j].ephase;
		delay =  grains[j].delay;
		panL = grains[j].panL;
		panR = grains[j].panR;
        
		
		for(i = 0; i < n; i++ ){
			// ++(x->sampcount); // not really needed
			if( delay > 0 ){
				--delay;
			}
			if( delay <= 0 && ephase < eframes){
				sample = wavetable[(int)phase].w_float;
                
				envelope = amplitude * window[(int)ephase].w_float;
				sample *= envelope;
				outputL[i] += panL * sample;
				outputR[i] += panR * sample;
				phase += si;
				ephase += esi;
				while( phase >= frames )
					phase -= frames;
                
				if( ephase >= eframes ){
					grains[j].ephase = ephase;
					goto nextgrain; // must escape loop now
				}
                
			}
		}
		grains[j].phase = phase;
		grains[j].ephase = ephase;
		grains[j].delay = delay;
		
    nextgrain: ;
	}
    
	return (w+6);
    
    
}

void granule_dsp_free(t_granule *x)
{

	t_freebytes(x->grains, MAXGRAINS * sizeof(t_grain));
	t_freebytes(x->pitchscale, MAXSCALE * sizeof(float));
}

void granule_dsp(t_granule *x, t_signal **sp)
{
    
	granule_reload(x);
	
	if( x->hosed ){
		post("You need some valid buffers");
		dsp_add(granule_performhose, 5, x,
                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
		return;
	}
	if( x->sr != sp[0]->s_sr){
		x->sr = sp[0]->s_sr;
		if( !x->sr ){
			post("warning: zero sampling rate!");
			x->sr = 44100;
		}
		granule_init(x,1);
	} 
	dsp_add(granule_perform, 5, x, 
			sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
}

diff --git a/externals/lyonpotpourri/kbuffer~.c b/externals/lyonpotpourri/kbuffer~.c
index 1e949bb88fbf36f44ca7e36a4466954ba9ebc0f9..86584acec3bd1b1bf42df95b43f8f7a0bd8bc467 100755
--- a/externals/lyonpotpourri/kbuffer~.c
+++ b/externals/lyonpotpourri/kbuffer~.c
@@ -304,7 +304,7 @@ void kbuffer_dsp(t_kbuffer *x, t_signal **sp)
         kbuffer_init(x,1);
 	}
    	dsp_add(kbuffer_perform, 5, x,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     
 }
 
diff --git a/externals/lyonpotpourri/killdc~.c b/externals/lyonpotpourri/killdc~.c
index 864b7a2976421ac79f0382af4493fdf553f2361d..e7822fa6831b4382d62090d2914283a937a7b002 100755
--- a/externals/lyonpotpourri/killdc~.c
+++ b/externals/lyonpotpourri/killdc~.c
@@ -114,6 +114,6 @@ t_int *killdc_perform(t_int *w)
 
 void killdc_dsp(t_killdc *x, t_signal **sp)
 {
-    dsp_add(killdc_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,  sp[0]->s_n);
+    dsp_add(killdc_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/latch~.c b/externals/lyonpotpourri/latch~.c
index b67c27b29476181bfaaa367c658733fcf27d9342..0ed17b0c1b13fa98eab7a47f96822355a1d18268 100755
--- a/externals/lyonpotpourri/latch~.c
+++ b/externals/lyonpotpourri/latch~.c
@@ -107,5 +107,5 @@ static void latch_dsp(t_latch *x, t_signal **sp)
 		x->sr = sp[0]->s_sr;
 		x->dsamps = x->duration * x->sr;
 	}
-    dsp_add(latch_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+    dsp_add(latch_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
diff --git a/externals/lyonpotpourri/magfreq_analysis~.c b/externals/lyonpotpourri/magfreq_analysis~.c
index bb85d9a8692a4e6b671178a1ece6fb323cd65c33..448f20d406598ffd4b02cdfe7081dbe0807cbd1b 100755
--- a/externals/lyonpotpourri/magfreq_analysis~.c
+++ b/externals/lyonpotpourri/magfreq_analysis~.c
@@ -291,9 +291,35 @@ void *magfreq_analysis_new(t_symbol *s, int argc, t_atom *argv)
 	
 	x->lofreq = atom_getfloatarg(0,argc,argv);
 	x->hifreq = atom_getfloatarg(1,argc,argv);
-	x->overlap = atom_getfloatarg(2,argc,argv);
+
+	x->overlap = (int)atom_getfloatarg(2,argc,argv);
+        /* Totally guessing that overlap should default to 1... */
+        if (x->overlap <= 0)
+        {
+            x->overlap = 1;
+            pd_error(x, OBJECT_NAME
+                ": this object's default overlap of zero is incorrect. "
+                "Purr Data will change it to an overlap factor of 1 to "
+                "prevent DSP errors. "
+                "For compatibility with Pd Vanilla please set the "
+                "arguments manually so that the overlap (third argument) "
+                "is nonzero.");
+        }
+
 	x->winfac = atom_getfloatarg(3,argc,argv);
-	
+        /* Again-- just assuming the window factor shouldn't ever be zero
+           since that will cause negative indices in the perf routine... */
+        if (x->winfac < 1)
+        {
+            x->winfac = 1;
+            pd_error(x, OBJECT_NAME
+                ": this object's default window factor of zero is "
+                "incorrect. Purr Data will change it to 1 to prevent "
+                "DSP errors. For compatibility with Pd Vanilla please "
+                "set the arguments manually so that the window factor "
+                "(fourth argument) is nonzero.");
+        }
+
 	if(x->lofreq <0 || x->lofreq> 22050)
 		x->lofreq = 0;
 	if(x->hifreq <50 || x->hifreq> 22050)
@@ -343,7 +369,6 @@ t_int *magfreq_analysis_perform(t_int *w)
 	float *channel = x->channel;
 	in = on = x->inCount ;
 	
-	
 	if(x->mute){
 		for( j = 0; j < n; j++ ) {
 			*magnitude_vec++ = 0;
@@ -353,7 +378,6 @@ t_int *magfreq_analysis_perform(t_int *w)
 		return w+7;
 	}
     
-	
 	if (x->bypass_state) {
 		for( j = 0; j < n; j++ ) {
 			*magnitude_vec++ = 0;
@@ -371,6 +395,8 @@ t_int *magfreq_analysis_perform(t_int *w)
     for ( j = 0 ; j < (Nw - D) ; j++ ){
         input[j] = input[j+D];
     }
+
+    /* Bug: this loop creates negative indices! */
     for ( j = (Nw-D); j < Nw; j++) {
         input[j] = *inbuf++;
     }
@@ -433,6 +459,6 @@ void magfreq_analysis_dsp(t_magfreq_analysis *x, t_signal **sp)
 	
 	dsp_add(magfreq_analysis_perform, 6, x,
 			sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
-			sp[0]->s_n);
+			(t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/markov~.c b/externals/lyonpotpourri/markov~.c
index c54b45bfc9b655bc75522e6ec3485249057e939c..a2ce83e63a3e343779c1efed90dc6c38c76a4bb4 100755
--- a/externals/lyonpotpourri/markov~.c
+++ b/externals/lyonpotpourri/markov~.c
@@ -285,6 +285,6 @@ void markov_dsp(t_markov *x, t_signal **sp)
         x->count = 0;
     }
     dsp_add(markov_perform, 5, x, sp[0]->s_vec , sp[1]->s_vec, sp[2]->s_vec, 
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/mask~.c b/externals/lyonpotpourri/mask~.c
index 6dd0b4f2544615f9360a24cb9b50d733fee98c2a..276f6d3e5f73d68fc1816c34b0e77ba42a4a1538 100755
--- a/externals/lyonpotpourri/mask~.c
+++ b/externals/lyonpotpourri/mask~.c
@@ -358,6 +358,6 @@ out:
 
 void mask_dsp(t_mask *x, t_signal **sp)
 {
-    dsp_add(mask_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(mask_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/oscil~.c b/externals/lyonpotpourri/oscil~.c
index 88dd3abb1bd7683f3a5e653a1249cfe707e7e1c3..d2b3791e5a32195a3b2445f49f4fcb9a54bf7175 100755
--- a/externals/lyonpotpourri/oscil~.c
+++ b/externals/lyonpotpourri/oscil~.c
@@ -782,7 +782,7 @@ void oscil_dsp(t_oscil *x, t_signal **sp)
 	x->phase = 0.0;
     
 	dsp_add(oscil_perform_interpolate, 5, x, 
-			sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+			sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     
 	
 }
diff --git a/externals/lyonpotpourri/phasemod~.c b/externals/lyonpotpourri/phasemod~.c
index 2bcb54c1b45372c57512d5139e22887f37887e5e..4ad9acf250dc036491cbf2283009af301df2f179 100755
--- a/externals/lyonpotpourri/phasemod~.c
+++ b/externals/lyonpotpourri/phasemod~.c
@@ -162,6 +162,6 @@ void phasemod_dsp(t_phasemod *x, t_signal **sp)
 		x->sr = sp[0]->s_sr;
 		x->si_fac = 1.0/x->sr;
 	}
-	dsp_add(phasemod_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,  sp[0]->s_n);
+	dsp_add(phasemod_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,  (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/player~.c b/externals/lyonpotpourri/player~.c
index dee10cd606567ff00258bc68b8e52d335bd0d024..3182a802040aca0138f75878f21295247e770acf 100755
--- a/externals/lyonpotpourri/player~.c
+++ b/externals/lyonpotpourri/player~.c
@@ -513,10 +513,10 @@ void player_dsp(t_player *x, t_signal **sp)
 	
 	if(x->hosed)
 		dsp_add(player_perform_hosed1, 5, x, 
-				sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+				sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 	else{
 		dsp_add(player_perform_mono_interpol, 5, x, 
-				sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);	
+				sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 	}
 	
 }
diff --git a/externals/lyonpotpourri/poltocar~.c b/externals/lyonpotpourri/poltocar~.c
index d7e0de29198a631a74442af207da34b4d5074022..e6a0b0a5dc57b52b99f3bd6aa7159d89b7e6c6b6 100755
--- a/externals/lyonpotpourri/poltocar~.c
+++ b/externals/lyonpotpourri/poltocar~.c
@@ -63,5 +63,5 @@ t_int *poltocar_perform(t_int *w)
 void poltocar_dsp(t_poltocar *x, t_signal **sp)
 {
     dsp_add(poltocar_perform,6, x,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 }
diff --git a/externals/lyonpotpourri/pulser~.c b/externals/lyonpotpourri/pulser~.c
index 4e64c32af31a68109734b850f422d54e9c0d4a73..1771b850a8bf175123ddfa84c80df2cf9db0a5c7 100755
--- a/externals/lyonpotpourri/pulser~.c
+++ b/externals/lyonpotpourri/pulser~.c
@@ -208,7 +208,7 @@ void pulser_dsp(t_pulser *x, t_signal **sp)
 
   	x->connected[i] = 1;
   }
-  dsp_add(pulser_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+  dsp_add(pulser_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/lyonpotpourri/quadpan~.c b/externals/lyonpotpourri/quadpan~.c
index a43c02c078c21d591c3c2970e29835776f10a8ea..eb08e1d1a60281162f197577767b588d6ead54c6 100755
--- a/externals/lyonpotpourri/quadpan~.c
+++ b/externals/lyonpotpourri/quadpan~.c
@@ -1 +1 @@
-#include "MSPd.h"
#define OBJECT_NAME "quadpan~"
/*
 
 Front
 
 *out1         *out3
 
 
 
 *out2         *out4
 
 Back
 
 */

static t_class  *quadpan_class;


typedef struct _quadpan
{
    t_object x_obj;
    t_float x_f;
//    short bypass;
//    float pi_over_two;
//    float twopi;
    float *in;
    float *Xin;
    float *Yin;
} t_quadpan;

void *quadpan_new(t_symbol *s, int argc, t_atom *argv);
t_int *offset_perform(t_int *w);
t_int *quadpan_perform(t_int *w);
void quadpan_dsp(t_quadpan *x, t_signal **sp);
void quadpan_showstate( t_quadpan *x );
void quadpan_free(t_quadpan *x);
void quadpan_tilde_setup(void)
{
	quadpan_class = class_new(gensym("quadpan~"), (t_newmethod)quadpan_new, (t_method)quadpan_free,sizeof(t_quadpan),0,A_GIMME,0);
	CLASS_MAINSIGNALIN(quadpan_class, t_quadpan, x_f);
	class_addmethod(quadpan_class, (t_method)quadpan_dsp, gensym("dsp"), A_CANT, 0);
    
	potpourri_announce(OBJECT_NAME);
}

void *quadpan_new(t_symbol *s, int argc, t_atom *argv)
{
    int i;
    t_quadpan *x = (t_quadpan *)pd_new(quadpan_class);
    
    
    for(i = 0; i < 2; i++){
        inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"),gensym("signal"));
    }
    for(i = 0; i < 4; i++){
        outlet_new(&x->x_obj, gensym("signal"));
    }
    x->in = (float *) malloc(8192 * sizeof(float));
    x->Xin = (float *) malloc(8192 * sizeof(float));
    x->Yin = (float *) malloc(8192 * sizeof(float));
//    x->pi_over_two = 1.5707963267948965;
//    x->twopi = 6.283185307179586;
    
    return x;
}
void quadpan_free(t_quadpan *x)
{
    free(x->in);
    free(x->Xin);
    free(x->Yin);
}

t_int *quadpan_perform(t_int *w)
{
    float gain1, gain2, gain3, gain4;
    float xval, yval;
    float xsquared, ysquared, ix, iy, ixsquared, iysquared;
    int i;
    
    t_quadpan *x = (t_quadpan *) (w[1]);
    float *in = x->in;
    float *Xin = x->Xin;
    float *Yin = x->Yin;
    
    float *in_loc = (t_float *)(w[2]);
    float *Xin_loc = (t_float *)(w[3]);
    float *Yin_loc = (t_float *)(w[4]);
    
    float *out1 = (t_float *)(w[5]);
    float *out2 = (t_float *)(w[6]);
    float *out3 = (t_float *)(w[7]);
    float *out4 = (t_float *)(w[8]);
    int n = (int)(w[9]);
    
    // copy buffers to avoid writeovers in shared memory
    for(i = 0; i < n; i++){
        in[i] = in_loc[i];
        Xin[i] = Xin_loc[i];
        Yin[i] = Yin_loc[i];
    }
    
    while( n-- ){
        xval = *Xin++;
        yval = *Yin++;
        if( xval < 0.0 )
            xval = 0.0;
        if( yval > 1.0 )
            yval = 1.0;
        if( yval < 0.0 )
            yval = 0.0;
        if( yval > 1.0 )
            yval = 1.0;
        
        xsquared = xval * xval;
        ysquared = yval * yval;
        ix = 1.0 - xval;
        iy = 1.0 - yval;
        ixsquared = ix * ix;
        iysquared = iy * iy;
        
        gain1 = sqrt( xsquared + ysquared );
        if( gain1 > 1.0 )
            gain1 = 1.0;
        gain1 = 1.0 - gain1; /* Left Rear Gain */
        
        
        gain2 = sqrt( ixsquared + ysquared );
        if( gain2 > 1.0 )
            gain2 = 1.0;
        gain2 = 1.0 - gain2; /* Right Rear Gain */
        
        gain3 = sqrt( xsquared + iysquared );
        if( gain3 > 1.0 )
            gain3 = 1.0;
        gain3 = 1.0 - gain3; /* Left Front Gain */
        
        
        gain4 = sqrt( ixsquared + iysquared ) ;
        if( gain4 > 1.0 )
            gain4 = 1.0;
        gain4 = 1.0 - gain4; /* Right Front Gain*/
        
        *out1++ = *in * gain3;
        *out2++ = *in * gain4;
        *out3++ = *in * gain2;
        *out4++ = *in++ * gain1;
    }
    
    return (w+10);
}



void quadpan_dsp(t_quadpan *x, t_signal **sp)
{
    if( ! sp[0]->s_sr ){
        return;
    }
    dsp_add(quadpan_perform, 9, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
            sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec,
            sp[0]->s_n);
}


\ No newline at end of file
+#include "MSPd.h"
#define OBJECT_NAME "quadpan~"
/*
 
 Front
 
 *out1         *out3
 
 
 
 *out2         *out4
 
 Back
 
 */

static t_class  *quadpan_class;


typedef struct _quadpan
{
    t_object x_obj;
    t_float x_f;
//    short bypass;
//    float pi_over_two;
//    float twopi;
    float *in;
    float *Xin;
    float *Yin;
} t_quadpan;

void *quadpan_new(t_symbol *s, int argc, t_atom *argv);
t_int *offset_perform(t_int *w);
t_int *quadpan_perform(t_int *w);
void quadpan_dsp(t_quadpan *x, t_signal **sp);
void quadpan_showstate( t_quadpan *x );
void quadpan_free(t_quadpan *x);
void quadpan_tilde_setup(void)
{
	quadpan_class = class_new(gensym("quadpan~"), (t_newmethod)quadpan_new, (t_method)quadpan_free,sizeof(t_quadpan),0,A_GIMME,0);
	CLASS_MAINSIGNALIN(quadpan_class, t_quadpan, x_f);
	class_addmethod(quadpan_class, (t_method)quadpan_dsp, gensym("dsp"), A_CANT, 0);
    
	potpourri_announce(OBJECT_NAME);
}

void *quadpan_new(t_symbol *s, int argc, t_atom *argv)
{
    int i;
    t_quadpan *x = (t_quadpan *)pd_new(quadpan_class);
    
    
    for(i = 0; i < 2; i++){
        inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"),gensym("signal"));
    }
    for(i = 0; i < 4; i++){
        outlet_new(&x->x_obj, gensym("signal"));
    }
    x->in = (float *) malloc(8192 * sizeof(float));
    x->Xin = (float *) malloc(8192 * sizeof(float));
    x->Yin = (float *) malloc(8192 * sizeof(float));
//    x->pi_over_two = 1.5707963267948965;
//    x->twopi = 6.283185307179586;
    
    return x;
}
void quadpan_free(t_quadpan *x)
{
    free(x->in);
    free(x->Xin);
    free(x->Yin);
}

t_int *quadpan_perform(t_int *w)
{
    float gain1, gain2, gain3, gain4;
    float xval, yval;
    float xsquared, ysquared, ix, iy, ixsquared, iysquared;
    int i;
    
    t_quadpan *x = (t_quadpan *) (w[1]);
    float *in = x->in;
    float *Xin = x->Xin;
    float *Yin = x->Yin;
    
    float *in_loc = (t_float *)(w[2]);
    float *Xin_loc = (t_float *)(w[3]);
    float *Yin_loc = (t_float *)(w[4]);
    
    float *out1 = (t_float *)(w[5]);
    float *out2 = (t_float *)(w[6]);
    float *out3 = (t_float *)(w[7]);
    float *out4 = (t_float *)(w[8]);
    int n = (int)(w[9]);
    
    // copy buffers to avoid writeovers in shared memory
    for(i = 0; i < n; i++){
        in[i] = in_loc[i];
        Xin[i] = Xin_loc[i];
        Yin[i] = Yin_loc[i];
    }
    
    while( n-- ){
        xval = *Xin++;
        yval = *Yin++;
        if( xval < 0.0 )
            xval = 0.0;
        if( yval > 1.0 )
            yval = 1.0;
        if( yval < 0.0 )
            yval = 0.0;
        if( yval > 1.0 )
            yval = 1.0;
        
        xsquared = xval * xval;
        ysquared = yval * yval;
        ix = 1.0 - xval;
        iy = 1.0 - yval;
        ixsquared = ix * ix;
        iysquared = iy * iy;
        
        gain1 = sqrt( xsquared + ysquared );
        if( gain1 > 1.0 )
            gain1 = 1.0;
        gain1 = 1.0 - gain1; /* Left Rear Gain */
        
        
        gain2 = sqrt( ixsquared + ysquared );
        if( gain2 > 1.0 )
            gain2 = 1.0;
        gain2 = 1.0 - gain2; /* Right Rear Gain */
        
        gain3 = sqrt( xsquared + iysquared );
        if( gain3 > 1.0 )
            gain3 = 1.0;
        gain3 = 1.0 - gain3; /* Left Front Gain */
        
        
        gain4 = sqrt( ixsquared + iysquared ) ;
        if( gain4 > 1.0 )
            gain4 = 1.0;
        gain4 = 1.0 - gain4; /* Right Front Gain*/
        
        *out1++ = *in * gain3;
        *out2++ = *in * gain4;
        *out3++ = *in * gain2;
        *out4++ = *in++ * gain1;
    }
    
    return (w+10);
}



void quadpan_dsp(t_quadpan *x, t_signal **sp)
{
    if( ! sp[0]->s_sr ){
        return;
    }
    dsp_add(quadpan_perform, 9, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
            sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec,
            (t_int)sp[0]->s_n);
}


diff --git a/externals/lyonpotpourri/rotapan~.c b/externals/lyonpotpourri/rotapan~.c
index 2c46a1e99bcc2a33032452aeaefecc80a164ffc6..8a9c92646c9c86489dfc6059fd93ddbfdcdf65d7 100755
--- a/externals/lyonpotpourri/rotapan~.c
+++ b/externals/lyonpotpourri/rotapan~.c
@@ -42,6 +42,25 @@ void *rotapan_new(t_symbol *s, int argc, t_atom *argv)
     
     t_rotapan *x = (t_rotapan *)pd_new(rotapan_class);
     x->rchans = (long) atom_getfloatarg(0,argc,argv);
+
+    /* The rotapan_perform routine does a modulo computation with
+       x->rchans value as the right operand. Thus, the value cannot
+       be zero.
+
+       Here, we set rchans to 1 to keep from hitting the issue when
+       no arguments are given.
+
+       However, we want to encourage the user to actually set the argument
+       in order to remain compatible with lyonpotpourri in Pd Vanilla.
+       So we send an error here, too.
+    */
+    if (x->rchans < 1)
+    {
+        x->rchans = 1;
+        pd_error(x, "need an argument to specify the number of channels. "
+                    "Defaulting to 1.");
+    }
+
     /* allocate in chans plus 1 for controlling the pan */
     for(i = 0; i < x->rchans; i++){
         inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("signal"),gensym("signal"));
diff --git a/externals/lyonpotpourri/rtrig~.c b/externals/lyonpotpourri/rtrig~.c
index 3604cb4dc4c3466f7012ee905bbc471a94154621..61c272b1d2b6dcc6e373c951ebbc6688f46413cd 100755
--- a/externals/lyonpotpourri/rtrig~.c
+++ b/externals/lyonpotpourri/rtrig~.c
@@ -139,7 +139,7 @@ void rtrig_dsp(t_rtrig *x, t_signal **sp)
 	dsp_add(rtrig_perform, 3, x, 
             //			sp[0]->s_vec, 
 			sp[1]->s_vec,
-			sp[0]->s_n
+			(t_int)sp[0]->s_n
             );
 }
 
diff --git a/externals/lyonpotpourri/sigseq~.c b/externals/lyonpotpourri/sigseq~.c
index a2233d763897628fe45eddd3887cb7f3fc69fda0..7282b65fb37b5c7819b9d7c19386751f55ae39b8 100755
--- a/externals/lyonpotpourri/sigseq~.c
+++ b/externals/lyonpotpourri/sigseq~.c
@@ -563,10 +563,10 @@ void sigseq_dsp(t_sigseq *x, t_signal **sp)
     }
     if(x->method == EXTERNAL_CLOCK){
         dsp_add(sigseq_perform_clickin, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     } else {
         dsp_add(sigseq_perform, 5, x, 
-                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+                sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/externals/lyonpotpourri/squash~.c b/externals/lyonpotpourri/squash~.c
index 0719eadb61f0fb733139c88a951ae95785ef59f8..2e6095d6e435eef7f5f5cd8b43cf7d9d0fceb403 100755
--- a/externals/lyonpotpourri/squash~.c
+++ b/externals/lyonpotpourri/squash~.c
@@ -394,7 +394,7 @@ void squash_dsp(t_squash *x, t_signal **sp)
         x->D = sp[0]->s_n;
         error("blocksize change not implemented yet!");
     } else {
-        dsp_add(squash_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        dsp_add(squash_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/externals/lyonpotpourri/stutter~.c b/externals/lyonpotpourri/stutter~.c
index b65651589aa70c6f026d8a6a3c220afe9962801e..dae9ca2d0da0dea9cf5353c269626ba36a0a89ed 100755
--- a/externals/lyonpotpourri/stutter~.c
+++ b/externals/lyonpotpourri/stutter~.c
@@ -526,6 +526,6 @@ void stutter_dsp(t_stutter *x, t_signal **sp)
 		x->loop_min_samps = .02 * (t_float)x->R;
 		x->loop_max_samps = .2 * (t_float) x->R;
 	}
-	dsp_add(stutter_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+	dsp_add(stutter_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/vdp~.c b/externals/lyonpotpourri/vdp~.c
index 0dc5a88c2f14620f22ce9a94d9583be3ebdbf6cd..54178244e0847a903d776fe9c862b79ab19f6161 100755
--- a/externals/lyonpotpourri/vdp~.c
+++ b/externals/lyonpotpourri/vdp~.c
@@ -380,7 +380,7 @@ void vdp_dsp(t_vdp *x, t_signal **sp)
 	}
     dsp_add(vdp_perform, 6, x,
     		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
-    		sp[0]->s_n);
+    		(t_int)sp[0]->s_n);
     
 }
 
diff --git a/externals/lyonpotpourri/vecdex~.c b/externals/lyonpotpourri/vecdex~.c
index 626907b1520be0d8d314e4657255579920b10ba5..f7ad8050909f51e0a434d5929e2ec2707c00db4a 100755
--- a/externals/lyonpotpourri/vecdex~.c
+++ b/externals/lyonpotpourri/vecdex~.c
@@ -63,5 +63,5 @@ t_int *vecdex_perform(t_int *w)
 
 void vecdex_dsp(t_vecdex *x, t_signal **sp)
 {
-	dsp_add(vecdex_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
\ No newline at end of file
+	dsp_add(vecdex_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
+}
diff --git a/externals/lyonpotpourri/waveshape~.c b/externals/lyonpotpourri/waveshape~.c
index 47822b6b648bc405e6c36653ff3ef3ed25851f17..ad1a2c3131fe689dfbddbcf267026ce28e305bcc 100755
--- a/externals/lyonpotpourri/waveshape~.c
+++ b/externals/lyonpotpourri/waveshape~.c
@@ -166,6 +166,6 @@ t_int *waveshape_perform(t_int *w)
 
 void waveshape_dsp(t_waveshape *x, t_signal **sp)
 {
-    dsp_add(waveshape_perform, 4, x, sp[0]->s_vec,sp[1]->s_vec,sp[0]->s_n);
+    dsp_add(waveshape_perform, 4, x, sp[0]->s_vec,sp[1]->s_vec,(t_int)sp[0]->s_n);
 }
 
diff --git a/externals/lyonpotpourri/windowvec~.c b/externals/lyonpotpourri/windowvec~.c
index cf471ca72b53a4a6b8bd535426d68070dafdffb0..7adbf12ad24aeda9f189b5d0b6e2a348de4521de 100755
--- a/externals/lyonpotpourri/windowvec~.c
+++ b/externals/lyonpotpourri/windowvec~.c
@@ -93,5 +93,5 @@ void windowvec_dsp(t_windowvec *x, t_signal **sp, short *count)
 			x->envelope[i] = - 0.5 * cos(twopi * (i / (float)x->vecsize)) + 0.5;
 		}
 	}
-	dsp_add(windowvec_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
-}
\ No newline at end of file
+	dsp_add(windowvec_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
+}
diff --git a/externals/markex/abs~.c b/externals/markex/abs~.c
index 2ca443e4ef5a5be50105fc9a277ceb3c0de968fb..bb0f79f8c683a1400e8cdf7ec3383010a49d6bc3 100644
--- a/externals/markex/abs~.c
+++ b/externals/markex/abs~.c
@@ -32,7 +32,7 @@ static t_int *abs_perform(t_int *w)
 
 static void abs_dsp(t_abs *x, t_signal **sp)
 {
-    dsp_add(abs_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(abs_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *abs_new(void)
diff --git a/externals/markex/reson~.c b/externals/markex/reson~.c
index b5084b8d720d7a7935d3dbd68037500079306def..3318ea2f720e527f83f6a0e22cceac66d3700dbe 100644
--- a/externals/markex/reson~.c
+++ b/externals/markex/reson~.c
@@ -102,7 +102,7 @@ static void sigreson_dsp(t_sigreson *x, t_signal **sp)
 	x->x_ctl->c_samprate = sp[0]->s_sr;
 	sigreson_float(x, x->x_ctl->c_freq);
 	dsp_add(cu_reson, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
-		x->x_ctl, sp[0]->s_n);
+		x->x_ctl, (t_int)sp[0]->s_n);
 }
 
 static void sigreson_ft1(t_sigreson *x, t_floatarg f) /* sets feedback */
diff --git a/externals/miXed/cyclone/shadow/nettles.c b/externals/miXed/cyclone/shadow/nettles.c
index d7ccb878b0c25f78e5c95423f8288a8dc82fe429..9da130db4abd5d8d1b1181b9b284ded4db4c5092 100644
--- a/externals/miXed/cyclone/shadow/nettles.c
+++ b/externals/miXed/cyclone/shadow/nettles.c
@@ -151,15 +151,15 @@ static void sigeq_dsp(t_sigeq *x, t_signal **sp)
     switch (x->x_algo)
     {
     case 1:
-	dsp_add(sigeq_perform1, 4, sp[0]->s_n,
+	dsp_add(sigeq_perform1, 4, (t_int)sp[0]->s_n,
 		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 	break;
     case 2:
-	dsp_add(sigeq_perform2, 4, sp[0]->s_n,
+	dsp_add(sigeq_perform2, 4, (t_int)sp[0]->s_n,
 		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 	break;
     default:
-	dsp_add(sigeq_perform0, 4, sp[0]->s_n,
+	dsp_add(sigeq_perform0, 4, (t_int)sp[0]->s_n,
 		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
     }
 }
@@ -203,7 +203,7 @@ static t_int *signeq_perform(t_int *w)
 
 static void signeq_dsp(t_signeq *x, t_signal **sp)
 {
-    dsp_add(signeq_perform, 4, sp[0]->s_n,
+    dsp_add(signeq_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -235,7 +235,7 @@ static t_int *siglt_perform(t_int *w)
 
 static void siglt_dsp(t_siglt *x, t_signal **sp)
 {
-    dsp_add(siglt_perform, 4, sp[0]->s_n,
+    dsp_add(siglt_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -267,7 +267,7 @@ static t_int *siggt_perform(t_int *w)
 
 static void siggt_dsp(t_siggt *x, t_signal **sp)
 {
-    dsp_add(siggt_perform, 4, sp[0]->s_n,
+    dsp_add(siggt_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -299,7 +299,7 @@ static t_int *sigleq_perform(t_int *w)
 
 static void sigleq_dsp(t_sigleq *x, t_signal **sp)
 {
-    dsp_add(sigleq_perform, 4, sp[0]->s_n,
+    dsp_add(sigleq_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -331,7 +331,7 @@ static t_int *siggeq_perform(t_int *w)
 
 static void siggeq_dsp(t_siggeq *x, t_signal **sp)
 {
-    dsp_add(siggeq_perform, 4, sp[0]->s_n,
+    dsp_add(siggeq_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -358,7 +358,7 @@ static t_int *sigrminus_perform(t_int *w)
 
 static void sigrminus_dsp(t_sigrminus *x, t_signal **sp)
 {
-    dsp_add(sigrminus_perform, 4, sp[0]->s_n,
+    dsp_add(sigrminus_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -392,7 +392,7 @@ static t_int *sigrover_perform(t_int *w)
 
 static void sigrover_dsp(t_sigrover *x, t_signal **sp)
 {
-    dsp_add(sigrover_perform, 4, sp[0]->s_n,
+    dsp_add(sigrover_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -427,7 +427,7 @@ static t_int *sigmod_perform(t_int *w)
 
 static void sigmod_dsp(t_sigmod *x, t_signal **sp)
 {
-    dsp_add(sigmod_perform, 4, sp[0]->s_n,
+    dsp_add(sigmod_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
@@ -462,7 +462,7 @@ static t_int *sigaccum_perform(t_int *w)
 
 static void sigaccum_dsp(t_sigaccum *x, t_signal **sp)
 {
-    dsp_add(sigaccum_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(sigaccum_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void sigaccum_bang(t_sigaccum *x)
diff --git a/externals/miXed/cyclone/sickle/Clip.c b/externals/miXed/cyclone/sickle/Clip.c
index 7b7074801296b42e4f6634b6798522cf3b58e5c8..1ff02de502088b9a67354e24e493adeb689edb5c 100644
--- a/externals/miXed/cyclone/sickle/Clip.c
+++ b/externals/miXed/cyclone/sickle/Clip.c
@@ -37,7 +37,7 @@ static t_int *Clip_perform(t_int *w)
 
 static void clip_dsp(t_clip *x, t_signal **sp)
 {
-    dsp_add(Clip_perform, 5, sp[0]->s_n,
+    dsp_add(Clip_perform, 5, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/Line.c b/externals/miXed/cyclone/sickle/Line.c
index 78d446bca8e1c3f2bc60af704db8cd699954886f..609b14328ea3d037ab3538a158bd685bb39cf2f0 100644
--- a/externals/miXed/cyclone/sickle/Line.c
+++ b/externals/miXed/cyclone/sickle/Line.c
@@ -271,7 +271,7 @@ static void line_stop(t_line *x)
 
 static void line_dsp(t_line *x, t_signal **sp)
 {
-    dsp_add(line_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(line_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     x->x_ksr = sp[0]->s_sr * 0.001;
 }
 
diff --git a/externals/miXed/cyclone/sickle/Scope.c b/externals/miXed/cyclone/sickle/Scope.c
index 33b8b76f2298d7776a021366a11f8a8cebe963e4..ca31f13964fbe6b972d218358eb7633e594f20f6 100644
--- a/externals/miXed/cyclone/sickle/Scope.c
+++ b/externals/miXed/cyclone/sickle/Scope.c
@@ -317,9 +317,9 @@ static void scope_dsp(t_scope *x, t_signal **sp)
     scope_setxymode(x,
 		    forky_hasfeeders((t_object *)x, x->x_glist, 1, &s_signal));
     if (x->x_xymode)
-	dsp_add(scope_xyperform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(scope_xyperform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     else
-	dsp_add(scope_monoperform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+	dsp_add(scope_monoperform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static t_canvas *scope_getcanvas(t_scope *x, t_glist *glist)
diff --git a/externals/miXed/cyclone/sickle/Scope.c.old b/externals/miXed/cyclone/sickle/Scope.c.old
index 9436e3f70264626c60bba7138d12be2703f81103..c6f1212bf571541ed828727f65e30281a6dca739 100644
--- a/externals/miXed/cyclone/sickle/Scope.c.old
+++ b/externals/miXed/cyclone/sickle/Scope.c.old
@@ -312,9 +312,9 @@ static void scope_dsp(t_scope *x, t_signal **sp)
     scope_setxymode(x,
 		    forky_hasfeeders((t_object *)x, x->x_glist, 1, &s_signal));
     if (x->x_xymode)
-	dsp_add(scope_xyperform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(scope_xyperform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     else
-	dsp_add(scope_monoperform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+	dsp_add(scope_monoperform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static t_canvas *scope_getcanvas(t_scope *x, t_glist *glist)
diff --git a/externals/miXed/cyclone/sickle/abs.c b/externals/miXed/cyclone/sickle/abs.c
index 777b89100265961458f2c007c0e41320c0733038..5ffa4a807044ffd11e9c84da2e61f93a3134b2b0 100644
--- a/externals/miXed/cyclone/sickle/abs.c
+++ b/externals/miXed/cyclone/sickle/abs.c
@@ -70,12 +70,12 @@ static void abs_dsp(t_abs *x, t_signal **sp)
 #ifdef ABS_TEST
     t_symbol *tst = fitter_getsymbol(gensym("test"));
     if (tst == gensym("unroll"))
-	dsp_add(abs_perf8, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(abs_perf8, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     else if (tst == gensym("branch"))
-	dsp_add(abs_perf0, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(abs_perf0, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     else
 #endif
-	dsp_add(abs_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(abs_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *abs_new(void)
diff --git a/externals/miXed/cyclone/sickle/acos.c b/externals/miXed/cyclone/sickle/acos.c
index 3b706b1bcac54a6dc70624318d6fe5c9cab6da8c..63603ec24d35d4d0dfb662d7b608f34facfd2113 100644
--- a/externals/miXed/cyclone/sickle/acos.c
+++ b/externals/miXed/cyclone/sickle/acos.c
@@ -29,7 +29,7 @@ static t_int *acos_perform(t_int *w)
 
 static void acos_dsp(t_acos *x, t_signal **sp)
 {
-    dsp_add(acos_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(acos_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *acos_new(void)
diff --git a/externals/miXed/cyclone/sickle/acosh.c b/externals/miXed/cyclone/sickle/acosh.c
index eabecb51791aeaefcd6df685978d139c2ca5a855..747f42e1009f7ad75f27907fbfc8d1e01549e0a9 100644
--- a/externals/miXed/cyclone/sickle/acosh.c
+++ b/externals/miXed/cyclone/sickle/acosh.c
@@ -29,7 +29,7 @@ static t_int *acosh_perform(t_int *w)
 
 static void acosh_dsp(t_acosh *x, t_signal **sp)
 {
-    dsp_add(acosh_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(acosh_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *acosh_new(void)
diff --git a/externals/miXed/cyclone/sickle/allpass.c b/externals/miXed/cyclone/sickle/allpass.c
index 761d0ccda9ac3c0caa9b8964f607a95aa8161b9d..d5d3f8d827a9d440faab4190ab0e24dc53863016 100644
--- a/externals/miXed/cyclone/sickle/allpass.c
+++ b/externals/miXed/cyclone/sickle/allpass.c
@@ -106,7 +106,7 @@ static void allpass_dsp(t_allpass *x, t_signal **sp)
 	allpass_resize(x, x->x_ksr * x->x_maxdelay);
     }
     else allpass_clear(x);
-    dsp_add(allpass_perform, 6, x, sp[0]->s_n,
+    dsp_add(allpass_perform, 6, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/asin.c b/externals/miXed/cyclone/sickle/asin.c
index 282c830e225fec293e3f9ef43626c3bd06815e6b..e643cd2711ca14c0b49174880e7df2b8cb1dc5c2 100644
--- a/externals/miXed/cyclone/sickle/asin.c
+++ b/externals/miXed/cyclone/sickle/asin.c
@@ -29,7 +29,7 @@ static t_int *asin_perform(t_int *w)
 
 static void asin_dsp(t_asin *x, t_signal **sp)
 {
-    dsp_add(asin_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(asin_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *asin_new(void)
diff --git a/externals/miXed/cyclone/sickle/asinh.c b/externals/miXed/cyclone/sickle/asinh.c
index 367ce0cc50b41bb10680c55531ab104875c3a3d8..c277bbbce63dd293f3c704517958582adf7d788e 100644
--- a/externals/miXed/cyclone/sickle/asinh.c
+++ b/externals/miXed/cyclone/sickle/asinh.c
@@ -29,7 +29,7 @@ static t_int *asinh_perform(t_int *w)
 
 static void asinh_dsp(t_asinh *x, t_signal **sp)
 {
-    dsp_add(asinh_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(asinh_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *asinh_new(void)
diff --git a/externals/miXed/cyclone/sickle/atan.c b/externals/miXed/cyclone/sickle/atan.c
index 89d8e8818f0a6841abc0af5d8cccec7338904758..963b9f529dd2097f4f2fdf54390891bb145ef379 100644
--- a/externals/miXed/cyclone/sickle/atan.c
+++ b/externals/miXed/cyclone/sickle/atan.c
@@ -29,7 +29,7 @@ static t_int *atan_perform(t_int *w)
 
 static void atan_dsp(t_atan *x, t_signal **sp)
 {
-    dsp_add(atan_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(atan_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *atan_new(void)
diff --git a/externals/miXed/cyclone/sickle/atan2.c b/externals/miXed/cyclone/sickle/atan2.c
index 327efd171ccc52ac8b742c317afb9ef9c986f41b..e94cb14975c6e0e56e9b79d280c75d595afe0365 100644
--- a/externals/miXed/cyclone/sickle/atan2.c
+++ b/externals/miXed/cyclone/sickle/atan2.c
@@ -32,7 +32,7 @@ static t_int *atan2_perform(t_int *w)
 
 static void atan2_dsp(t_atan2 *x, t_signal **sp)
 {
-    dsp_add(atan2_perform, 4, sp[0]->s_n,
+    dsp_add(atan2_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/atanh.c b/externals/miXed/cyclone/sickle/atanh.c
index 4152236b1297f62fdbc8ddc07e5f0d7705a408c5..b26e673e75b767d411805cff566e45aaa7e13413 100644
--- a/externals/miXed/cyclone/sickle/atanh.c
+++ b/externals/miXed/cyclone/sickle/atanh.c
@@ -29,7 +29,7 @@ static t_int *atanh_perform(t_int *w)
 
 static void atanh_dsp(t_atanh *x, t_signal **sp)
 {
-    dsp_add(atanh_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(atanh_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *atanh_new(void)
diff --git a/externals/miXed/cyclone/sickle/atodb.c b/externals/miXed/cyclone/sickle/atodb.c
index 981f227c42520ea52baa00f412de352c17c666c0..65d5d483a3ee1ec2d1348e5a42bfa59c403766fe 100644
--- a/externals/miXed/cyclone/sickle/atodb.c
+++ b/externals/miXed/cyclone/sickle/atodb.c
@@ -47,7 +47,7 @@ static t_int * atodb_perform(t_int *w)
 
 static void atodb_dsp(t_atodb *x, t_signal **sp)
 {
-  dsp_add(atodb_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+  dsp_add(atodb_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 void *atodb_new(void)
diff --git a/externals/miXed/cyclone/sickle/average.c b/externals/miXed/cyclone/sickle/average.c
index 870ca0dde985cd89d6cab78d08d0784ca0ac16b1..5b25cc33d74fe01dce18ddf5d4d841563faeb6b9 100644
--- a/externals/miXed/cyclone/sickle/average.c
+++ b/externals/miXed/cyclone/sickle/average.c
@@ -142,7 +142,7 @@ static t_int *average_perform(t_int *w)
 
 static void average_dsp(t_average *x, t_signal **sp)
 {
-    dsp_add(average_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(average_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void average_free(t_average *x)
diff --git a/externals/miXed/cyclone/sickle/avg.c b/externals/miXed/cyclone/sickle/avg.c
index 2ad214a3794bae43e906d61773c91f1cfc996942..73102e27d5296bac6fecd9275c2d63a0719a101a 100644
--- a/externals/miXed/cyclone/sickle/avg.c
+++ b/externals/miXed/cyclone/sickle/avg.c
@@ -40,7 +40,7 @@ static t_int *avg_perform(t_int *w)
 
 static void avg_dsp(t_avg *x, t_signal **sp)
 {
-    dsp_add(avg_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(avg_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void *avg_new(void)
diff --git a/externals/miXed/cyclone/sickle/bitand.c b/externals/miXed/cyclone/sickle/bitand.c
index a7cfeb7372b3f97b32d6ab585b2785611bfe79f6..3066921b49885e9273282f48a311f8649b047d91 100644
--- a/externals/miXed/cyclone/sickle/bitand.c
+++ b/externals/miXed/cyclone/sickle/bitand.c
@@ -96,10 +96,10 @@ static void bitand_dsp(t_bitand *x, t_signal **sp)
     if (forky_hasfeeders((t_object *)x, x->x_glist, 1, 0))
 	/* use the mask set by a second inlet's signal or float,
 	   CHECKED (incompatible) second inlet's int is persistent */
-	dsp_add(bitand_perform, 5, x, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(bitand_perform, 5, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec);
     else  /* use the mask set by a 'bits' message or a creation argument */
-	dsp_add(bitand_perform_noin2, 4, x, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(bitand_perform_noin2, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/bitnot.c b/externals/miXed/cyclone/sickle/bitnot.c
index c2929e8d19aee5d170273522c1e992001d165b5d..4b6e025b26b7463664d03c952f2a45852f99b3a5 100644
--- a/externals/miXed/cyclone/sickle/bitnot.c
+++ b/externals/miXed/cyclone/sickle/bitnot.c
@@ -37,7 +37,7 @@ static t_int *bitnot_perform(t_int *w)
 
 static void bitnot_dsp(t_bitnot *x, t_signal **sp)
 {
-    dsp_add(bitnot_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(bitnot_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void bitnot_mode(t_bitnot *x, t_floatarg f)
diff --git a/externals/miXed/cyclone/sickle/bitor.c b/externals/miXed/cyclone/sickle/bitor.c
index e5c887b16ae35c42156169c6eabcbb09ca4d1a1e..311ade0b1dfef07b1afb27ce7da74c88494ff5a6 100644
--- a/externals/miXed/cyclone/sickle/bitor.c
+++ b/externals/miXed/cyclone/sickle/bitor.c
@@ -96,10 +96,10 @@ static void bitor_dsp(t_bitor *x, t_signal **sp)
     if (forky_hasfeeders((t_object *)x, x->x_glist, 1, 0))
 	/* use the mask set by a second inlet's signal or float,
 	   CHECKED (incompatible) second inlet's int is persistent */
-	dsp_add(bitor_perform, 5, x, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(bitor_perform, 5, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec);
     else  /* use the mask set by a 'bits' message or a creation argument */
-	dsp_add(bitor_perform_noin2, 4, x, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(bitor_perform_noin2, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/bitshift.c b/externals/miXed/cyclone/sickle/bitshift.c
index 707048c00121b94efb25f2521848075ff946be2e..e2638b4b7aed67264b94a0ce3b542877e79c1035 100644
--- a/externals/miXed/cyclone/sickle/bitshift.c
+++ b/externals/miXed/cyclone/sickle/bitshift.c
@@ -74,7 +74,7 @@ static t_int *bitshift_perform(t_int *w)
 
 static void bitshift_dsp(t_bitshift *x, t_signal **sp)
 {
-    dsp_add(bitshift_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(bitshift_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void bitshift_mode(t_bitshift *x, t_floatarg f)
diff --git a/externals/miXed/cyclone/sickle/bitxor.c b/externals/miXed/cyclone/sickle/bitxor.c
index 5eeb4fdddf48d6f560aaf13e09f184baa77d613a..7f964d00fd66e9ecd5b239b7d86fca62f72d3ab4 100644
--- a/externals/miXed/cyclone/sickle/bitxor.c
+++ b/externals/miXed/cyclone/sickle/bitxor.c
@@ -99,10 +99,10 @@ static void bitxor_dsp(t_bitxor *x, t_signal **sp)
     if (forky_hasfeeders((t_object *)x, x->x_glist, 1, 0))
 	/* use the mask set by a second inlet's signal or float,
 	   CHECKED (incompatible) second inlet's int is persistent */
-	dsp_add(bitxor_perform, 5, x, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(bitxor_perform, 5, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec);
     else  /* use the mask set by a 'bits' message or a creation argument */
-	dsp_add(bitxor_perform_noin2, 4, x, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(bitxor_perform_noin2, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/capture.c b/externals/miXed/cyclone/sickle/capture.c
index a61369493df06bc1fb806d9eebb77b0ae61384fa..cfb47a2e9f6fc99d2e12e7b13d65507f5efdd223 100644
--- a/externals/miXed/cyclone/sickle/capture.c
+++ b/externals/miXed/cyclone/sickle/capture.c
@@ -287,11 +287,11 @@ static void capture_dsp(t_capture *x, t_signal **sp)
     if (x->x_indices)
 	dsp_add((x->x_mode == 'f' ?
 		 capture_perform_first : capture_perform_last),
-		3, x, sp[0]->s_vec, sp[0]->s_n);
+		3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     else
 	dsp_add((x->x_mode == 'f' ?
 		 capture_perform_allfirst : capture_perform_alllast),
-		3, x, sp[0]->s_vec, sp[0]->s_n);
+		3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void capture_free(t_capture *x)
diff --git a/externals/miXed/cyclone/sickle/cartopol.c b/externals/miXed/cyclone/sickle/cartopol.c
index 8513af673915c71f7ce13441d82e576b160e266d..7fe970d6063ab2acb8476412f613b6bbbb586dd1 100644
--- a/externals/miXed/cyclone/sickle/cartopol.c
+++ b/externals/miXed/cyclone/sickle/cartopol.c
@@ -54,10 +54,10 @@ static t_int *cartopol_perform_nophase(t_int *w)
 static void cartopol_dsp(t_cartopol *x, t_signal **sp)
 {
     if (fragile_outlet_connections(x->x_out2))
-	dsp_add(cartopol_perform, 5, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(cartopol_perform, 5, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
     else
-	dsp_add(cartopol_perform_nophase, 4, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(cartopol_perform_nophase, 4, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/change.c b/externals/miXed/cyclone/sickle/change.c
index fffc43a3438efc20d631895222313dc0f653bc58..26053690115238222e953ba7328331134f61b571 100644
--- a/externals/miXed/cyclone/sickle/change.c
+++ b/externals/miXed/cyclone/sickle/change.c
@@ -32,7 +32,7 @@ static t_int *change_perform(t_int *w)
 
 static void change_dsp(t_change *x, t_signal **sp)
 {
-    dsp_add(change_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(change_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *change_new(void)
diff --git a/externals/miXed/cyclone/sickle/click.c b/externals/miXed/cyclone/sickle/click.c
index 5734cfdd7cc73eb4744af23b5596ab1e38a285d7..f852e8900c4abc3b5f9578dea990fd4fdc75e068 100644
--- a/externals/miXed/cyclone/sickle/click.c
+++ b/externals/miXed/cyclone/sickle/click.c
@@ -83,7 +83,7 @@ static t_int *click_perform(t_int *w)
 
 static void click_dsp(t_click *x, t_signal **sp)
 {
-    dsp_add(click_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(click_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void click_free(t_click *x)
diff --git a/externals/miXed/cyclone/sickle/comb.c b/externals/miXed/cyclone/sickle/comb.c
index 8d4c8b37a964fc0de74c1e5e5a9b7d3e79d030a3..a6c800a643ec5e1d8e28687c966d3449ba6206b1 100644
--- a/externals/miXed/cyclone/sickle/comb.c
+++ b/externals/miXed/cyclone/sickle/comb.c
@@ -110,7 +110,7 @@ static void comb_dsp(t_comb *x, t_signal **sp)
 	comb_resize(x, x->x_ksr * x->x_maxdelay);
     }
     else comb_clear(x);
-    dsp_add(comb_perform, 8, x, sp[0]->s_n,
+    dsp_add(comb_perform, 8, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
 	    sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec);
 }
diff --git a/externals/miXed/cyclone/sickle/cosh.c b/externals/miXed/cyclone/sickle/cosh.c
index 87f195f93881968e87416f3a1233224e7bcb7ed2..f44406943502f0d15b714712c6efc28ec612d163 100644
--- a/externals/miXed/cyclone/sickle/cosh.c
+++ b/externals/miXed/cyclone/sickle/cosh.c
@@ -29,7 +29,7 @@ static t_int *cosh_perform(t_int *w)
 
 static void cosh_dsp(t_cosh *x, t_signal **sp)
 {
-    dsp_add(cosh_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(cosh_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *cosh_new(void)
diff --git a/externals/miXed/cyclone/sickle/cosx.c b/externals/miXed/cyclone/sickle/cosx.c
index d86fdaebdad4633b169bd3a4de66e22bfe4bc781..5a9c0ad3befba3c7418fdc2bb51863cb98f7219d 100644
--- a/externals/miXed/cyclone/sickle/cosx.c
+++ b/externals/miXed/cyclone/sickle/cosx.c
@@ -32,7 +32,7 @@ static t_int *cosx_perform(t_int *w)
 
 static void cosx_dsp(t_cosx *x, t_signal **sp)
 {
-    dsp_add(cosx_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(cosx_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *cosx_new(void)
diff --git a/externals/miXed/cyclone/sickle/count.c b/externals/miXed/cyclone/sickle/count.c
index 2a36f441132d26b2c7ab5a672ae5c47987bf94ca..1b2b52544c28c46237c1cb5e6779d464d4cc842b 100644
--- a/externals/miXed/cyclone/sickle/count.c
+++ b/externals/miXed/cyclone/sickle/count.c
@@ -123,7 +123,7 @@ static t_int *count_perform(t_int *w)
 static void count_dsp(t_count *x, t_signal **sp)
 {
     if (x->x_autoreset) count_bang(x);
-    dsp_add(count_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(count_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void *count_new(t_floatarg minval, t_floatarg maxval,
diff --git a/externals/miXed/cyclone/sickle/curve.c b/externals/miXed/cyclone/sickle/curve.c
index 11ada15de1497bed29bc469148de55b625e137fb..b58b90f55ed302c5f7b497f72f03b704614b1b09 100644
--- a/externals/miXed/cyclone/sickle/curve.c
+++ b/externals/miXed/cyclone/sickle/curve.c
@@ -333,7 +333,7 @@ static void curve_dsp(t_curve *x, t_signal **sp)
 	    segp++;
 	}
     }
-    dsp_add(curve_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(curve_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void curve_free(t_curve *x)
diff --git a/externals/miXed/cyclone/sickle/cycle.c b/externals/miXed/cyclone/sickle/cycle.c
index cf61816b1b1762ff6f5653f96ec0b0273653e61b..4dd8084eafebf2d9d75bef4ec2ea15c2ff3afe1a 100644
--- a/externals/miXed/cyclone/sickle/cycle.c
+++ b/externals/miXed/cyclone/sickle/cycle.c
@@ -136,7 +136,7 @@ static void cycle_dsp(t_cycle *x, t_signal **sp)
 {
     cycle_gettable(x);
     x->x_conv = CYCLE_TABSIZE / sp[0]->s_sr;
-    dsp_add(cycle_perform, 5, x, sp[0]->s_n,
+    dsp_add(cycle_perform, 5, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/dbtoa.c b/externals/miXed/cyclone/sickle/dbtoa.c
index a435a60bfd6c31c3d684a291ebd24e475484a08d..820a3591d6bc24d1f777a038972bb18678d42c5c 100644
--- a/externals/miXed/cyclone/sickle/dbtoa.c
+++ b/externals/miXed/cyclone/sickle/dbtoa.c
@@ -39,7 +39,7 @@ static t_int * dbtoa_perform(t_int *w)
 
 static void dbtoa_dsp(t_dbtoa *x, t_signal **sp)
 {
-  dsp_add(dbtoa_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+  dsp_add(dbtoa_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 void *dbtoa_new(void)
diff --git a/externals/miXed/cyclone/sickle/delay.c b/externals/miXed/cyclone/sickle/delay.c
index b0ddd9d739eeac8eed383972a6fd6a319e8eb7dd..d17294be46bbcc7d16858245b29d9b3304396d5c 100644
--- a/externals/miXed/cyclone/sickle/delay.c
+++ b/externals/miXed/cyclone/sickle/delay.c
@@ -63,7 +63,7 @@ static void delay_dsp(t_delay *x, t_signal **sp)
 {
     memset(x->x_buf, 0, x->x_maxsize * sizeof(*x->x_buf));  /* CHECKED */
     x->x_whead = x->x_buf;
-    dsp_add(delay_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(delay_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *delay_new(t_floatarg f1, t_floatarg f2)
diff --git a/externals/miXed/cyclone/sickle/delta.c b/externals/miXed/cyclone/sickle/delta.c
index 145d6b7e4b23a9a65b43ce7e3930eaba0639a663..634f786771a623e38ecc51b1b126656786cb738a 100644
--- a/externals/miXed/cyclone/sickle/delta.c
+++ b/externals/miXed/cyclone/sickle/delta.c
@@ -32,7 +32,7 @@ static t_int *delta_perform(t_int *w)
 
 static void delta_dsp(t_delta *x, t_signal **sp)
 {
-    dsp_add(delta_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(delta_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *delta_new(void)
diff --git a/externals/miXed/cyclone/sickle/deltaclip.c b/externals/miXed/cyclone/sickle/deltaclip.c
index 763a1006770683672090db56b048cdfb260e265b..0c76bdf3f89232d801b0ecd7f23a7ce1426cf4f6 100644
--- a/externals/miXed/cyclone/sickle/deltaclip.c
+++ b/externals/miXed/cyclone/sickle/deltaclip.c
@@ -46,7 +46,7 @@ static t_int *deltaclip_perform(t_int *w)
 
 static void deltaclip_dsp(t_deltaclip *x, t_signal **sp)
 {
-    dsp_add(deltaclip_perform, 6, x, sp[0]->s_n,
+    dsp_add(deltaclip_perform, 6, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/edge.c b/externals/miXed/cyclone/sickle/edge.c
index b206f6ba6a9c8eab0b9890b815727cf49365ab85..f2f481bf892bdb3fd7a8ded3dcb00be00a40fb56 100644
--- a/externals/miXed/cyclone/sickle/edge.c
+++ b/externals/miXed/cyclone/sickle/edge.c
@@ -76,7 +76,7 @@ static t_int *edge_perform(t_int *w)
 
 static void edge_dsp(t_edge *x, t_signal **sp)
 {
-    dsp_add(edge_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(edge_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void edge_free(t_edge *x)
diff --git a/externals/miXed/cyclone/sickle/frameaccum.c b/externals/miXed/cyclone/sickle/frameaccum.c
index 6038ae5399caf1900aef9cfa5c6b70028598d0fe..aaab147f5bd34feb1b91ada50b9d42d1a72c603f 100644
--- a/externals/miXed/cyclone/sickle/frameaccum.c
+++ b/externals/miXed/cyclone/sickle/frameaccum.c
@@ -37,7 +37,7 @@ static void frameaccum_dsp(t_frameaccum *x, t_signal **sp)
 				 FRAMEACCUM_INISIZE, x->x_frameini,
 				 sizeof(*x->x_frame));
     memset(x->x_frame, 0, nblock * sizeof(*x->x_frame));  /* CHECKED */
-    dsp_add(frameaccum_perform, 4, nblock, x->x_frame,
+    dsp_add(frameaccum_perform, 4, (t_int)nblock, x->x_frame,
 	    sp[0]->s_vec, sp[1]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/framedelta.c b/externals/miXed/cyclone/sickle/framedelta.c
index b898444cac6a56fcb6877275da5be19bc1d9ceaf..1fe8472b84bedaea98fa2ba9147f066f04483f66 100644
--- a/externals/miXed/cyclone/sickle/framedelta.c
+++ b/externals/miXed/cyclone/sickle/framedelta.c
@@ -42,7 +42,7 @@ static void framedelta_dsp(t_framedelta *x, t_signal **sp)
 				 FRAMEDELTA_INISIZE, x->x_frameini,
 				 sizeof(*x->x_frame));
     memset(x->x_frame, 0, nblock * sizeof(*x->x_frame));  /* CHECKME */
-    dsp_add(framedelta_perform, 4, nblock, x->x_frame,
+    dsp_add(framedelta_perform, 4, (t_int)nblock, x->x_frame,
 	    sp[0]->s_vec, sp[1]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/kink.c b/externals/miXed/cyclone/sickle/kink.c
index 86bc81d93ff627175c709873aa46275a7e2f15d4..b4652a5a8257ca3ef453311fe3b2a875db9e5f2b 100644
--- a/externals/miXed/cyclone/sickle/kink.c
+++ b/externals/miXed/cyclone/sickle/kink.c
@@ -41,7 +41,7 @@ static t_int *kink_perform(t_int *w)
 
 static void kink_dsp(t_kink *x, t_signal **sp)
 {
-    dsp_add(kink_perform, 4, sp[0]->s_n,
+    dsp_add(kink_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/log.c b/externals/miXed/cyclone/sickle/log.c
index 0a1407075ceb533043dab01271a0abfe8cc3d2f4..b24ff7afedf8298fa36eb685a52e55c7d6fc5b3a 100644
--- a/externals/miXed/cyclone/sickle/log.c
+++ b/externals/miXed/cyclone/sickle/log.c
@@ -50,7 +50,7 @@ static t_int *log_perform(t_int *w)
 
 static void log_dsp(t_log *x, t_signal **sp)
 {
-    dsp_add(log_perform, 4, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec,
+    dsp_add(log_perform, 4, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec,
 	    &x->x_rcplogbase);
 }
 
diff --git a/externals/miXed/cyclone/sickle/lores.c b/externals/miXed/cyclone/sickle/lores.c
index 2fe71ee3f1489e1aafcc614c99439937721769a5..9af5e937c4942cb706c1d8bf7cf1b4fded32073d 100644
--- a/externals/miXed/cyclone/sickle/lores.c
+++ b/externals/miXed/cyclone/sickle/lores.c
@@ -83,7 +83,7 @@ static void lores_dsp(t_lores *x, t_signal **sp)
 {
     x->x_srcoef = SHARED_2PI / sp[0]->s_sr;
     lores_clear(x);
-    dsp_add(lores_perform, 6, x, sp[0]->s_n,
+    dsp_add(lores_perform, 6, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/matrix.c b/externals/miXed/cyclone/sickle/matrix.c
index df8f471c435b913a5dcc74b8ed9ab2797eb081fc..236a76c3724bd22bb9d2b49703b91cff70790e6d 100644
--- a/externals/miXed/cyclone/sickle/matrix.c
+++ b/externals/miXed/cyclone/sickle/matrix.c
@@ -348,9 +348,9 @@ static void matrix_dsp(t_matrix *x, t_signal **sp)
     if (x->x_gains)
     {
 	x->x_ksr = sp[0]->s_sr * .001;
-	dsp_add(matrixnb_perform, 2, x, nblock);
+	dsp_add(matrixnb_perform, 2, x, (t_int)nblock);
     }
-    else dsp_add(matrix01_perform, 2, x, nblock);
+    else dsp_add(matrix01_perform, 2, x, (t_int)nblock);
 }
 
 static void matrix_cellout(t_matrix *x, int indx, int ondx,
diff --git a/externals/miXed/cyclone/sickle/maximum.c b/externals/miXed/cyclone/sickle/maximum.c
index 8d947ec713a9d739e3b1f613b134b33e9de93a77..b0af7a5395d0cad961a8063f9ac1b7786ae1c696 100644
--- a/externals/miXed/cyclone/sickle/maximum.c
+++ b/externals/miXed/cyclone/sickle/maximum.c
@@ -29,7 +29,7 @@ static t_int *maximum_perform(t_int *w)
 
 static void maximum_dsp(t_maximum *x, t_signal **sp)
 {
-    dsp_add(maximum_perform, 4, sp[0]->s_n,
+    dsp_add(maximum_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/minimum.c b/externals/miXed/cyclone/sickle/minimum.c
index cb31f498c87f94e91f33c0fe1daea01ed8c13ef9..5b591b553e6b0b0c68d2de51fd07f948dc655766 100644
--- a/externals/miXed/cyclone/sickle/minimum.c
+++ b/externals/miXed/cyclone/sickle/minimum.c
@@ -29,7 +29,7 @@ static t_int *minimum_perform(t_int *w)
 
 static void minimum_dsp(t_minimum *x, t_signal **sp)
 {
-    dsp_add(minimum_perform, 4, sp[0]->s_n,
+    dsp_add(minimum_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/minmax.c b/externals/miXed/cyclone/sickle/minmax.c
index 5bd0e3914767a2f2f82ca2770ec1a5965eae3f8d..e5f63afa0e6adf7eeecf053c8ac0ace6ec8930b2 100644
--- a/externals/miXed/cyclone/sickle/minmax.c
+++ b/externals/miXed/cyclone/sickle/minmax.c
@@ -51,7 +51,7 @@ static t_int *minmax_perform(t_int *w)
 
 static void minmax_dsp(t_minmax *x, t_signal **sp)
 {
-    dsp_add(minmax_perform, 5, x, sp[0]->s_n, sp[0]->s_vec,
+    dsp_add(minmax_perform, 5, x, (t_int)sp[0]->s_n, sp[0]->s_vec,
 	    sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/mstosamps.c b/externals/miXed/cyclone/sickle/mstosamps.c
index 37b2cc5ddf86b6e5cde5196957e04f1ec1fba605..cce733d22239606a7d5e90a7498b2e6eaf5382f3 100644
--- a/externals/miXed/cyclone/sickle/mstosamps.c
+++ b/externals/miXed/cyclone/sickle/mstosamps.c
@@ -34,7 +34,7 @@ static void mstosamps_dsp(t_mstosamps *x, t_signal **sp)
 {
     x->x_ksr = sp[0]->s_sr * .001;
     dsp_add(mstosamps_perform, 4, x,
-	    sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	    (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *mstosamps_new(void)
diff --git a/externals/miXed/cyclone/sickle/onepole.c b/externals/miXed/cyclone/sickle/onepole.c
index dec0ee187d880f3277e6d1bdbb5b6b14cbb80379..e8f598fdf74ddde88ba21e062712699cd9995c0d 100644
--- a/externals/miXed/cyclone/sickle/onepole.c
+++ b/externals/miXed/cyclone/sickle/onepole.c
@@ -106,7 +106,7 @@ static void onepole_dsp(t_onepole *x, t_signal **sp)
 {
     x->x_srcoef = SHARED_2PI / sp[0]->s_sr;
     onepole_clear(x);
-    dsp_add(onepole_perform, 5, x, sp[0]->s_n,
+    dsp_add(onepole_perform, 5, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/overdrive.c b/externals/miXed/cyclone/sickle/overdrive.c
index 7bee8f770e243b3ed031e0c5c1b186df12645931..7e3740b094dfb3338617fa6d5085c4f85cb9b842 100644
--- a/externals/miXed/cyclone/sickle/overdrive.c
+++ b/externals/miXed/cyclone/sickle/overdrive.c
@@ -56,7 +56,7 @@ static t_int *overdrive_perform(t_int *w)
 static void overdrive_dsp(t_overdrive *x, t_signal **sp)
 {
     dsp_add(overdrive_perform, 4, &x->x_drivefactor,
-	    sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	    (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *overdrive_new(t_floatarg f)
diff --git a/externals/miXed/cyclone/sickle/peakamp.c b/externals/miXed/cyclone/sickle/peakamp.c
index 67d10932d27717011c44eefb958042339069655e..cf5bac31acb2dab035b57dc6e38cc7200265f1db 100644
--- a/externals/miXed/cyclone/sickle/peakamp.c
+++ b/externals/miXed/cyclone/sickle/peakamp.c
@@ -72,7 +72,7 @@ static void peakamp_dsp(t_peakamp *x, t_signal **sp)
 {
     x->x_ksr = sp[0]->s_sr * 0.001;
     x->x_nwait = (int)(x->x_waittime * x->x_ksr);
-    dsp_add(peakamp_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(peakamp_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void peakamp_free(t_peakamp *x)
diff --git a/externals/miXed/cyclone/sickle/phasewrap.c b/externals/miXed/cyclone/sickle/phasewrap.c
index 535d5e803f8f6dcc0c1ebad16f2d9a0aa2729a2d..5cf65cfbb8bb885b25fcbcf9cf83c8aeee50d25a 100644
--- a/externals/miXed/cyclone/sickle/phasewrap.c
+++ b/externals/miXed/cyclone/sickle/phasewrap.c
@@ -88,13 +88,13 @@ static void phasewrap_dsp(t_phasewrap *x, t_signal **sp)
     switch (x->x_algo)
     {
     case 1:
-	dsp_add(phasewrap_perform1, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(phasewrap_perform1, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 	break;
     case 2:
-	dsp_add(phasewrap_perform2, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(phasewrap_perform2, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 	break;
     default:
-	dsp_add(phasewrap_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	dsp_add(phasewrap_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
     }
 }
 
diff --git a/externals/miXed/cyclone/sickle/pink.c b/externals/miXed/cyclone/sickle/pink.c
index 0ba71b2c9c71ca41ba8b9f21eb063278e12a9245..19475148f4f8a612e92ed46d03953ac2b0c1ad4a 100644
--- a/externals/miXed/cyclone/sickle/pink.c
+++ b/externals/miXed/cyclone/sickle/pink.c
@@ -74,7 +74,7 @@ static t_int *pink_perform(t_int *w)
 
 static void pink_dsp(t_pink *x, t_signal **sp)
 {
-    dsp_add(pink_perform, 3, x, sp[1]->s_n, sp[1]->s_vec);
+    dsp_add(pink_perform, 3, x, (t_int)sp[1]->s_n, sp[1]->s_vec);
 }
 
 static void *pink_new(void)
diff --git a/externals/miXed/cyclone/sickle/poltocar.c b/externals/miXed/cyclone/sickle/poltocar.c
index 5c703b8a10943741092fb7236ed626600e37e02c..637cf251d4a1c0117775ba8e51601b1de39266f2 100644
--- a/externals/miXed/cyclone/sickle/poltocar.c
+++ b/externals/miXed/cyclone/sickle/poltocar.c
@@ -54,10 +54,10 @@ static t_int *poltocar_perform_noimag(t_int *w)
 static void poltocar_dsp(t_poltocar *x, t_signal **sp)
 {
     if (fragile_outlet_connections(x->x_out2))
-	dsp_add(poltocar_perform, 5, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(poltocar_perform, 5, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
     else
-	dsp_add(poltocar_perform_noimag, 4, sp[0]->s_n, sp[0]->s_vec,
+	dsp_add(poltocar_perform_noimag, 4, (t_int)sp[0]->s_n, sp[0]->s_vec,
 		sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/pong.c b/externals/miXed/cyclone/sickle/pong.c
index 70f6f938b1c125d6ad9582834b729235bb6a26b9..9143380c86e7b4cddb15428a8d64208972864d15 100644
--- a/externals/miXed/cyclone/sickle/pong.c
+++ b/externals/miXed/cyclone/sickle/pong.c
@@ -337,12 +337,12 @@ static void pong_tilde_dsp(t_pong_tilde *x, t_signal **sp)
 {
 	/*
 	if(x->x_numargs <= 1){
-		dsp_add(pong_tilde_perform_maxonly, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,  sp[0]->s_n);
+		dsp_add(pong_tilde_perform_maxonly, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,  (t_int)sp[0]->s_n);
 	}
 	
 	else{
 	*/	
-		dsp_add(pong_tilde_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+		dsp_add(pong_tilde_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 	//	};
 }
 
diff --git a/externals/miXed/cyclone/sickle/pow.c b/externals/miXed/cyclone/sickle/pow.c
index 2f95e8ffef8eb20282515a06bd8a6f0b69a31ce7..7c96454124a50a8c590340eb882eb27b4baeb0a9 100644
--- a/externals/miXed/cyclone/sickle/pow.c
+++ b/externals/miXed/cyclone/sickle/pow.c
@@ -33,7 +33,7 @@ static t_int *pow_perform(t_int *w)
 
 static void pow_dsp(t_pow *x, t_signal **sp)
 {
-    dsp_add(pow_perform, 4, sp[0]->s_n,
+    dsp_add(pow_perform, 4, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/rampsmooth.c b/externals/miXed/cyclone/sickle/rampsmooth.c
index 00819da67bd5e94b95f74e3a34fd2d7d7238a109..141cd1df591064db80f19f8887783059ac272f15 100644
--- a/externals/miXed/cyclone/sickle/rampsmooth.c
+++ b/externals/miXed/cyclone/sickle/rampsmooth.c
@@ -129,7 +129,7 @@ static t_int *rampsmooth_perform(t_int *w)
 
 static void rampsmooth_dsp(t_rampsmooth *x, t_signal **sp)
 {
-    dsp_add(rampsmooth_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(rampsmooth_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void rampsmooth_rampup(t_rampsmooth *x, t_floatarg f)
diff --git a/externals/miXed/cyclone/sickle/rand.c b/externals/miXed/cyclone/sickle/rand.c
index 29047c263e8209652f6af3ce28c76c5e91f85cd5..abceac4ef00f1f5ced1b60f4e42e9e68d54b95b4 100644
--- a/externals/miXed/cyclone/sickle/rand.c
+++ b/externals/miXed/cyclone/sickle/rand.c
@@ -67,7 +67,7 @@ static t_int *rand_perform(t_int *w)
 static void rand_dsp(t_rand *x, t_signal **sp)
 {
     x->x_rcpsr = 1. / sp[0]->s_sr;
-    dsp_add(rand_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(rand_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *rand_new(t_floatarg f)
diff --git a/externals/miXed/cyclone/sickle/reson.c b/externals/miXed/cyclone/sickle/reson.c
index a9d9cf44bff235bc8c887627d4781d0657348c04..6adcd0678f4da2f7b468959400c2c673234868c1 100644
--- a/externals/miXed/cyclone/sickle/reson.c
+++ b/externals/miXed/cyclone/sickle/reson.c
@@ -91,7 +91,7 @@ static void reson_dsp(t_reson *x, t_signal **sp)
 {
     x->x_srcoef = SHARED_2PI / sp[0]->s_sr;
     reson_clear(x);
-    dsp_add(reson_perform, 7, x, sp[0]->s_n,
+    dsp_add(reson_perform, 7, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
 	    sp[4]->s_vec);
 }
diff --git a/externals/miXed/cyclone/sickle/round.c b/externals/miXed/cyclone/sickle/round.c
index 221de14149283a332e97a1e59e03558538d16219..3d8946a69cbb75df84439777599e831621653ec1 100644
--- a/externals/miXed/cyclone/sickle/round.c
+++ b/externals/miXed/cyclone/sickle/round.c
@@ -135,7 +135,7 @@ static void round_tilde_nearest(t_round_tilde *x, t_float f, t_float glob){
 }
 static void round_tilde_dsp(t_round_tilde *x, t_signal **sp)
 {
-	dsp_add(round_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+	dsp_add(round_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/miXed/cyclone/sickle/sah.c b/externals/miXed/cyclone/sickle/sah.c
index afac1e09af4c809793f76b679d8396fe5265f0bd..e06093eb420df641a58333645130848def69af83 100644
--- a/externals/miXed/cyclone/sickle/sah.c
+++ b/externals/miXed/cyclone/sickle/sah.c
@@ -41,7 +41,7 @@ static t_int *sah_perform(t_int *w)
 
 static void sah_dsp(t_sah *x, t_signal **sp)
 {
-    dsp_add(sah_perform, 5, x, sp[0]->s_n,
+    dsp_add(sah_perform, 5, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/sampstoms.c b/externals/miXed/cyclone/sickle/sampstoms.c
index 36b686c28b17c48897eb1e9b66622cfaae8631ec..fe7882c320b19fc496fb8c4dec6527a44d833a89 100644
--- a/externals/miXed/cyclone/sickle/sampstoms.c
+++ b/externals/miXed/cyclone/sickle/sampstoms.c
@@ -34,7 +34,7 @@ static void sampstoms_dsp(t_sampstoms *x, t_signal **sp)
 {
     x->x_rcpksr = 1000. / sp[0]->s_sr;
     dsp_add(sampstoms_perform, 4, x,
-	    sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+	    (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *sampstoms_new(void)
diff --git a/externals/miXed/cyclone/sickle/sinh.c b/externals/miXed/cyclone/sickle/sinh.c
index ff33b651afb813211396ab99239f85169a0e9a4c..2b9a9fd3de94c5e90bfbbc5b035a8ff3e23fb985 100644
--- a/externals/miXed/cyclone/sickle/sinh.c
+++ b/externals/miXed/cyclone/sickle/sinh.c
@@ -29,7 +29,7 @@ static t_int *sinh_perform(t_int *w)
 
 static void sinh_dsp(t_sinh *x, t_signal **sp)
 {
-    dsp_add(sinh_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(sinh_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *sinh_new(void)
diff --git a/externals/miXed/cyclone/sickle/sinx.c b/externals/miXed/cyclone/sickle/sinx.c
index 29c7c4e515a3352b1d60f34af645cec16bb9400f..a11e1be1800e084dca7c4d0565c2cb9f4d3fd4d8 100644
--- a/externals/miXed/cyclone/sickle/sinx.c
+++ b/externals/miXed/cyclone/sickle/sinx.c
@@ -32,7 +32,7 @@ static t_int *sinx_perform(t_int *w)
 
 static void sinx_dsp(t_sinx *x, t_signal **sp)
 {
-    dsp_add(sinx_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(sinx_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *sinx_new(void)
diff --git a/externals/miXed/cyclone/sickle/slide.c b/externals/miXed/cyclone/sickle/slide.c
index f672fe0b8caae773e15c5fdd92841ac9758a8c20..d6ee78c2f78fe48b35ea38bbd96171050669ee5a 100644
--- a/externals/miXed/cyclone/sickle/slide.c
+++ b/externals/miXed/cyclone/sickle/slide.c
@@ -55,7 +55,7 @@ static t_int *slide_perform(t_int *w)
 
 static void slide_dsp(t_slide *x, t_signal **sp)
 {
-    dsp_add(slide_perform, 6, x, sp[0]->s_n,
+    dsp_add(slide_perform, 6, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/spike.c b/externals/miXed/cyclone/sickle/spike.c
index 13f9361bc4879390acd6af90fc363cf79650f364..325b3e399264fe72e056309df52a21b2304e9c72 100644
--- a/externals/miXed/cyclone/sickle/spike.c
+++ b/externals/miXed/cyclone/sickle/spike.c
@@ -76,7 +76,7 @@ static void spike_dsp(t_spike *x, t_signal **sp)
     x->x_ksr = sp[0]->s_sr * 0.001;
     x->x_rcpksr = 1000.0 / sp[0]->s_sr;
     x->x_nwait = (int)(x->x_waittime * x->x_ksr);
-    dsp_add(spike_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(spike_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void spike_free(t_spike *x)
diff --git a/externals/miXed/cyclone/sickle/svf.c b/externals/miXed/cyclone/sickle/svf.c
index bb8437bbef55ac9cf51cc269cc9d881e879d2f47..267c19b82f197d93df81e9a6101472cebd05d483 100644
--- a/externals/miXed/cyclone/sickle/svf.c
+++ b/externals/miXed/cyclone/sickle/svf.c
@@ -122,7 +122,7 @@ static void svf_dsp(t_svf *x, t_signal **sp)
 {
     x->x_srcoef = SHARED_2PI / sp[0]->s_sr;
     svf_clear(x);
-    dsp_add(svf_perform, 9, x, sp[0]->s_n,
+    dsp_add(svf_perform, 9, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
 	    sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec);
 }
diff --git a/externals/miXed/cyclone/sickle/tanh.c b/externals/miXed/cyclone/sickle/tanh.c
index 0278e84dda9571bc501a050d6d823131f70aa998..1d5978c534ccf27f53542f09315113bc8634e260 100644
--- a/externals/miXed/cyclone/sickle/tanh.c
+++ b/externals/miXed/cyclone/sickle/tanh.c
@@ -29,7 +29,7 @@ static t_int *tanh_perform(t_int *w)
 
 static void tanh_dsp(t_tanh *x, t_signal **sp)
 {
-    dsp_add(tanh_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(tanh_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *tanh_new(void)
diff --git a/externals/miXed/cyclone/sickle/tanx.c b/externals/miXed/cyclone/sickle/tanx.c
index b55e748dace70f0d5b54d6d77f6af4fd2ffcf842..4fa3c2677a1aa20191b8b5f5f77de7ec48625756 100644
--- a/externals/miXed/cyclone/sickle/tanx.c
+++ b/externals/miXed/cyclone/sickle/tanx.c
@@ -32,7 +32,7 @@ static t_int *tanx_perform(t_int *w)
 
 static void tanx_dsp(t_tanx *x, t_signal **sp)
 {
-    dsp_add(tanx_perform, 3, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(tanx_perform, 3, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 static void *tanx_new(void)
diff --git a/externals/miXed/cyclone/sickle/train.c b/externals/miXed/cyclone/sickle/train.c
index b07ba9a59293134ed6fb0c0814916dcff9327f74..9bb32239bc35f03b90f7694655534c7befa36ba1 100644
--- a/externals/miXed/cyclone/sickle/train.c
+++ b/externals/miXed/cyclone/sickle/train.c
@@ -84,7 +84,7 @@ static t_int *train_perform(t_int *w)
 static void train_dsp(t_train *x, t_signal **sp)
 {
     x->x_rcpksr = 1000. / sp[0]->s_sr;
-    dsp_add(train_perform, 6, x, sp[0]->s_n,
+    dsp_add(train_perform, 6, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/trapezoid.c b/externals/miXed/cyclone/sickle/trapezoid.c
index b33cb022f4f94fdbe879335b1cd18dc29fc72e14..89404b57273ccaf730769bbdb7449c6773031b34 100644
--- a/externals/miXed/cyclone/sickle/trapezoid.c
+++ b/externals/miXed/cyclone/sickle/trapezoid.c
@@ -77,7 +77,7 @@ static t_int *trapezoid_perform(t_int *w)
 
 static void trapezoid_dsp(t_trapezoid *x, t_signal **sp)
 {
-    dsp_add(trapezoid_perform, 6, x, sp[0]->s_n,
+    dsp_add(trapezoid_perform, 6, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/triangle.c b/externals/miXed/cyclone/sickle/triangle.c
index 703e5bab62ea98ab0b0872f9217395124d481caf..a7f61103580cd6fb016c34bf463c45ecf719fcd6 100644
--- a/externals/miXed/cyclone/sickle/triangle.c
+++ b/externals/miXed/cyclone/sickle/triangle.c
@@ -68,7 +68,7 @@ static t_int *triangle_perform(t_int *w)
 
 static void triangle_dsp(t_triangle *x, t_signal **sp)
 {
-    dsp_add(triangle_perform, 5, x, sp[0]->s_n,
+    dsp_add(triangle_perform, 5, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/trunc.c b/externals/miXed/cyclone/sickle/trunc.c
index 25d034dae1a849afc257d642ddaed2a824588da5..e1fd8265b9f0fa6c203ada7487f363af442b83d5 100644
--- a/externals/miXed/cyclone/sickle/trunc.c
+++ b/externals/miXed/cyclone/sickle/trunc.c
@@ -47,7 +47,7 @@ static t_int * trunc_perform(t_int *w){
 // DSP Function
 // ---------------------------------------------------
 static void trunc_dsp(t_trunc *x, t_signal **sp){
-   dsp_add(trunc_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+   dsp_add(trunc_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 }
 
 // ---------------------------------------------------
@@ -86,4 +86,4 @@ void trunc_tilde_setup(void) {
 
    class_addmethod(trunc_class, (t_method) trunc_dsp, gensym("dsp"), 0);
 }
-// EOF---------------------------------------------------
\ No newline at end of file
+// EOF---------------------------------------------------
diff --git a/externals/miXed/cyclone/sickle/vectral.c b/externals/miXed/cyclone/sickle/vectral.c
index b9cdf69f6d0bfeea2446adfbb49d9027cd4f5a45..a161e70fb1b58e605235318ba99db573558b2875 100644
--- a/externals/miXed/cyclone/sickle/vectral.c
+++ b/externals/miXed/cyclone/sickle/vectral.c
@@ -139,7 +139,7 @@ static void vectral_dsp(t_vectral *x, t_signal **sp)
     int nblock = sp[0]->s_n;
     if (nblock > x->x_bufsize)
 	nblock = x->x_bufsize;  /* CHECKME */
-    dsp_add(vectral_perform, 6, x, nblock,
+    dsp_add(vectral_perform, 6, x, (t_int)nblock,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
 }
 
diff --git a/externals/miXed/cyclone/sickle/zerox.c b/externals/miXed/cyclone/sickle/zerox.c
index 95b35d6c51f4042a0bbe2a2edd27acfd1e698ce0..b226f70c3a668bf49c62014a2d4af96801bbe37c 100644
--- a/externals/miXed/cyclone/sickle/zerox.c
+++ b/externals/miXed/cyclone/sickle/zerox.c
@@ -53,7 +53,7 @@ static t_int *zerox_perform(t_int *w)
 
 static void zerox_dsp(t_zerox *x, t_signal **sp)
 {
-    dsp_add(zerox_perform, 5, x, sp[0]->s_n,
+    dsp_add(zerox_perform, 5, x, (t_int)sp[0]->s_n,
 	    sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 }
 
diff --git a/externals/mjlib/convolve~.c b/externals/mjlib/convolve~.c
index e2356a9631e03a73686e39c9db9851322168b6f4..5d18d8fc8d6a4693e7edb1a289ff16d963e2df62 100644
--- a/externals/mjlib/convolve~.c
+++ b/externals/mjlib/convolve~.c
@@ -41,7 +41,7 @@ t_int *convolve_tilde_perform(t_int *w)
 
 static void convolve_tilde_dsp(t_convolve_tilde *x, t_signal **sp)
 {
-   dsp_add(convolve_tilde_perform, 5,sp[0]->s_vec, sp[1]->s_vec , sp[2]->s_vec , x ,sp[0]->s_n);
+   dsp_add(convolve_tilde_perform, 5,sp[0]->s_vec, sp[1]->s_vec , sp[2]->s_vec , x , (t_int)sp[0]->s_n);
 }
 
 /**
diff --git a/externals/mjlib/pin~.c b/externals/mjlib/pin~.c
index 51a6ba3f3ae52e9541b9e57fb93b880e5c5b1290..929a1fe1c53588d75128baaaff1978f04519ed5d 100644
--- a/externals/mjlib/pin~.c
+++ b/externals/mjlib/pin~.c
@@ -66,7 +66,7 @@ t_int *pin_tilde_perform(t_int *w)
 
 static void pin_tilde_dsp(t_pin_tilde *x, t_signal **sp)
 {
-   dsp_add(pin_tilde_perform, 5,sp[0]->s_vec, sp[1]->s_vec , sp[2]->s_vec , x ,sp[0]->s_n);
+   dsp_add(pin_tilde_perform, 5,sp[0]->s_vec, sp[1]->s_vec , sp[2]->s_vec , x ,(t_int)sp[0]->s_n);
 }
 
 /**
diff --git a/externals/mjlib/synapseA~.c b/externals/mjlib/synapseA~.c
index d6a9190f9bf2d520eb4ab5f7d7e133f092a74d16..ab99522653bf29b827657455d55ef168103af98f 100644
--- a/externals/mjlib/synapseA~.c
+++ b/externals/mjlib/synapseA~.c
@@ -59,7 +59,7 @@ t_int *synapseA_tilde_perform(t_int *w)
 static void synapseA_tilde_dsp(t_synapseA_tilde *x, t_signal **sp)
 {
 	x->n_inv=1./sp[0]->s_n;
-   dsp_add(synapseA_tilde_perform, 3,sp[0]->s_vec , x ,sp[0]->s_n);
+   dsp_add(synapseA_tilde_perform, 3,sp[0]->s_vec , x , (t_int)sp[0]->s_n);
 }
 
 /**
diff --git a/externals/mmonoplayer/atari2600~.c b/externals/mmonoplayer/atari2600~.c
index 55bce8a8027313616afabdf4298857527b3df91f..b6618cf605090beba2f369e64aa40c95eb2d9a83 100644
--- a/externals/mmonoplayer/atari2600~.c
+++ b/externals/mmonoplayer/atari2600~.c
@@ -148,7 +148,7 @@ void *atari_2600_new(void)
 
 void atari_2600_dsp(t_atari_2600 *x, t_signal **sp, short *count) 
 {   
-  dsp_add(atari_2600_perform, 3, sp[0]->s_vec, sp[0]->s_n, x); 
+  dsp_add(atari_2600_perform, 3, sp[0]->s_vec, (t_int)sp[0]->s_n, x); 
 }  
 
 t_int *atari_2600_perform(t_int *w) 
diff --git a/externals/moonlib/panvol~.c b/externals/moonlib/panvol~.c
index 11bcc378b5042314d8674d5dedaf6871899b13d5..e644e10dad36f7ffd4d49ddc228fa423d633e0e1 100644
--- a/externals/moonlib/panvol~.c
+++ b/externals/moonlib/panvol~.c
@@ -86,7 +86,7 @@ static void pan_dsp(t_pan *x, t_signal **sp)
     float *out2 = sp[2]->s_vec;
 
     dsp_add(pan_perform, 5,
-            in1, out1, out2, n, x);
+            in1, out1, out2, (t_int)n, x);
 }
 
 static void pan_f(t_pan *x, t_floatarg f)
diff --git a/externals/moonlib/sfread2~.c b/externals/moonlib/sfread2~.c
index 30e288031b4ea87bed1b5dcbe8091daca8ee6b94..e5e2a6fb9df352e99c4c28856ccfb9b43af9226c 100644
--- a/externals/moonlib/sfread2~.c
+++ b/externals/moonlib/sfread2~.c
@@ -276,17 +276,17 @@ static void sfread_dsp(t_sfread *x, t_signal **sp)
     {
     case 1:
         dsp_add(sfread_perform, 4, x, sp[0]->s_vec,
-                sp[1]->s_vec, sp[0]->s_n);
+                sp[1]->s_vec, (t_int)sp[0]->s_n);
         break;
     case 2:
         dsp_add(sfread_perform, 5, x, sp[0]->s_vec,
-                sp[1]->s_vec,sp[2]->s_vec, sp[0]->s_n);
+                sp[1]->s_vec,sp[2]->s_vec, (t_int)sp[0]->s_n);
         break;
     case 4:
         dsp_add(sfread_perform, 6, x, sp[0]->s_vec,
                 sp[1]->s_vec,sp[2]->s_vec,
                 sp[3]->s_vec,sp[4]->s_vec,
-                sp[0]->s_n);
+                (t_int)sp[0]->s_n);
         break;
     }
 }
diff --git a/externals/moonlib/ssaw~.c b/externals/moonlib/ssaw~.c
index fd6bb2486395f62119f266799110cacd8a790ef5..25ef5d06cc8cc6b4a85a39158540b2332f67c38b 100644
--- a/externals/moonlib/ssaw~.c
+++ b/externals/moonlib/ssaw~.c
@@ -183,7 +183,7 @@ static t_int *ssaw_perform(t_int *w)
 static void ssaw_dsp(t_ssaw *x, t_signal **sp)
 {
     x->x_conv = 1./sp[0]->s_sr;
-    dsp_add(ssaw_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(ssaw_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void ssaw_ft1(t_ssaw *x, t_float f)
diff --git a/externals/moonlib/tabenv.c b/externals/moonlib/tabenv.c
index b499e225acf5d614fcb08aa04fedc1dc905146bb..0e693242ebd737b94e07904f1ce60f0c831cb98c 100644
--- a/externals/moonlib/tabenv.c
+++ b/externals/moonlib/tabenv.c
@@ -224,7 +224,7 @@ static void sigenv_dsp(t_tabenv *x, t_signal **sp)
     if (x->x_period % sp[0]->s_n) x->x_realperiod =
             x->x_period + sp[0]->s_n - (x->x_period % sp[0]->s_n);
     else x->x_realperiod = x->x_period;
-    dsp_add(sigenv_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(sigenv_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     if (sp[0]->s_n > MAXVSTAKEN) bug("sigenv_dsp");
 }
 
diff --git a/externals/motex/ln~.c b/externals/motex/ln~.c
index 5cb12368019171bc6f4db83b966e07b51e580bf8..73155ade25eb6fa15764fc8035cf329f21b49518 100644
--- a/externals/motex/ln~.c
+++ b/externals/motex/ln~.c
@@ -111,9 +111,9 @@ t_int *ln_perf8(t_int *w)
 void dsp_add_ln(t_sample *in1, t_sample *out, int n, int flag)
 {
     if (n&7)
-    	dsp_add(ln_perform, 4, in1, out, n, flag);
+    	dsp_add(ln_perform, 4, in1, out, (t_int)n, (t_int)flag);
     else	
-    	dsp_add(ln_perf8, 4, in1, out, n, flag);
+    	dsp_add(ln_perf8, 4, in1, out, (t_int)n, (t_int)flag);
 }
 
 static void ln_dsp(t_ln *x, t_signal **sp)
diff --git a/externals/motex/pansig~.c b/externals/motex/pansig~.c
index 71ebf626b21ac5b68310dc8871181e9507a4a5bb..0ceb769e47a847bc24ec4516185d5f645afb7e3b 100644
--- a/externals/motex/pansig~.c
+++ b/externals/motex/pansig~.c
@@ -95,7 +95,7 @@ static void pansig_dsp(t_pansig *x, t_signal **sp)
   float *out2 = sp[3]->s_vec;
 
   dsp_add(pansig_perform, 6,
-	  in1, in2, out1, out2, n, x);
+	  in1, in2, out1, out2, (t_int)n, x);
 }
 
 void pansig_f(t_pansig *x, t_floatarg f)
diff --git a/externals/motex/pan~.c b/externals/motex/pan~.c
index 3fce96ef07a62308de99df871b4acecdcec39cde..d8fb44adeb89611c65f0adb135fb45d3054a65e3 100644
--- a/externals/motex/pan~.c
+++ b/externals/motex/pan~.c
@@ -79,7 +79,7 @@ static void pan_dsp(t_pan *x, t_signal **sp)
   float *out2 = sp[2]->s_vec;
 
   dsp_add(pan_perform, 5,
-	  in1, out1, out2, n, x);
+	  in1, out1, out2, (t_int)n, x);
 }
 
 void pan_f(t_pan *x, t_floatarg f)
diff --git a/externals/motex/pol2rec~.c b/externals/motex/pol2rec~.c
index b54d84eb668e63e987349951bf11eef806410f42..14c1d8405995839af31aea4414e001793f26d4b1 100644
--- a/externals/motex/pol2rec~.c
+++ b/externals/motex/pol2rec~.c
@@ -116,11 +116,11 @@ static void pol2rec_dsp(t_pol2rec *x, t_signal **sp)
 
     if (n&7)
       {
-      dsp_add(pol2rec_perform, 5, in1, in2, out1, out2, n);
+      dsp_add(pol2rec_perform, 5, in1, in2, out1, out2, (t_int)n);
       post("it's a seven");
       }
     else
-      dsp_add(pol2rec_perform8, 5, in1, in2, out1, out2, n);
+      dsp_add(pol2rec_perform8, 5, in1, in2, out1, out2, (t_int)n);
 }
 
 
diff --git a/externals/motex/polygate~.c b/externals/motex/polygate~.c
index 6e4a99351aef6d440c172c27561fa1b6cadf176f..dc2d1a80da552d0a10d9fcaa8c4bcd18452c8e1d 100644
--- a/externals/motex/polygate~.c
+++ b/externals/motex/polygate~.c
@@ -355,27 +355,27 @@ static void polygate_dsp(t_polygate *x, t_signal **sp)
   // must be a smarter way....
   switch (x->ninlets) 
     {
-    case 1: dsp_add(polygate_perform, 4, x, n, sp[0]->s_vec, sp[1]->s_vec);
+    case 1: dsp_add(polygate_perform, 4, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec);
       break;
-    case 2: dsp_add(polygate_perform, 5, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
+    case 2: dsp_add(polygate_perform, 5, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
       break;
-    case 3: dsp_add(polygate_perform, 6, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
+    case 3: dsp_add(polygate_perform, 6, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
       break;
-    case 4: dsp_add(polygate_perform, 7, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec);
+    case 4: dsp_add(polygate_perform, 7, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec);
       break;
-    case 5: dsp_add(polygate_perform, 8, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec);
+    case 5: dsp_add(polygate_perform, 8, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec);
       break;
-    case 6: dsp_add(polygate_perform, 9, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec);
+    case 6: dsp_add(polygate_perform, 9, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec);
       break;
-    case 7: dsp_add(polygate_perform, 10, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec);
+    case 7: dsp_add(polygate_perform, 10, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec);
       break;
-    case 8: dsp_add(polygate_perform, 11, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
+    case 8: dsp_add(polygate_perform, 11, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
 		    sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec, sp[8]->s_vec);
     break;
-    case 9: dsp_add(polygate_perform, 12, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
+    case 9: dsp_add(polygate_perform, 12, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
 		    sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec, sp[8]->s_vec, sp[9]->s_vec);
     break;
-    case 10: dsp_add(polygate_perform, 13, x, n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
+    case 10: dsp_add(polygate_perform, 13, x, (t_int)n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
 		     sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec, sp[8]->s_vec, sp[9]->s_vec, sp[10]->s_vec);
     break;
     }
diff --git a/externals/motex/rec2pol~.c b/externals/motex/rec2pol~.c
index 56441f8fb328b717b24e64d88d6f1fa45c453308..ab7be5a70ae77995d890e10bba836b7917ef1b6c 100644
--- a/externals/motex/rec2pol~.c
+++ b/externals/motex/rec2pol~.c
@@ -110,10 +110,10 @@ static void rec2pol_dsp(t_rec2pol *x, t_signal **sp)
   float *out1 = sp[2]->s_vec;
   float *out2 = sp[3]->s_vec;
   if (n&7)
-    dsp_add(rec2pol_perform, 5, in1, in2, out1, out2, n);
+    dsp_add(rec2pol_perform, 5, in1, in2, out1, out2, (t_int)n);
   else 
-    dsp_add(rec2pol_perform8, 5, in1, in2, out1, out2, n);
-/*   dsp_add(sigsqrt_perform, 3, out2, out2, n); */
+    dsp_add(rec2pol_perform8, 5, in1, in2, out1, out2, (t_int)n);
+/*   dsp_add(sigsqrt_perform, 3, out2, out2, (t_int)n); */
 }
 
 
diff --git a/externals/mrpeach/op~/op~.c b/externals/mrpeach/op~/op~.c
index 8a15bc3a35760ddfa9d85678056583717ec8aad9..5921b564a87a0abf79583c69a6c3cc28b3a2bb31 100644
--- a/externals/mrpeach/op~/op~.c
+++ b/externals/mrpeach/op~/op~.c
@@ -221,7 +221,7 @@ static void op_tilde_dsp(t_op_tilde *x, t_signal **sp)
     t_sample    *out = sp[2]->s_vec;
     int         n = sp[0]->s_n;
 
-    dsp_add(op_tilde_perform, 5, x, in1, in2, out, n);
+    dsp_add(op_tilde_perform, 5, x, in1, in2, out, (t_int)n);
 }
 
 void op_tilde_setup(void)
diff --git a/externals/mrpeach/rcosc~/rcosc~.c b/externals/mrpeach/rcosc~/rcosc~.c
index 0ab1c9de686d78c49f7686ef8d020f572bfc41e6..601b1fa7a1d31b8bd9554b084cace90b946a53fc 100644
--- a/externals/mrpeach/rcosc~/rcosc~.c
+++ b/externals/mrpeach/rcosc~/rcosc~.c
@@ -79,7 +79,7 @@ static t_int *rcosc_tilde_perform(t_int *w)
 static void rcosc_tilde_dsp(t_rcosc_tilde *x, t_signal **sp)
 {
     x->rc_sp = sys_getsr();
-    dsp_add(rcosc_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(rcosc_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *rcosc_tilde_new(t_floatarg f)
diff --git a/externals/mrpeach/rc~/rc~.c b/externals/mrpeach/rc~/rc~.c
index 5cc750aca31a2290e3d94e068ed6367a8e534820..1160ef3be270fc85037c552b812a12ba42d60a0a 100644
--- a/externals/mrpeach/rc~/rc~.c
+++ b/externals/mrpeach/rc~/rc~.c
@@ -41,7 +41,7 @@ static t_int *rc_tilde_perform(t_int *w)
 
 static void rc_tilde_dsp(t_rc_tilde *x, t_signal **sp)
 {
-    dsp_add(rc_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(rc_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *rc_tilde_new(t_floatarg f)
diff --git a/externals/mrpeach/rojo~/rojo~.c b/externals/mrpeach/rojo~/rojo~.c
index 13c2f6b66d5dbb56ed736643b289e484c8956142..bf8eb86ad52677ba1a5197093d0646867749f859 100644
--- a/externals/mrpeach/rojo~/rojo~.c
+++ b/externals/mrpeach/rojo~/rojo~.c
@@ -84,7 +84,7 @@ static t_int *perform0(t_int *w)
 /*------------------------------------------------------------------*/
 static void rojo_dsp(t_rojo *x, t_signal **sp)
 {
-    dsp_add(perform0, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(perform0, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 /*------------------------------------------------------------------*/
 /* outlet 0:  red noise outlet       */
diff --git a/externals/mrpeach/sqosc~/sqosc~.c b/externals/mrpeach/sqosc~/sqosc~.c
index b62500647206bf37fe6b9b7bb016d46455491dfc..d4f8b35be787c2353448b9355bde5013abadab99 100644
--- a/externals/mrpeach/sqosc~/sqosc~.c
+++ b/externals/mrpeach/sqosc~/sqosc~.c
@@ -322,7 +322,7 @@ static void sqosc_dsp(t_sqosc *x, t_signal **sp)
     x->x_conv = SQOSCTABSIZE/sp[0]->s_sr;
 /* conv = table period = (samples/cycle)/(samples/sec) = sec/cycle = 0.011610sec for 512/44100 */
 
-    dsp_add(sqosc_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sqosc_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void sqosc_ft1(t_sqosc *x, t_float f)
diff --git a/externals/nusmuk/nusmuk-audio/bq~.c b/externals/nusmuk/nusmuk-audio/bq~.c
index af7b368660f7d6b1002bcf68ab37b1404ebb1df5..9059756a63a7f6d643e4ac02a01a6739a97feef8 100644
--- a/externals/nusmuk/nusmuk-audio/bq~.c
+++ b/externals/nusmuk/nusmuk-audio/bq~.c
@@ -93,7 +93,7 @@ static void bq_tilde_dsp(t_bq_tilde *x, t_signal **sp)
 {
     dsp_add(bq_tilde_perform, 9,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, 
-			sp[5]->s_vec, sp[6]->s_vec, x->x_ctl, sp[0]->s_n);
+			sp[5]->s_vec, sp[6]->s_vec, x->x_ctl, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/nusmuk/nusmuk-audio/tabosc4c~.c b/externals/nusmuk/nusmuk-audio/tabosc4c~.c
index b7ebf5100a6e3b22f41c5c034d368dd196f4e133..1eea1d8280d915678bc032d1fa6c4a057c22babf 100644
--- a/externals/nusmuk/nusmuk-audio/tabosc4c~.c
+++ b/externals/nusmuk/nusmuk-audio/tabosc4c~.c
@@ -225,7 +225,7 @@ static void tabosc4c_tilde_dsp(t_tabosc4c_tilde *x, t_signal **sp)
     tabosc4c_tilde_set(x, x->x_arrayname);
 
     dsp_add(tabosc4c_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void tabosc4c_tilde_setup(void)
diff --git a/externals/nusmuk/nusmuk-audio/tabosci~.c b/externals/nusmuk/nusmuk-audio/tabosci~.c
index 6301636a124b1719d7a973be322630c5ab98472a..b350a3518da694365d00b09b308538acb30cdf41 100644
--- a/externals/nusmuk/nusmuk-audio/tabosci~.c
+++ b/externals/nusmuk/nusmuk-audio/tabosci~.c
@@ -297,7 +297,7 @@ static void tabosci_tilde_dsp(t_tabosci_tilde *x, t_signal **sp)
         x->x_conv = 1. / sp[0]->s_sr;
     }
     tabosci_tilde_set(x, x->x_arrayname);
-    dsp_add(tabosci_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(tabosci_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void tabosci_tilde_setup(void)
diff --git a/externals/nusmuk/nusmuk-audio/tabread4c~.c b/externals/nusmuk/nusmuk-audio/tabread4c~.c
index e0de208f6a2c0d88d9c96a40af5979506f801756..c9b694778d6d2bef29752487b4f438d922bdca39 100644
--- a/externals/nusmuk/nusmuk-audio/tabread4c~.c
+++ b/externals/nusmuk/nusmuk-audio/tabread4c~.c
@@ -155,7 +155,7 @@ static void tabread4c_tilde_dsp(t_tabread4c_tilde *x, t_signal **sp)
     tabread4c_tilde_set(x, x->x_arrayname);
 
     dsp_add(tabread4c_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/olafmatt/clone/clone.c b/externals/olafmatt/clone/clone.c
index 0b4dd30ce8429e763f81b61a31c9641c549f9096..aa3007cd61ee7207688be7d8d9b57928e8df8172 100644
--- a/externals/olafmatt/clone/clone.c
+++ b/externals/olafmatt/clone/clone.c
@@ -558,38 +558,38 @@ static void clone_dsp(t_clone *x, t_signal **sp)
 			switch (nsig)
 			{
 				case 1:
-					dsp_add(clone_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+					dsp_add(clone_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 					break;
 				case 2:
 					dsp_add(clone_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, 
-						sp[0]->s_n);
+						(t_int)sp[0]->s_n);
 					break;
 				case 3:
 					dsp_add(clone_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, 
-						sp[2]->s_vec, sp[0]->s_n);
+						sp[2]->s_vec, (t_int)sp[0]->s_n);
 					break;
 				case 4:
 					dsp_add(clone_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, 
-						sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+						sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 					break;
 				case 5:
 					dsp_add(clone_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, 
-						sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[0]->s_n);
+						sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, (t_int)sp[0]->s_n);
 					break;
 				case 6:
 					dsp_add(clone_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, 
 						sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec,
-						sp[0]->s_n);
+						(t_int)sp[0]->s_n);
 					break;
 				case 7:
 					dsp_add(clone_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, 
 						sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec,
-						sp[6]->s_vec, sp[0]->s_n);
+						sp[6]->s_vec, (t_int)sp[0]->s_n);
 					break;
 				case 8:
 					dsp_add(clone_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec, 
 						sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec,
-						sp[6]->s_vec, sp[7]->s_vec, sp[0]->s_n);
+						sp[6]->s_vec, sp[7]->s_vec, (t_int)sp[0]->s_n);
 					break;
 				default:
 					break;
diff --git a/externals/olafmatt/clone/clone_signal.c b/externals/olafmatt/clone/clone_signal.c
index e650bc81b9aa95a652b2abfdd8912f01ed043d9c..df3fe702b13c063a6d8c32dab93e126560c6afb0 100644
--- a/externals/olafmatt/clone/clone_signal.c
+++ b/externals/olafmatt/clone/clone_signal.c
@@ -75,7 +75,7 @@ void clone_sigout_set(t_clone_sigout *x, int vs, t_float *vec)
 static void clone_sigout_dsp(t_clone_sigout *x, t_signal **sp)
 {
     if (sp[0]->s_n == x->x_vs)
-		dsp_add(clone_sigout_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+		dsp_add(clone_sigout_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     else
     	pd_error(x, "out~: vector size mismatch (dsp)");
 }
@@ -142,7 +142,7 @@ void clone_sigin_set(t_clone_sigin *x, int vs, t_float *vec)
 static void clone_sigin_dsp(t_clone_sigin *x, t_signal **sp)
 {
     if (sp[0]->s_n == x->x_vs)
-		dsp_add(clone_sigin_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+		dsp_add(clone_sigin_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     else
     	pd_error(x, "in~: vector size mismatch (dsp)");
 }
diff --git a/externals/oscbank~/oscbank~.c b/externals/oscbank~/oscbank~.c
index ff5931213dd381f8bfc01bca4b78b8a1e51fad6b..e8b79871c67902c8d8fba8e202e5389b2528e4e4 100644
--- a/externals/oscbank~/oscbank~.c
+++ b/externals/oscbank~/oscbank~.c
@@ -226,7 +226,7 @@ static void oscbank_dsp(t_oscbank *x, t_signal **sp)
 {
     x->sampleRate =  sp[0]->s_sr;
     x->sampleperiod = 1 / x->sampleRate;
-    dsp_add(oscbank_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(oscbank_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *oscbank_new(void)
diff --git a/externals/pdogg/oggread~.c b/externals/pdogg/oggread~.c
index fcb93975fe29d2a924a4efe3c8363d46b21534a4..0fabdec56e88dd43e9c971467546bd1c2eeb6ead 100644
--- a/externals/pdogg/oggread~.c
+++ b/externals/pdogg/oggread~.c
@@ -215,7 +215,7 @@ static t_int *oggread_perform(t_int *w)
 
 static void oggread_dsp(t_oggread *x, t_signal **sp)
 {
-    dsp_add(oggread_perform, 4, x, sp[1]->s_vec, sp[2]->s_vec, sp[1]->s_n);
+    dsp_add(oggread_perform, 4, x, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[1]->s_n);
 }
 
 
diff --git a/externals/pdogg/oggwrite~.c b/externals/pdogg/oggwrite~.c
index a241ae97daf8df823bf51a7de0fe4c9985bba550..10376c067046c4f764379ab33ea7ee26bb10f3b2 100644
--- a/externals/pdogg/oggwrite~.c
+++ b/externals/pdogg/oggwrite~.c
@@ -291,7 +291,7 @@ static t_int *oggwrite_perform(t_int *w)
 
 static void oggwrite_dsp(t_oggwrite *x, t_signal **sp)
 {
-    dsp_add(oggwrite_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(oggwrite_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
     /* initialize the vorbisenc library */
diff --git a/externals/pdp/modules/generic/pdp_metro.c b/externals/pdp/modules/generic/pdp_metro.c
index 9e3e96b575751a41af5361f3238b86ede882c21c..1b2cb9013996313c0dc3ef7aa201ba7d0103594e 100644
--- a/externals/pdp/modules/generic/pdp_metro.c
+++ b/externals/pdp/modules/generic/pdp_metro.c
@@ -50,7 +50,7 @@ static t_int *metro_perform(t_int *w);
 #define DSP_ARG(type, name, source) type name = (type)source
 static void metro_dsp(t_metro *x, t_signal **sp)
 {
-    dsp_add(metro_perform, 3, x, sp[0]->s_n, (int)sys_getsr());
+    dsp_add(metro_perform, 3, x, (t_int)sp[0]->s_n, (t_int)sys_getsr());
 }
 static t_int *metro_perform(t_int *w){
     DSP_ARG(t_metro*, x,  w[1]);
diff --git a/externals/pdp/modules/image_io/pdp_qt.c b/externals/pdp/modules/image_io/pdp_qt.c
index 530b87fe181546f1b2853458252bca0c20839ca2..83740379e17d7dd149a73c8fe0b93b5441d6a996 100644
--- a/externals/pdp/modules/image_io/pdp_qt.c
+++ b/externals/pdp/modules/image_io/pdp_qt.c
@@ -838,7 +838,7 @@ static t_int *pdp_qt_perform(t_int *w)
 
 static void pdp_qt_dsp(t_pdp_qt *x, t_signal **sp)
 {
-    dsp_add(pdp_qt_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(pdp_qt_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/pdp/modules/image_special/pdp_scan.c b/externals/pdp/modules/image_special/pdp_scan.c
index 2efdd0457a21488cefa21c3009edcecc5e63f432..0674c905e01cd85a068bade9da7b672f934273c5 100644
--- a/externals/pdp/modules/image_special/pdp_scan.c
+++ b/externals/pdp/modules/image_special/pdp_scan.c
@@ -156,7 +156,7 @@ static void pdp_scan_input_0(t_pdp_scan *x, t_symbol *s, t_floatarg f)
 
 static void pdp_scan_dsp (t_pdp_scan *x, t_signal **sp)
 {
-    dsp_add(pdp_scan_perform, 4, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
+    dsp_add(pdp_scan_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec);
 
 }
 
diff --git a/externals/pdp/modules/image_special/pdp_scanxy.c b/externals/pdp/modules/image_special/pdp_scanxy.c
index 90d96e5acce8bc9ce583f54be6901c378530acc0..feeebf6127656a07db251eb44b1c8a705bb413b9 100644
--- a/externals/pdp/modules/image_special/pdp_scanxy.c
+++ b/externals/pdp/modules/image_special/pdp_scanxy.c
@@ -141,7 +141,7 @@ static void pdp_scanxy_input_0(t_pdp_scanxy *x, t_symbol *s, t_floatarg f)
 
 static void pdp_scanxy_dsp (t_pdp_scanxy *x, t_signal **sp)
 {
-    dsp_add(pdp_scanxy_perform, 5, x, sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
+    dsp_add(pdp_scanxy_perform, 5, x, (t_int)sp[0]->s_n, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec);
 
 }
 
diff --git a/externals/pdp/modules/image_special/pdp_scope.c b/externals/pdp/modules/image_special/pdp_scope.c
index 5b28b85b768a9634a99763ecdb0eb1d2db364a71..18627151c4c26c418ecd53c6b66b38f7ea800bec 100644
--- a/externals/pdp/modules/image_special/pdp_scope.c
+++ b/externals/pdp/modules/image_special/pdp_scope.c
@@ -255,7 +255,7 @@ static t_int *pdp_scope_perform(t_int *w)
 }
 static void pdp_scope_dsp(t_pdp_scope *x, t_signal **sp)
 {
-    dsp_add(pdp_scope_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(pdp_scope_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 
 }
   
diff --git a/externals/pidip/modules/pdp_icedthe~.c b/externals/pidip/modules/pdp_icedthe~.c
index 9d481d410fe3ce12fc8c9f45ca890e5f63050c11..ad1abfaa4bfeef7c86eb966b72de32dd5bcd04b5 100755
--- a/externals/pidip/modules/pdp_icedthe~.c
+++ b/externals/pidip/modules/pdp_icedthe~.c
@@ -1289,7 +1289,7 @@ static t_int *pdp_icedthe_perform(t_int *w)
 
 static void pdp_icedthe_dsp(t_pdp_icedthe *x, t_signal **sp)
 {
-    dsp_add(pdp_icedthe_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(pdp_icedthe_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void pdp_icedthe_free(t_pdp_icedthe *x)
diff --git a/externals/pidip/modules/pdp_rec~.c b/externals/pidip/modules/pdp_rec~.c
index e7744a9c5044e9f657f864fe51e49ae216055fb1..0cdea9385650cc63352719fe8b10f98042a6f1b0 100755
--- a/externals/pidip/modules/pdp_rec~.c
+++ b/externals/pidip/modules/pdp_rec~.c
@@ -473,7 +473,7 @@ static t_int *pdp_rec_perform(t_int *w)
 
 static void pdp_rec_dsp(t_pdp_rec *x, t_signal **sp)
 {
-    dsp_add(pdp_rec_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(pdp_rec_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void pdp_rec_process_yv12(t_pdp_rec *x)
diff --git a/externals/pidip/modules/pdp_segsnd~.c b/externals/pidip/modules/pdp_segsnd~.c
index 54bbf398723b939549d19690d0cace192b46f1ea..6329d4e9ece903ad188a7a8bc5da6b4ef3212644 100755
--- a/externals/pidip/modules/pdp_segsnd~.c
+++ b/externals/pidip/modules/pdp_segsnd~.c
@@ -343,7 +343,7 @@ static t_int *pdp_segsnd_perform(t_int *w)
 
 static void pdp_segsnd_dsp(t_pdp_segsnd *x, t_signal **sp)
 {
-    dsp_add(pdp_segsnd_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(pdp_segsnd_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 t_class *pdp_segsnd_class;
diff --git a/externals/pidip/modules/pdp_theonice~.c b/externals/pidip/modules/pdp_theonice~.c
index 23fc2317bef1971b261c369f28c9789c7e79e084..23fc77c4d72963db05aa565bf235b596fbb6bf4f 100755
--- a/externals/pidip/modules/pdp_theonice~.c
+++ b/externals/pidip/modules/pdp_theonice~.c
@@ -985,7 +985,7 @@ static t_int *pdp_theonice_perform(t_int *w)
 
 static void pdp_theonice_dsp(t_pdp_theonice *x, t_signal **sp)
 {
-    dsp_add(pdp_theonice_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(pdp_theonice_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void pdp_theonice_process_yv12(t_pdp_theonice *x)
diff --git a/externals/pidip/modules/pdp_theorin~.c b/externals/pidip/modules/pdp_theorin~.c
index c689cd6ae8559e85483f44b590dbc79e6bb77aa0..b1574fb0f4e7a4ce6913466194ea6b41d5fd4877 100755
--- a/externals/pidip/modules/pdp_theorin~.c
+++ b/externals/pidip/modules/pdp_theorin~.c
@@ -879,7 +879,7 @@ static t_int *pdp_theorin_perform(t_int *w)
 
 static void pdp_theorin_dsp(t_pdp_theorin *x, t_signal **sp)
 {
-    dsp_add(pdp_theorin_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(pdp_theorin_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void pdp_theorin_free(t_pdp_theorin *x)
diff --git a/externals/pidip/modules/pdp_theorout~.c b/externals/pidip/modules/pdp_theorout~.c
index c8281c70281b94676e3ebc1242817e8efe516b76..9f6e84af92cc379218c3a174da24e9b10f04d091 100755
--- a/externals/pidip/modules/pdp_theorout~.c
+++ b/externals/pidip/modules/pdp_theorout~.c
@@ -518,7 +518,7 @@ static t_int *pdp_theorout_perform(t_int *w)
 
 static void pdp_theorout_dsp(t_pdp_theorout *x, t_signal **sp)
 {
-    dsp_add(pdp_theorout_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(pdp_theorout_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void pdp_theorout_process_yv12(t_pdp_theorout *x)
diff --git a/externals/pidip/modules/pdp_yqt.c b/externals/pidip/modules/pdp_yqt.c
index 0414cda7b98d0263c7c19cf6d56a2cf97b057373..5ae2edd8083a6980e2aa1b3ce8947de6fe5c494a 100755
--- a/externals/pidip/modules/pdp_yqt.c
+++ b/externals/pidip/modules/pdp_yqt.c
@@ -428,7 +428,7 @@ static t_int *pdp_yqt_perform(t_int *w)
 
 static void pdp_yqt_dsp(t_pdp_yqt *x, t_signal **sp)
 {
-    dsp_add(pdp_yqt_perform, 4, x, sp[1]->s_vec, sp[2]->s_vec, sp[1]->s_n);
+    dsp_add(pdp_yqt_perform, 4, x, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[1]->s_n);
 }
 
 
diff --git a/externals/pmpd/pmpd~.c b/externals/pmpd/pmpd~.c
index 7ca462681f239fb7e9a751d5d56c254dd317b8f7..1c4d842d07e671ce53fbb9022cb9605cfbde3ef1 100644
--- a/externals/pmpd/pmpd~.c
+++ b/externals/pmpd/pmpd~.c
@@ -219,7 +219,7 @@ void pmpd_tilde_dsp(t_pmpd_tilde *x, t_signal **sp)
 	for (i=0; i<x->nb_outlet; i++)
 		x->outlet_vector[i] = sp[i+x->nb_inlet]->s_vec;
 
-	dsp_add(pmpd_tilde_perform, 2, x, sp[0]->s_n);
+	dsp_add(pmpd_tilde_perform, 2, x, (t_int)sp[0]->s_n);
 }
 
 void pmpd_tilde_bang(t_pmpd_tilde *x)
diff --git a/externals/postlude/flib/src/bmax~.c b/externals/postlude/flib/src/bmax~.c
index 26b93dbfcadd2353b5fa4c8a4edb431b2c0f658e..869e44d5ba6ba008ef575572e023541787da8fc2 100644
--- a/externals/postlude/flib/src/bmax~.c
+++ b/externals/postlude/flib/src/bmax~.c
@@ -74,7 +74,7 @@ static t_int *bmax_perform(t_int *w)
 static void bmax_dsp(t_bmax *x, t_signal **sp)
 {
   dsp_add(bmax_perform, 4,
-          sp[0]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *bmax_new(t_floatarg f)
diff --git a/externals/postlude/flib/src/cc~.c b/externals/postlude/flib/src/cc~.c
index 88ce67e59eecaeb55e697787879528ca9e642efa..882e3edb2b89641560f67f8d19cd6e722a1a1218 100644
--- a/externals/postlude/flib/src/cc~.c
+++ b/externals/postlude/flib/src/cc~.c
@@ -239,10 +239,10 @@ static void cc_dsp(t_cc *x, t_signal **sp)
 {
     if(!x->is_freq_domain)
 	dsp_add(cc_perform_time_domain, 5,
-		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n, x->delay);
+		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n, x->delay);
     else
 	dsp_add(cc_perform_freq_domain, 5, x,
-		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/postlude/flib/src/clean~.c b/externals/postlude/flib/src/clean~.c
index 33513b8fb8d4bbaa896f7c87e0961ca7598c0751..f2b39e79fbafd81304b9bc66636e8945cba5fd27 100644
--- a/externals/postlude/flib/src/clean~.c
+++ b/externals/postlude/flib/src/clean~.c
@@ -60,7 +60,7 @@ static t_int *clean_perform(t_int *w)
 static void clean_dsp(t_clean *x, t_signal **sp)
 {
   dsp_add(clean_perform, 4,
-          sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x);
+          sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 static void clean_float(t_clean *x, t_float f)  
diff --git a/externals/postlude/flib/src/cross~.c b/externals/postlude/flib/src/cross~.c
index dd94bea014d928ab045008123dcc80d7d5eab450..0a93a11457127d4a8aa5252ff11a9adf8755f998 100644
--- a/externals/postlude/flib/src/cross~.c
+++ b/externals/postlude/flib/src/cross~.c
@@ -162,10 +162,10 @@ static void cross_dsp(t_cross *x, t_signal **sp)
 {
     if(!x->is_freq_domain)
 	dsp_add(cross_perform_time_domain, 5,
-		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n, x->delay);
+		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n, x->delay);
     else
 	dsp_add(cross_perform_freq_domain, 5, x,
-		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+		sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *cross_new(t_symbol *s, t_int argc, t_atom *argv)
diff --git a/externals/postlude/flib/src/ha~.c b/externals/postlude/flib/src/ha~.c
index aa70190bfc766c300681286efb51e407146a2a6e..76f7ef81c31384b93f6e700e6c7a42704c25eefa 100644
--- a/externals/postlude/flib/src/ha~.c
+++ b/externals/postlude/flib/src/ha~.c
@@ -49,7 +49,7 @@ static t_int *hca_perform(t_int *w)
 static void hca_dsp(t_hca *x, t_signal **sp)
 {
   dsp_add(hca_perform, 3,
-          sp[0]->s_vec, sp[0]->s_n, x->p);
+          sp[0]->s_vec, (t_int)sp[0]->s_n, x->p);
 
 }
 
diff --git a/externals/postlude/flib/src/hca~.c b/externals/postlude/flib/src/hca~.c
index e551879ba165747e55c80cf912b1cd7363219503..ad9787798588279caa817f1bda1dbee9fc8d74ad 100644
--- a/externals/postlude/flib/src/hca~.c
+++ b/externals/postlude/flib/src/hca~.c
@@ -69,7 +69,7 @@ static t_int *hca_perform(t_int *w)
 static void hca_dsp(t_hca *x, t_signal **sp)
 {
   dsp_add(hca_perform, 3,
-          sp[0]->s_vec, sp[0]->s_n, x);
+          sp[0]->s_vec, (t_int)sp[0]->s_n, x);
 
 }
 
diff --git a/externals/postlude/flib/src/irreg~.c b/externals/postlude/flib/src/irreg~.c
index 3733997cd05514e4731a06ddd4798a3a0ad81f95..8dd7fca60dc3fa0c9e38259d09d970f26b968f76 100644
--- a/externals/postlude/flib/src/irreg~.c
+++ b/externals/postlude/flib/src/irreg~.c
@@ -46,7 +46,7 @@ static t_int *irreg_perform(t_int *w)
 static void irreg_dsp(t_irreg *x, t_signal **sp)
 {
   dsp_add(irreg_perform, 3,
-          sp[0]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *irreg_new(void)
diff --git a/externals/postlude/flib/src/melf~.c b/externals/postlude/flib/src/melf~.c
index ebe4a22260e768f0f0f27bd232fd0113c778fd57..f0ae6bbc85e56abed28d7a7259352846faf22702 100644
--- a/externals/postlude/flib/src/melf~.c
+++ b/externals/postlude/flib/src/melf~.c
@@ -72,7 +72,7 @@ static void melf_dsp(t_melf *x, t_signal **sp)
 {
   int n;
   dsp_add(melf_perform, 3,
-          sp[0]->s_vec, sp[0]->s_n, x);
+          sp[0]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 static void *melf_new(t_symbol *s, t_int argc, t_atom *argv)
diff --git a/externals/postlude/flib/src/mspec~.c b/externals/postlude/flib/src/mspec~.c
index 7538f08e93bef7f74b7e22ad4562e8360f4d5583..8925fdb0b7b331c8a9602303f95afadaf36c6162 100644
--- a/externals/postlude/flib/src/mspec~.c
+++ b/externals/postlude/flib/src/mspec~.c
@@ -60,7 +60,7 @@ static t_int *mspec_perform(t_int *w)
 static void mspec_dsp(t_mspec *x, t_signal **sp)
 {
   dsp_add(mspec_perform, 5,
-          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n, x->p);
+          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n, x->p);
 }
 
 static void *mspec_new(t_floatarg f)
diff --git a/externals/postlude/flib/src/peak~.c b/externals/postlude/flib/src/peak~.c
index 02107ace764e7600b81d4159206e062de5379748..7c68a996ce0cca2fa346d5a2b8d93a74f0990331 100644
--- a/externals/postlude/flib/src/peak~.c
+++ b/externals/postlude/flib/src/peak~.c
@@ -97,7 +97,7 @@ static t_int *peak_perform(t_int *w)
 
 static void peak_dsp(t_peak *x, t_signal **sp)
 {
-  dsp_add(peak_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n,&x->thresh, x);
+  dsp_add(peak_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n,&x->thresh, x);
 }
 
 static void *peak_new(t_symbol *s, t_int argc, t_atom *argv)
diff --git a/externals/postlude/flib/src/pp~.c b/externals/postlude/flib/src/pp~.c
index 62eba15dbf85663024436e79bb1a2937467805e0..75db5d94eb02d88c5b1c3086cc55f5cfb5b03c93 100644
--- a/externals/postlude/flib/src/pp~.c
+++ b/externals/postlude/flib/src/pp~.c
@@ -45,7 +45,7 @@ static t_int *pp_perform(t_int *w)
 static void pp_dsp(t_pp *x, t_signal **sp)
 {
   dsp_add(pp_perform, 3,
-          sp[0]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *pp_new(void)
diff --git a/externals/postlude/flib/src/pspec~.c b/externals/postlude/flib/src/pspec~.c
index 76da337365d0cd45936bd1f78fdb3c0fb39ad963..b77e7c19a49cf01bd7b9e632538c3c7abd727f95 100644
--- a/externals/postlude/flib/src/pspec~.c
+++ b/externals/postlude/flib/src/pspec~.c
@@ -51,7 +51,7 @@ static t_int *pspec_perform(t_int *w)
 static void pspec_dsp(t_pspec *x, t_signal **sp)
 {
   dsp_add(pspec_perform, 4,
-          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *pspec_new(void)
diff --git a/externals/postlude/flib/src/sc~.c b/externals/postlude/flib/src/sc~.c
index aa5ec5c877bf9f566fe94faa64afe779ab1efb68..cb3cb3b1aef909493287752c55e23097bbc7968a 100644
--- a/externals/postlude/flib/src/sc~.c
+++ b/externals/postlude/flib/src/sc~.c
@@ -50,7 +50,7 @@ static t_int *sc_perform(t_int *w)
 static void sc_dsp(t_sc *x, t_signal **sp)
 {
   dsp_add(sc_perform, 4,
-          sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *sc_new(void)
diff --git a/externals/postlude/flib/src/sfm~.c b/externals/postlude/flib/src/sfm~.c
index ca19ca3883b8e7c405b2e128a5904b403b8921ec..5f956f5acc955252edae5bac94d9f6da7ab15871 100644
--- a/externals/postlude/flib/src/sfm~.c
+++ b/externals/postlude/flib/src/sfm~.c
@@ -51,7 +51,7 @@ static t_int *sfm_perform(t_int *w)
 static void sfm_dsp(t_sfm *x, t_signal **sp)
 {
   dsp_add(sfm_perform, 3,
-          sp[0]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *sfm_new(void)
diff --git a/externals/postlude/flib/src/ss~.c b/externals/postlude/flib/src/ss~.c
index a510f1c5a6986717dd0968e3c25d1a535d7a4c02..3a00759335c4c39eb6d2a6578ea8502eb3210dc5 100644
--- a/externals/postlude/flib/src/ss~.c
+++ b/externals/postlude/flib/src/ss~.c
@@ -47,7 +47,7 @@ static t_int *ss_perform(t_int *w)
 static void ss_dsp(t_ss *x, t_signal **sp)
 {
   dsp_add(ss_perform, 3,
-          sp[0]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *ss_new(void)
diff --git a/externals/postlude/flib/src/trist~.c b/externals/postlude/flib/src/trist~.c
index b04c8bb72120802a6ebe5ce28aa5bd9db55f1273..d0fb9b2f4814fee3119319df91da3d90df478800 100644
--- a/externals/postlude/flib/src/trist~.c
+++ b/externals/postlude/flib/src/trist~.c
@@ -67,7 +67,7 @@ static t_int *trist_perform(t_int *w)
 static void trist_dsp(t_trist *x, t_signal **sp)
 {
   dsp_add(trist_perform, 3,
-          sp[0]->s_vec, x, sp[0]->s_n);
+          sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *trist_new(t_symbol *s)
diff --git a/externals/postlude/flib/src/wdv~.c b/externals/postlude/flib/src/wdv~.c
index 22ca536eacd38ea9dac890987ce06d6d114c90c4..2396ab291ea86b11a3d9de993536ce536ce59f2b 100644
--- a/externals/postlude/flib/src/wdv~.c
+++ b/externals/postlude/flib/src/wdv~.c
@@ -164,7 +164,7 @@ static t_int *wdv_perform(t_int *w)
 static void wdv_dsp(t_wdv *x, t_signal **sp)
 {
   dsp_add(wdv_perform, 3,
-          sp[0]->s_vec, sp[0]->s_n, x);
+          sp[0]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 static void *wdv_new(t_symbol *s, t_int argc, t_atom *argv)
diff --git a/externals/rjlib/src/rj_barkflux_accum~.c b/externals/rjlib/src/rj_barkflux_accum~.c
index 90c5bd99eab34c492b720c4f27ccd00b7a366533..d9994469ccc233e6d60a68d1a33531ebe116bd4c 100644
--- a/externals/rjlib/src/rj_barkflux_accum~.c
+++ b/externals/rjlib/src/rj_barkflux_accum~.c
@@ -258,7 +258,7 @@ static t_int *rj_barkflux_accum_perform(t_int *w)
     out the samples. */
 static void rj_barkflux_accum_dsp(t_rj_barkflux_accum *x, t_signal **sp)
 {
-    dsp_add(rj_barkflux_accum_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(rj_barkflux_accum_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void accum_set_st(t_rj_barkflux_accum *x, t_floatarg g)
diff --git a/externals/rjlib/src/rj_centroid~.c b/externals/rjlib/src/rj_centroid~.c
index 893a6aee519b75e76840595ddb38f510096c9fcc..211d042c82591625ad30bb4cd86c7b468c815b0c 100644
--- a/externals/rjlib/src/rj_centroid~.c
+++ b/externals/rjlib/src/rj_centroid~.c
@@ -61,7 +61,7 @@ static t_int *rj_centroid_perform(t_int *w)
     out the samples. */
 static void rj_centroid_dsp(t_rj_centroid *x, t_signal **sp)
 {
-    dsp_add(rj_centroid_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(rj_centroid_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *rj_centroid_new(void)
diff --git a/externals/rjlib/src/rj_senergy~.c b/externals/rjlib/src/rj_senergy~.c
index 2fa99f6b3e0151fae6073a7093495dc38a2ac604..12f6d18b0bf648c9b37dfc1b2d6cad64789fe003 100644
--- a/externals/rjlib/src/rj_senergy~.c
+++ b/externals/rjlib/src/rj_senergy~.c
@@ -54,7 +54,7 @@ static t_int *rj_senergy_perform(t_int *w)
     out the samples. */
 static void rj_senergy_dsp(t_rj_senergy *x, t_signal **sp)
 {
-    dsp_add(rj_senergy_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(rj_senergy_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *rj_senergy_new(void)
diff --git a/externals/rjlib/src/rj_zcr~.c b/externals/rjlib/src/rj_zcr~.c
index d12d332e8bce2059f753ff798d02d54b06cfc700..a00a06d9d2bc5d16a67792dc55f8945c47800222 100644
--- a/externals/rjlib/src/rj_zcr~.c
+++ b/externals/rjlib/src/rj_zcr~.c
@@ -69,7 +69,7 @@ static t_int *rj_zcr_perform(t_int *w)
     out the samples. */
 static void rj_zcr_dsp(t_rj_zcr *x, t_signal **sp)
 {
-    dsp_add(rj_zcr_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(rj_zcr_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *rj_zcr_new(void)
diff --git a/externals/signal/bonk~/bonk~.c b/externals/signal/bonk~/bonk~.c
index cb05a0450e2b9a0ce70027e56ccda9639b4a0ef9..eb6217808f389ceab9bf998e478c2b590839bec7 100644
--- a/externals/signal/bonk~/bonk~.c
+++ b/externals/signal/bonk~/bonk~.c
@@ -510,7 +510,7 @@ static void bonk_dsp(t_bonk *x, t_signal **sp)
     	gp->g_invec = (*(sp++))->s_vec;
 
     for (i = 0; i < n; i += vsize)
-    	dsp_add(bonk_perform, 3, x, vsize, i);
+    	dsp_add(bonk_perform, 3, x, (t_int)vsize, i);
 }
 
 static void bonk_thresh(t_bonk *x, t_floatarg f1, t_floatarg f2)
diff --git a/externals/signal/fiddle~/fiddle~.c b/externals/signal/fiddle~/fiddle~.c
index 7c93733883db541f3b863a857cd7d6551262afea..be5212118765a98948e52767c340852d2907f277 100644
--- a/externals/signal/fiddle~/fiddle~.c
+++ b/externals/signal/fiddle~/fiddle~.c
@@ -1417,7 +1417,7 @@ void sigfiddle_dsp(t_sigfiddle *x, t_signal **sp)
     x->x_sr = sp[0]->s_sr;
     sigfiddle_reattack(x, x->x_attacktime, x->x_attackthresh);
     sigfiddle_vibrato(x, x->x_vibtime, x->x_vibdepth);
-    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
     /* This is the callback function for the clock, but also acts as
@@ -1677,7 +1677,7 @@ void sigfiddle_dsp(t_sigfiddle *x, t_signal **sp)
    	}
 	sigfiddle_reattack(x, x->x_attacktime, x->x_attackthresh);
     sigfiddle_vibrato(x, x->x_vibtime, x->x_vibdepth);
-    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 void sigfiddle_tick(t_sigfiddle *x)	/* callback function for the clock MSP*/
diff --git a/externals/signal/loop~/loop~.c b/externals/signal/loop~/loop~.c
index b92c93bd3754d56b2ce4d0d537104e6dacc2c573..567b6e0eb4b932eea39d1074f329553dce288055 100644
--- a/externals/signal/loop~/loop~.c
+++ b/externals/signal/loop~/loop~.c
@@ -137,7 +137,7 @@ static void loop_dsp(t_loop *x, t_signal **sp)
 {
     dsp_add(loop_perform, 6,
 	&x->x_loopctl, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
-	    sp[0]->s_n);
+	    (t_int)sp[0]->s_n);
 }
 
 static void loop_set(t_loop *x, t_floatarg val)
diff --git a/externals/signal/lrshift~/lrshift~.c b/externals/signal/lrshift~/lrshift~.c
index d122ab2cb243a7709b44824cce393be127146575..8c7521260b02cbc42a6a7d1d38b1d999af54d006 100644
--- a/externals/signal/lrshift~/lrshift~.c
+++ b/externals/signal/lrshift~/lrshift~.c
@@ -81,7 +81,7 @@ static t_int *lrshift_perform(t_int *w)
 static void lrshift_tilde_dsp(t_lrshift_tilde *x, t_signal **sp)
 {
     int n = sp[0]->s_n;
-   	dsp_add(lrshift_perform, 4, sp[0]->s_vec, sp[1]->s_vec, n, x);
+   	dsp_add(lrshift_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)n, x);
 
 }
 
diff --git a/externals/sigpack/chop~.c b/externals/sigpack/chop~.c
index 29e862346372f283df3eeaecce1dbc80212daca2..507f55f9fbcfff20a4d3529493a635afe1a961de 100644
--- a/externals/sigpack/chop~.c
+++ b/externals/sigpack/chop~.c
@@ -55,7 +55,7 @@ static t_int *chop_tilde_perform(t_int *w)
 
 static void chop_tilde_dsp(t_chop_tilde *x, t_signal **sp)
 {
-    dsp_add(chop_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+    dsp_add(chop_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void chop_tilde_setup(void)
diff --git a/externals/sigpack/decimate~.c b/externals/sigpack/decimate~.c
index 862341ccb8a34390b74ecc1c54c486688855a290..0574369a62fbe494cab23fe49c9992d26e68842a 100644
--- a/externals/sigpack/decimate~.c
+++ b/externals/sigpack/decimate~.c
@@ -64,7 +64,7 @@ static t_int *decimate_tilde_perform(t_int *w)
 
 static void decimate_tilde_dsp(t_decimate_tilde *x, t_signal **sp)
 {
-    dsp_add(decimate_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(decimate_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void decimate_tilde_setup(void)
diff --git a/externals/sigpack/diode~.c b/externals/sigpack/diode~.c
index 29f2b3915faddd1fa70c1cafd991eb9e5c5c234a..da46094a659fd87dd5f586362e505e091e1d66ce 100644
--- a/externals/sigpack/diode~.c
+++ b/externals/sigpack/diode~.c
@@ -66,7 +66,7 @@ static t_int *diode_tilde_perform(t_int *w)
 
 static void diode_tilde_dsp(t_diode_tilde *x, t_signal **sp)
 {
-    dsp_add(diode_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(diode_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void diode_tilde_setup(void)
diff --git a/externals/sigpack/foldback~.c b/externals/sigpack/foldback~.c
index da3b2d04b45ec148c6d85aa75761f7c13232486d..30505d687818ed3a09d25d87ac21c82267be5b61 100644
--- a/externals/sigpack/foldback~.c
+++ b/externals/sigpack/foldback~.c
@@ -58,7 +58,7 @@ static t_int *foldback_tilde_perform(t_int *w)
 
 static void foldback_tilde_dsp(t_foldback_tilde *x, t_signal **sp)
 {
-    dsp_add(foldback_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(foldback_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void foldback_tilde_setup(void)
diff --git a/externals/sigpack/foldover~.c b/externals/sigpack/foldover~.c
index 01d495135f79f0d81d6149def7e2608522af590e..8f06b7dfe34e24a9d17ecde5ee2fce6f95302be2 100644
--- a/externals/sigpack/foldover~.c
+++ b/externals/sigpack/foldover~.c
@@ -59,7 +59,7 @@ static t_int *foldover_tilde_perform(t_int *w)
 
 static void foldover_tilde_dsp(t_foldover_tilde *x, t_signal **sp)
 {
-    dsp_add(foldover_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(foldover_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void foldover_tilde_setup(void)
diff --git a/externals/sigpack/freqdiv~.c b/externals/sigpack/freqdiv~.c
index dd4c54726025bdeacb425aaf30b8a7ec82d691bf..fa8086ec4a0737ee57c766d5006f5703169ae4f5 100644
--- a/externals/sigpack/freqdiv~.c
+++ b/externals/sigpack/freqdiv~.c
@@ -88,7 +88,7 @@ static t_int *freqdiv_tilde_perform(t_int *w)
 
 static void freqdiv_tilde_dsp(t_freqdiv_tilde *x, t_signal **sp)
 {
-    dsp_add(freqdiv_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(freqdiv_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void freqdiv_tilde_setup(void)
diff --git a/externals/sigpack/freqshift~.c b/externals/sigpack/freqshift~.c
index d83dc2fa3e3276f1963ff85e4517a02998753c8b..e885d29f83d7f019832d9936216673cb276ea512 100644
--- a/externals/sigpack/freqshift~.c
+++ b/externals/sigpack/freqshift~.c
@@ -192,7 +192,7 @@ static t_int *freqshift_tilde_perform(t_int *w)
 
 static void freqshift_tilde_dsp(t_freqshift_tilde *x, t_signal **sp)
 {
-    dsp_add(freqshift_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+    dsp_add(freqshift_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void freqshift_tilde_free(t_freqshift_tilde *x)
diff --git a/externals/sigpack/hardlimit~.c b/externals/sigpack/hardlimit~.c
index d9fc263415110865d4610f08045d65c4dab72acf..3e003e00f11b83839107b4abe3302be7da86451b 100644
--- a/externals/sigpack/hardlimit~.c
+++ b/externals/sigpack/hardlimit~.c
@@ -69,7 +69,7 @@ static t_int *hardlimit_tilde_perform(t_int *w)
 
 static void hardlimit_tilde_dsp(t_hardlimit_tilde *x, t_signal **sp)
 {
-    dsp_add(hardlimit_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(hardlimit_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void hardlimit_tilde_setup(void)
diff --git a/externals/sigpack/harmgen~.c b/externals/sigpack/harmgen~.c
index 6dca5cf371e2ea3fb0048c5daec2bc55b6bfe091..bfb6af0ee2854f2124697f07210d1667b51650ee 100644
--- a/externals/sigpack/harmgen~.c
+++ b/externals/sigpack/harmgen~.c
@@ -151,7 +151,7 @@ static t_int *harmgen_tilde_perform(t_int *w)
 
 static void harmgen_tilde_dsp(t_harmgen_tilde *x, t_signal **sp)
 {
-    dsp_add(harmgen_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(harmgen_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void harmgen_tilde_setup(void)
diff --git a/externals/sigpack/impulse~.c b/externals/sigpack/impulse~.c
index aeb246115e50a963fd603e3ef55fb7f57486e179..ff412a506672f4fc09144b474db2b4efe2851df3 100644
--- a/externals/sigpack/impulse~.c
+++ b/externals/sigpack/impulse~.c
@@ -65,7 +65,7 @@ static void impulse_tilde_ft1(t_impulse_tilde *x, t_float f)
 
 static void impulse_tilde_dsp(t_impulse_tilde *x, t_signal **sp)
 {
-    dsp_add(impulse_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(impulse_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void impulse_tilde_setup(void)
diff --git a/externals/sigpack/rectify~.c b/externals/sigpack/rectify~.c
index 42c45ec46a77dc584c93d9e77caf9130adc4dcfe..89434f8639e67c9f98b10c1bd3e47b31543e2d56 100644
--- a/externals/sigpack/rectify~.c
+++ b/externals/sigpack/rectify~.c
@@ -49,7 +49,7 @@ static t_int *rectify_tilde_perform(t_int *w)
 
 static void rectify_tilde_dsp(t_rectify_tilde *x, t_signal **sp)
 {
-    dsp_add(rectify_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(rectify_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void rectify_tilde_setup(void)
diff --git a/externals/sigpack/round~.c b/externals/sigpack/round~.c
index 2d3bbae8644bd4e2c0bd7ca738c48422fe7ce534..665db8a988b9592392e79e6ad6349ce23eaec40c 100644
--- a/externals/sigpack/round~.c
+++ b/externals/sigpack/round~.c
@@ -52,7 +52,7 @@ static t_int *round_tilde_perform(t_int *w)
 
 static void round_tilde_dsp(t_round_tilde *x, t_signal **sp)
 {
-    dsp_add(round_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(round_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void round_tilde_setup(void)
diff --git a/externals/sigpack/saturate~.c b/externals/sigpack/saturate~.c
index 0e8a8f55289e3beb40e7ef41bd85ff3ab5dc3bdd..788642e8880a811f5bc93c439268e7649e3b537d 100644
--- a/externals/sigpack/saturate~.c
+++ b/externals/sigpack/saturate~.c
@@ -70,7 +70,7 @@ static t_int *saturate_tilde_perform(t_int *w)
 
 static void saturate_tilde_dsp(t_saturate_tilde *x, t_signal **sp)
 {
-    dsp_add(saturate_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(saturate_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void saturate_tilde_setup(void)
diff --git a/externals/sigpack/shape~.c b/externals/sigpack/shape~.c
index 0b2872030bbe08d296ccd22fec2c8df3c283db70..0f82d4548a27179769b27c99ef1cd03812c0d0e7 100644
--- a/externals/sigpack/shape~.c
+++ b/externals/sigpack/shape~.c
@@ -67,7 +67,7 @@ static t_int *shape_tilde_perform(t_int *w)
 
 static void shape_tilde_dsp(t_shape_tilde *x, t_signal **sp)
 {
-    dsp_add(shape_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(shape_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void shape_tilde_setup(void)
diff --git a/externals/sigpack/sieve~.c b/externals/sigpack/sieve~.c
index 0e0edb48c1f53c12ee5a66d4275b8a34749044a1..f955d460367a0678029003e1736e71f752dcc8f5 100644
--- a/externals/sigpack/sieve~.c
+++ b/externals/sigpack/sieve~.c
@@ -93,7 +93,7 @@ static t_int *sieve_tilde_perform(t_int *w)
 
 static void sieve_tilde_dsp(t_sieve_tilde *x, t_signal **sp)
 {
-    dsp_add(sieve_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sieve_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void sieve_tilde_setup(void)
diff --git a/externals/sigpack/split~.c b/externals/sigpack/split~.c
index f1e9ac0b0fa8a35fc1e260be9fec86c5becd964c..14d9467ada8c66d3d7c49e3cc4728ca110fce5ec 100644
--- a/externals/sigpack/split~.c
+++ b/externals/sigpack/split~.c
@@ -60,7 +60,7 @@ static t_int *split_tilde_perform(t_int *w)
 
 static void split_tilde_dsp(t_split_tilde *x, t_signal **sp)
 {
-    dsp_add(split_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+    dsp_add(split_tilde_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void split_tilde_setup(void)
diff --git a/externals/sigpack/transient~.c b/externals/sigpack/transient~.c
index 786eb8dde0a8d4a09a61cc5b23954f607cb213ac..1b40ef78b6a39036c0678ad41c420f9b098f17f5 100644
--- a/externals/sigpack/transient~.c
+++ b/externals/sigpack/transient~.c
@@ -121,7 +121,7 @@ static t_int *transient_tilde_perform(t_int *w)
 
 static void transient_tilde_dsp(t_transient_tilde *x, t_signal **sp)
 {
-    dsp_add(transient_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(transient_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void transient_tilde_setup(void)
diff --git a/externals/sigpack/ustep~.c b/externals/sigpack/ustep~.c
index 6308e0f14f50d7191467edf62ddea7a859b56c7a..854ee559e9c3b16f23f6f854a2d701c837acb9be 100644
--- a/externals/sigpack/ustep~.c
+++ b/externals/sigpack/ustep~.c
@@ -71,7 +71,7 @@ static t_int *ustep_tilde_perform(t_int *w)
 
 static void ustep_tilde_dsp(t_ustep_tilde *x, t_signal **sp)
 {
-    dsp_add(ustep_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(ustep_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void ustep_tilde_setup(void)
diff --git a/externals/sigpack/valverect~.c b/externals/sigpack/valverect~.c
index 38280303fac6a03276336f458453775d9197b319..50df9ce1b8b37c92593ab458444c4ead812815b9 100644
--- a/externals/sigpack/valverect~.c
+++ b/externals/sigpack/valverect~.c
@@ -138,7 +138,7 @@ static t_int *valverect_tilde_perform(t_int *w)
 
 static void valverect_tilde_dsp(t_valverect_tilde *x, t_signal **sp)
 {
-    dsp_add(valverect_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(valverect_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void valverect_tilde_free(t_valverect_tilde *x)
diff --git a/externals/sigpack/vowel~.c b/externals/sigpack/vowel~.c
index 65931eac8cc5263eeb30c4d91eed27bda39e384b..c0356b474c9307aed854976835844f5b4f66e258 100644
--- a/externals/sigpack/vowel~.c
+++ b/externals/sigpack/vowel~.c
@@ -105,7 +105,7 @@ static t_int *vowel_tilde_perform(t_int *w)
 
 static void vowel_tilde_dsp(t_vowel_tilde *x, t_signal **sp)
 {
-    dsp_add(vowel_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(vowel_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void vowel_tilde_setup(void)
diff --git a/externals/sigpack/wavewrap~.c b/externals/sigpack/wavewrap~.c
index fbd15bd963ce3f8c7a38611766152309a353c41a..5a20c416c59cd2a6f37c44fb7c7224996ee1ca9a 100644
--- a/externals/sigpack/wavewrap~.c
+++ b/externals/sigpack/wavewrap~.c
@@ -64,7 +64,7 @@ static t_int *wavewrap_tilde_perform(t_int *w)
 
 static void wavewrap_tilde_dsp(t_wavewrap_tilde *x, t_signal **sp)
 {
-    dsp_add(wavewrap_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(wavewrap_tilde_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void wavewrap_tilde_setup(void)
diff --git a/externals/tb/erfc~/erfc~.c b/externals/tb/erfc~/erfc~.c
index 82baa558a1e6b22c2527adaa70016b1b44a38726..f0d3d0ad52485a7a83501671938ac5e7c6e8c9a1 100644
--- a/externals/tb/erfc~/erfc~.c
+++ b/externals/tb/erfc~/erfc~.c
@@ -52,7 +52,7 @@ static t_int *erfc_perfcorm(t_int *w)
 
 static void erfc_dsp(t_erfc *x, t_signal **sp)
 {
-    dsp_add(erfc_perfcorm, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(erfc_perfcorm, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void erfc_tilde_setup(void)
diff --git a/externals/tb/erf~/erf~.c b/externals/tb/erf~/erf~.c
index db7e5d8af93eff230f2c154cfe1513ad437bdd19..e715d4462056b7101bc8da13a994f69562be1a42 100644
--- a/externals/tb/erf~/erf~.c
+++ b/externals/tb/erf~/erf~.c
@@ -52,7 +52,7 @@ static t_int *erf_perform(t_int *w)
 
 static void erf_dsp(t_erf *x, t_signal **sp)
 {
-    dsp_add(erf_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(erf_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void erf_tilde_setup(void)
diff --git a/externals/tb/volctl~/volctl~.c b/externals/tb/volctl~/volctl~.c
index 0d846a1e4f36f1fc34c09160325e2a12d2e78397..c8c1cfb76aa3a5e27095953c11213fe7cfe32b36 100644
--- a/externals/tb/volctl~/volctl~.c
+++ b/externals/tb/volctl~/volctl~.c
@@ -344,13 +344,13 @@ static void volctl_dsp(t_volctl *x, t_signal **sp)
 {
     const int n = sp[0]->s_n;
     if (n&7)
-    	dsp_add(volctl_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, n);
+    	dsp_add(volctl_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)n);
     else 
     {
 		if(SIMD_CHECK2(n,sp[0]->s_vec,sp[1]->s_vec))
-			dsp_add(volctl_perf_simd, 4, x, sp[0]->s_vec, sp[1]->s_vec, n);
+			dsp_add(volctl_perf_simd, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)n);
 		else
-			dsp_add(volctl_perf8, 4, x, sp[0]->s_vec, sp[1]->s_vec, n);
+			dsp_add(volctl_perf8, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)n);
     }
 
 	x->x_blocksize = n;
diff --git a/externals/tof/src/breakpoints~.c b/externals/tof/src/breakpoints~.c
index 1028dbb67d1673f7683201841f62ab5ee14a6648..d635e3850f940aabdab1bc162bcf9017b8e69aa4 100644
--- a/externals/tof/src/breakpoints~.c
+++ b/externals/tof/src/breakpoints~.c
@@ -103,7 +103,7 @@ static t_int *breakpointssig_perform(t_int *w)
     out the samples. */
 static void breakpointssig_dsp(t_breakpoints *x, t_signal **sp)
 {
-    dsp_add(breakpointssig_perform, 4, x,sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(breakpointssig_perform, 4, x,sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void breakpoints_totaldur(t_breakpoints* x,t_float dur)
diff --git a/externals/tof/src/common~.c b/externals/tof/src/common~.c
index 3e234468ceb451d0c0f3b7bba171cdef0da51430..6e4af52ec8c4a7a5ba25e1f9cb8dc086cab38acd 100644
--- a/externals/tof/src/common~.c
+++ b/externals/tof/src/common~.c
@@ -206,7 +206,7 @@ static  void common_tilde_dsp(t_common_tilde *x, t_signal **sp)
 {
 	
 	if ( (int) sp[0]->s_n == 64 ) {
-		dsp_add(common_tilde_perform, 4, x,sp[0]->s_vec,sp[1]->s_vec, sp[0]->s_n);
+		dsp_add(common_tilde_perform, 4, x,sp[0]->s_vec,sp[1]->s_vec, (t_int)sp[0]->s_n);
 		
 	  } else {
 		  error("common~ only works with a block size of 64");
diff --git a/externals/tof/src/crossfade~.c b/externals/tof/src/crossfade~.c
index da777b13ceab83ebb369a0b569c0c9f312b5a3f8..9ec377a6e41d9eeaaec04934b3c990611d2ebcf4 100644
--- a/externals/tof/src/crossfade~.c
+++ b/externals/tof/src/crossfade~.c
@@ -79,7 +79,7 @@ static void crossfade_tilde_dsp(t_crossfade_tilde *x, t_signal **sp)
   for(n=0;n<x->n_out;n++)*dummy++=sp[n+x->n_in+1]->s_vec;
 
   
-  dsp_add(crossfade_tilde_perform, 3, x, sp[0]->s_n, sp[x->n_in]->s_vec);
+  dsp_add(crossfade_tilde_perform, 3, x, (t_int)sp[0]->s_n, sp[x->n_in]->s_vec);
   
 }
 
diff --git a/externals/tof/src/phasorshot~.c b/externals/tof/src/phasorshot~.c
index 84b9f0653b52aac41bfc59cea4bcbdec38cfcf00..d189888f26909e515baa73a89cf70557202d9c2f 100644
--- a/externals/tof/src/phasorshot~.c
+++ b/externals/tof/src/phasorshot~.c
@@ -141,7 +141,7 @@ void phasorshot_tick(t_phasorshot *x)
  void phasorshot_dsp(t_phasorshot *x, t_signal **sp)
 {
     x->x_conv = 1./sp[0]->s_sr;
-    dsp_add(phasorshot_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(phasorshot_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
  void phasorshot_ft1(t_phasorshot *x, t_float f)
diff --git a/externals/tof/test/accum~.c b/externals/tof/test/accum~.c
index 487a54aa498ff39bef9ae92af57b1f747ce63f8d..314a38e0aa0ee3f19c2a56f85808a2c20f73deaf 100644
--- a/externals/tof/test/accum~.c
+++ b/externals/tof/test/accum~.c
@@ -180,7 +180,7 @@ static void accum_tilde_dsp(t_accum_tilde *x, t_signal **sp) {
     // point to number of samples
     // point to inlet~
     // point to outlet~
-    dsp_add(accum_tilde_perform, 4, x, sp[0]->s_n, sp[0]->s_vec,sp[1]->s_vec);
+    dsp_add(accum_tilde_perform, 4, x, (t_int)sp[0]->s_n, sp[0]->s_vec,sp[1]->s_vec);
 }
 
 static void *accum_tilde_new(t_floatarg minval, t_floatarg maxval,
diff --git a/externals/tof/test/count.c b/externals/tof/test/count.c
index b2ed2cdb90ff3719fef4859d30b6131cb2ed9855..fb1f7ebcaf2d909e28e374f7f184288aad2abf8c 100644
--- a/externals/tof/test/count.c
+++ b/externals/tof/test/count.c
@@ -105,7 +105,7 @@ static t_int *count_perform(t_int *w)
 static void count_dsp(t_count *x, t_signal **sp)
 {
     if (x->x_autoreset) count_bang(x);
-    dsp_add(count_perform, 3, x, sp[0]->s_n, sp[0]->s_vec);
+    dsp_add(count_perform, 3, x, (t_int)sp[0]->s_n, sp[0]->s_vec);
 }
 
 static void *count_new(t_floatarg minval, t_floatarg maxval,
diff --git a/externals/tof/test/frameaccum.c b/externals/tof/test/frameaccum.c
index 6038ae5399caf1900aef9cfa5c6b70028598d0fe..aaab147f5bd34feb1b91ada50b9d42d1a72c603f 100644
--- a/externals/tof/test/frameaccum.c
+++ b/externals/tof/test/frameaccum.c
@@ -37,7 +37,7 @@ static void frameaccum_dsp(t_frameaccum *x, t_signal **sp)
 				 FRAMEACCUM_INISIZE, x->x_frameini,
 				 sizeof(*x->x_frame));
     memset(x->x_frame, 0, nblock * sizeof(*x->x_frame));  /* CHECKED */
-    dsp_add(frameaccum_perform, 4, nblock, x->x_frame,
+    dsp_add(frameaccum_perform, 4, (t_int)nblock, x->x_frame,
 	    sp[0]->s_vec, sp[1]->s_vec);
 }
 
diff --git a/externals/unauthorized/audience~.c b/externals/unauthorized/audience~.c
index 27a52b1c609046529ed268210da62600848ccfbc..237a70d69dc9ed63fd702c1450adcac0bfc7a7ca 100644
--- a/externals/unauthorized/audience~.c
+++ b/externals/unauthorized/audience~.c
@@ -965,43 +965,43 @@ static void audience_dsp(t_audience_tilde *x, t_signal **sp)
     switch ( x->x_nbinputs+x->x_nboutputs )
     {
     case 2 :
-        dsp_add(audience_perform, 4, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec );
+        dsp_add(audience_perform, 4, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec );
         break;
 
     case 3 :
-        dsp_add(audience_perform, 5, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec );
+        dsp_add(audience_perform, 5, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec );
         break;
 
     case 4 :
-        dsp_add(audience_perform, 6, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec );
+        dsp_add(audience_perform, 6, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec );
         break;
 
     case 5 :
-        dsp_add(audience_perform, 7, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec );
+        dsp_add(audience_perform, 7, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec, sp[5]->s_vec );
         break;
 
     case 6 :
-        dsp_add(audience_perform, 8, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
+        dsp_add(audience_perform, 8, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
                 sp[5]->s_vec, sp[6]->s_vec );
         break;
 
     case 7 :
-        dsp_add(audience_perform, 9, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
+        dsp_add(audience_perform, 9, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
                 sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec );
         break;
 
     case 8 :
-        dsp_add(audience_perform, 10, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
+        dsp_add(audience_perform, 10, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
                 sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec, sp[8]->s_vec );
         break;
 
     case 9 :
-        dsp_add(audience_perform, 11, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
+        dsp_add(audience_perform, 11, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
                 sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec, sp[8]->s_vec, sp[9]->s_vec );
         break;
 
     case 10 :
-        dsp_add(audience_perform, 12, x, sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
+        dsp_add(audience_perform, 12, x, (t_int)sp[1]->s_n, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[4]->s_vec,
                 sp[5]->s_vec, sp[6]->s_vec, sp[7]->s_vec, sp[8]->s_vec,
                 sp[9]->s_vec, sp[10]->s_vec );
         break;
diff --git a/externals/unauthorized/beatify~.c b/externals/unauthorized/beatify~.c
index 394a60520b33edad8ba601feaaf34d42fac0c33c..7d784f76078aed5d44b340e8ad198342b4ba7411 100644
--- a/externals/unauthorized/beatify~.c
+++ b/externals/unauthorized/beatify~.c
@@ -166,7 +166,7 @@ static t_int *beatify_perform(t_int *w)
 
 static void beatify_dsp(t_beatify *x, t_signal **sp)
 {
-    dsp_add(beatify_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
+    dsp_add(beatify_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n, x );
 }
 
 void beatify_tilde_setup(void)
diff --git a/externals/unauthorized/compressor~.c b/externals/unauthorized/compressor~.c
index 2b776e4258d4bc09efeff6e9793287ebc30fe248..34b78c85f02a3b59130e5730db49584e3c4f4bab 100644
--- a/externals/unauthorized/compressor~.c
+++ b/externals/unauthorized/compressor~.c
@@ -92,7 +92,7 @@ static t_int *compressor_perform(t_int *w)
 
 static void compressor_dsp(t_compressor *x, t_signal **sp)
 {
-    dsp_add(compressor_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
+    dsp_add(compressor_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n, x );
 }
 
 void compressor_tilde_setup(void)
diff --git a/externals/unauthorized/cooled~.c b/externals/unauthorized/cooled~.c
index 87ee370b3c56b8a23ab8fd857f925571ded8fc23..c09ba4c4e427386ba5af332df3040d60a695b0a0 100644
--- a/externals/unauthorized/cooled~.c
+++ b/externals/unauthorized/cooled~.c
@@ -1166,7 +1166,7 @@ static t_int *cooled_perform(t_int *w)
 
 static void cooled_dsp(t_cooled *x, t_signal **sp)
 {
-    dsp_add(cooled_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n, x);
+    dsp_add(cooled_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 /* record the cooled */
diff --git a/externals/unauthorized/disto~.c b/externals/unauthorized/disto~.c
index b51640660fb53d9f7594581e52e9aae173aa4838..2afcf6ff19581d979bf3e4b4df05b84324d865cc 100644
--- a/externals/unauthorized/disto~.c
+++ b/externals/unauthorized/disto~.c
@@ -426,7 +426,7 @@ static void disto_preset(t_disto *x, t_float pnumber)
 
 static void disto_dsp(t_disto *x, t_signal **sp)
 {
-    dsp_add(disto_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
+    dsp_add(disto_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n, x );
 }
 
 /* clean up */
diff --git a/externals/unauthorized/formant~.c b/externals/unauthorized/formant~.c
index 5ef3b5ef6d780ad44f70f67cb5c244ae3f3d80ac..b5b442a04d1688cd6b4dbc8fea219c797d33326c 100644
--- a/externals/unauthorized/formant~.c
+++ b/externals/unauthorized/formant~.c
@@ -152,7 +152,7 @@ static t_int *formant_perform(t_int *w)
 
 static void formant_dsp(t_formant *x, t_signal **sp)
 {
-    dsp_add(formant_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(formant_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 /* replay the sample */
diff --git a/externals/unauthorized/mp3amp~.c b/externals/unauthorized/mp3amp~.c
index f3aeebed35095b5fa77826294a64f88c7bc61131..699189ed589d7c10ddc583e5d4737d9167fdd499 100644
--- a/externals/unauthorized/mp3amp~.c
+++ b/externals/unauthorized/mp3amp~.c
@@ -578,7 +578,7 @@ static t_int *mp3amp_perform(t_int *w)
 
 static void mp3amp_dsp(t_mp3amp *x, t_signal **sp)
 {
-    dsp_add(mp3amp_perform, 4, x, sp[1]->s_vec, sp[2]->s_vec, sp[1]->s_n);
+    dsp_add(mp3amp_perform, 4, x, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[1]->s_n);
 }
 
 
diff --git a/externals/unauthorized/mp3cast~.c b/externals/unauthorized/mp3cast~.c
index a5bc66a4eec3ffeb3f018735e8a84ed513b4c12c..0c7d968f9412106fa3d20a0267a13509289d9a12 100644
--- a/externals/unauthorized/mp3cast~.c
+++ b/externals/unauthorized/mp3cast~.c
@@ -343,7 +343,7 @@ static t_int *mp3cast_perform(t_int *w)
 
 static void mp3cast_dsp(t_mp3cast *x, t_signal **sp)
 {
-    dsp_add(mp3cast_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(mp3cast_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 /* initialize the lame library */
diff --git a/externals/unauthorized/mp3fileout~.c b/externals/unauthorized/mp3fileout~.c
index c331d0f990458c886e7bce2d347c537eef6dc073..5916fcd55094874b155bbe76a00e703352fb0169 100644
--- a/externals/unauthorized/mp3fileout~.c
+++ b/externals/unauthorized/mp3fileout~.c
@@ -333,7 +333,7 @@ static t_int *mp3fileout_perform(t_int *w)
 
 static void mp3fileout_dsp(t_mp3fileout *x, t_signal **sp)
 {
-    dsp_add(mp3fileout_perform, 2, x, sp[0]->s_n);
+    dsp_add(mp3fileout_perform, 2, x, (t_int)sp[0]->s_n);
 }
 
 /* start streaming */
diff --git a/externals/unauthorized/mp3streamin~.c b/externals/unauthorized/mp3streamin~.c
index 60bb3929c53570b1214f492aecb92eaa87c9cb5d..eb3c5aade7f3133340fad87428c56042ab7ae701 100644
--- a/externals/unauthorized/mp3streamin~.c
+++ b/externals/unauthorized/mp3streamin~.c
@@ -590,7 +590,7 @@ static t_int *mp3streamin_perform(t_int *w)
 
 static void mp3streamin_dsp(t_mp3streamin *x, t_signal **sp)
 {
-    dsp_add(mp3streamin_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(mp3streamin_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/unauthorized/mp3streamout~.c b/externals/unauthorized/mp3streamout~.c
index 3786c044d89cb8793027b99bbed7b5e757825d2f..2f14c8269c89db5846f539de9a38ea6bb1af4bc7 100644
--- a/externals/unauthorized/mp3streamout~.c
+++ b/externals/unauthorized/mp3streamout~.c
@@ -351,7 +351,7 @@ static t_int *mp3streamout_perform(t_int *w)
 
 static void mp3streamout_dsp(t_mp3streamout *x, t_signal **sp)
 {
-    dsp_add(mp3streamout_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(mp3streamout_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 /* initialize the lame library */
diff --git a/externals/unauthorized/mp3write~.c b/externals/unauthorized/mp3write~.c
index 133ffa284a526b87dd146be9127d1352143d08b7..b0c4787577a6493a3a8cd85486df492505883da8 100644
--- a/externals/unauthorized/mp3write~.c
+++ b/externals/unauthorized/mp3write~.c
@@ -343,7 +343,7 @@ static t_int *mp3write_perform(t_int *w)
 
 static void mp3write_dsp(t_mp3write *x, t_signal **sp)
 {
-    dsp_add(mp3write_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+    dsp_add(mp3write_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 /* initialize the lame library */
diff --git a/externals/unauthorized/randomblock~.c b/externals/unauthorized/randomblock~.c
index 002876e454e51a177dd10a284b501cd8c564a6bd..1d35c24222c2a1f5b318a4d54a06310604541a6c 100644
--- a/externals/unauthorized/randomblock~.c
+++ b/externals/unauthorized/randomblock~.c
@@ -111,7 +111,7 @@ static t_int *randomblock_perform(t_int *w)
 
 static void randomblock_dsp(t_randomblock *x, t_signal **sp)
 {
-    dsp_add( randomblock_perform, 3, sp[0]->s_vec, sp[0]->s_n, x ) ;
+    dsp_add( randomblock_perform, 3, sp[0]->s_vec, (t_int)sp[0]->s_n, x ) ;
 }
 
 void randomblock_tilde_setup(void)
diff --git a/externals/unauthorized/samplebox~.c b/externals/unauthorized/samplebox~.c
index e0769976b90ea81602b1c160d381fcf339ce7bac..d3285476cec009a7d4bdeb30b54a2f9e8e569ed2 100644
--- a/externals/unauthorized/samplebox~.c
+++ b/externals/unauthorized/samplebox~.c
@@ -336,7 +336,7 @@ static t_int *samplebox_perform(t_int *w)
 
 static void samplebox_dsp(t_samplebox *x, t_signal **sp)
 {
-    dsp_add(samplebox_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n, x);
+    dsp_add(samplebox_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 /* record the sonogram */
diff --git a/externals/unauthorized/scratcher~.c b/externals/unauthorized/scratcher~.c
index 6ef08d5cb3016f86e6b94fe27bf4722e02f7750d..e4c5c168d8daa2472c188f45d0c5e6b07ed57a44 100644
--- a/externals/unauthorized/scratcher~.c
+++ b/externals/unauthorized/scratcher~.c
@@ -588,7 +588,7 @@ static t_int *scratcher_perform(t_int *w)
 
 static void scratcher_dsp(t_scratcher *x, t_signal **sp)
 {
-    dsp_add(scratcher_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x);
+    dsp_add(scratcher_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 /* play the sound */
diff --git a/externals/unauthorized/sonogram~.c b/externals/unauthorized/sonogram~.c
index ca7bfb1a3ee027ed958b4112c6387586abe1368e..cb0b97271c39a910147ee0642adc2d37b0a8bc26 100644
--- a/externals/unauthorized/sonogram~.c
+++ b/externals/unauthorized/sonogram~.c
@@ -1502,7 +1502,7 @@ static t_int *sonogram_perform(t_int *w)
 
 static void sonogram_dsp(t_sonogram *x, t_signal **sp)
 {
-    dsp_add(sonogram_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n, x);
+    dsp_add(sonogram_perform, 6, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n, x);
 }
 
 /* record the sonogram */
diff --git a/externals/unauthorized/speexin~.c b/externals/unauthorized/speexin~.c
index b8a350abb7ca91eebf4c99854b431825ddd02faa..308b0aacb60cc009a0c6555293703d5cb41f1872 100644
--- a/externals/unauthorized/speexin~.c
+++ b/externals/unauthorized/speexin~.c
@@ -533,7 +533,7 @@ static t_int *speexin_perform(t_int *w)
 
 static void speexin_dsp(t_speexin *x, t_signal **sp)
 {
-    dsp_add(speexin_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(speexin_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/unauthorized/speexout~.c b/externals/unauthorized/speexout~.c
index 11230d5b2ef24613440370e3b5a71fa8fe61f07d..a00c9ad60b72e85954c393a37676ae4e1855c523 100644
--- a/externals/unauthorized/speexout~.c
+++ b/externals/unauthorized/speexout~.c
@@ -256,7 +256,7 @@ static t_int *speexout_perform(t_int *w)
 
 static void speexout_dsp(t_speexout *x, t_signal **sp)
 {
-    dsp_add(speexout_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(speexout_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 /* initialize the speex library */
diff --git a/externals/unauthorized/spigot~.c b/externals/unauthorized/spigot~.c
index d994df5b6ab37e6cde8ae9fc0683fd48c52b39d0..34cec85d4ae8d312b76344f03f37be7115f2a9d4 100644
--- a/externals/unauthorized/spigot~.c
+++ b/externals/unauthorized/spigot~.c
@@ -61,7 +61,7 @@ static t_int *spigot_perform(t_int *w)
 static void spigot_dsp(t_spigot *x, t_signal **sp)
 {
     dsp_add(spigot_perform, 5, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
-            sp[0]->s_n, x);
+            (t_int)sp[0]->s_n, x);
 }
 
 static void spigot_set(t_spigot *x, t_float f)
diff --git a/externals/unauthorized/vocoder~.c b/externals/unauthorized/vocoder~.c
index f0b4143ec03b7b60992a35bf5a123ac6b9cdd18c..69b12ca1a2f46721681c912d213f31d32a2ca5d8 100644
--- a/externals/unauthorized/vocoder~.c
+++ b/externals/unauthorized/vocoder~.c
@@ -123,7 +123,7 @@ static t_int *vocoder_perform(t_int *w)
 
 static void vocoder_dsp(t_vocoder *x, t_signal **sp)
 {
-    dsp_add(vocoder_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+    dsp_add(vocoder_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *vocoder_new(void)
diff --git a/externals/unauthorized/wahwah~.c b/externals/unauthorized/wahwah~.c
index 9e6e3c6a73d8636b8134b3a3c0738ec34d666958..0b6b8f10b2531a2aaea38372f3f45a9e05e84400 100644
--- a/externals/unauthorized/wahwah~.c
+++ b/externals/unauthorized/wahwah~.c
@@ -339,7 +339,7 @@ static void wahwah_preset(t_wahwah *x, t_float pnumber)
 
 static void wahwah_dsp(t_wahwah *x, t_signal **sp)
 {
-    dsp_add(wahwah_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
+    dsp_add(wahwah_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n, x );
 }
 
 /* clean up */
diff --git a/externals/vst/vst~.cpp b/externals/vst/vst~.cpp
index b3b5b14d334a651d714a204475a98560cd01d30e..4b221d6fd6b9a88b5023262d5a896be7e919c100 100644
--- a/externals/vst/vst~.cpp
+++ b/externals/vst/vst~.cpp
@@ -75,11 +75,11 @@ static void vst_tilde_dsp(t_vst_tilde *x, t_signal **sp)
 		//post("*");
 		if ( x->plug->replace() )
 		{
-			dsp_add(vst_tilde_perform_replace, 2 , x->d_args , sp[0]->s_n );
+			dsp_add(vst_tilde_perform_replace, 2 , x->d_args , (t_int)sp[0]->s_n );
 		}
 		else
 		{
-			dsp_add(vst_tilde_perform_acc, 2 , x->d_args , sp[0]->s_n );
+			dsp_add(vst_tilde_perform_acc, 2 , x->d_args , (t_int)sp[0]->s_n );
 		}
 	}
 
diff --git a/externals/windowing/bartlett~.c b/externals/windowing/bartlett~.c
index ea1c9478dc8972516e9471d82c346c63bf642035..12f2a452650b23c7bd227df6ffbbab1ed7da85a8 100644
--- a/externals/windowing/bartlett~.c
+++ b/externals/windowing/bartlett~.c
@@ -68,7 +68,7 @@ static t_int* bartlett_perform(t_int *w) {
 }
 
 static void bartlett_dsp(t_bartlett *x, t_signal **sp) {
-  dsp_add(bartlett_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(bartlett_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* bartlett_new(void) {
diff --git a/externals/windowing/blackman~.c b/externals/windowing/blackman~.c
index ad7af8a4561d603b3149d058ec7f40c054f7bf9c..9248384d68b76356917979c5916e59601dcb8d5a 100644
--- a/externals/windowing/blackman~.c
+++ b/externals/windowing/blackman~.c
@@ -72,7 +72,7 @@ static t_int* blackman_perform(t_int *w) {
 }
 
 static void blackman_dsp(t_blackman *x, t_signal **sp) {
-  dsp_add(blackman_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(blackman_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* blackman_new(void) {
diff --git a/externals/windowing/connes~.c b/externals/windowing/connes~.c
index 027ab199af17e732c088e470959b63d66b1d7405..7845c4ecf11d9149833e165ff13678bdc245f073 100644
--- a/externals/windowing/connes~.c
+++ b/externals/windowing/connes~.c
@@ -67,7 +67,7 @@ static t_int* connes_perform(t_int *w) {
 }
 
 static void connes_dsp(t_connes *x, t_signal **sp) {
-  dsp_add(connes_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(connes_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* connes_new(void) {
diff --git a/externals/windowing/cosine~.c b/externals/windowing/cosine~.c
index 92eb8182b80c2bae11fc0e4664a5d6adc46ce63f..77ac428c4db732e0591b327bfa46d2c1c32e4f8a 100644
--- a/externals/windowing/cosine~.c
+++ b/externals/windowing/cosine~.c
@@ -72,7 +72,7 @@ static t_int* cosine_perform(t_int *w) {
 }
 
 static void cosine_dsp(t_cosine *x, t_signal **sp) {
-  dsp_add(cosine_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(cosine_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* cosine_new(void) {
diff --git a/externals/windowing/gaussian~.c b/externals/windowing/gaussian~.c
index 3b9828b1252319fe2ef7f9596db673994cf3f1db..0bf5aa861265ea7f24a53c44c71ae801410add3a 100644
--- a/externals/windowing/gaussian~.c
+++ b/externals/windowing/gaussian~.c
@@ -78,7 +78,7 @@ static t_int* gaussian_perform(t_int *w) {
 }
 
 static void gaussian_dsp(t_gaussian *x, t_signal **sp) {
-  dsp_add(gaussian_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(gaussian_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void gaussian_float(t_gaussian *x, t_float delta) {
diff --git a/externals/windowing/hamming~.c b/externals/windowing/hamming~.c
index 24b5e43f0d736d24dbd5438b533158cb2a67c38a..52da749ebd5660acab11193e6cc81c72281e12e3 100644
--- a/externals/windowing/hamming~.c
+++ b/externals/windowing/hamming~.c
@@ -72,7 +72,7 @@ static t_int* hamming_perform(t_int *w) {
 }
 
 static void hamming_dsp(t_hamming *x, t_signal **sp) {
-  dsp_add(hamming_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(hamming_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* hamming_new(void) {
diff --git a/externals/windowing/hanning~.c b/externals/windowing/hanning~.c
index 9be6da2a760833949d67d641aef174234ae1fdf1..bacc73759b21a5865ef99eac8232fdd84fce048c 100644
--- a/externals/windowing/hanning~.c
+++ b/externals/windowing/hanning~.c
@@ -72,7 +72,7 @@ static t_int* hanning_perform(t_int *w) {
 }
 
 static void hanning_dsp(t_hanning *x, t_signal **sp) {
-  dsp_add(hanning_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(hanning_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* hanning_new(void) {
diff --git a/externals/windowing/kaiser~.c b/externals/windowing/kaiser~.c
index dc072e9d6b365a9d89c3b1b28a011477f6ac7aae..f474d95cedb295c25eeb1eda32a0dd03f8139f78 100644
--- a/externals/windowing/kaiser~.c
+++ b/externals/windowing/kaiser~.c
@@ -74,7 +74,7 @@ static t_int* kaiser_perform(t_int *w) {
 }
 
 static void kaiser_dsp(t_kaiser *x, t_signal **sp) {
-  dsp_add(kaiser_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(kaiser_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void kaiser_float(t_kaiser *x, t_float alpha) {
diff --git a/externals/windowing/lanczos~.c b/externals/windowing/lanczos~.c
index c10ed6bf1bb2c070ecc8028eb5767c78ad498a8e..10466ff44236e1cc9a805ef1e23ec2fc7a28fca1 100644
--- a/externals/windowing/lanczos~.c
+++ b/externals/windowing/lanczos~.c
@@ -77,7 +77,7 @@ static t_int* lanczos_perform(t_int *w) {
 }
 
 static void lanczos_dsp(t_lanczos *x, t_signal **sp) {
-  dsp_add(lanczos_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(lanczos_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* lanczos_new(void) {
diff --git a/externals/windowing/welch~.c b/externals/windowing/welch~.c
index 0903389de4fdc0bfad7c717bda9baca2926f08eb..183eb0e3297dade435c64210e3e8da656e3063c0 100644
--- a/externals/windowing/welch~.c
+++ b/externals/windowing/welch~.c
@@ -67,7 +67,7 @@ static t_int* welch_perform(t_int *w) {
 }
 
 static void welch_dsp(t_welch *x, t_signal **sp) {
-  dsp_add(welch_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(welch_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void* welch_new(void) {
diff --git a/externals/zexy/src/0x260x26_tilde.c b/externals/zexy/src/0x260x26_tilde.c
index 92aeda12b0bec29e7ecfbef99cae0f082216f0b8..793ce500c6c9713c0c2c6d9674d76501b6bc1a6f 100644
--- a/externals/zexy/src/0x260x26_tilde.c
+++ b/externals/zexy/src/0x260x26_tilde.c
@@ -245,13 +245,13 @@ static void andand_tilde_dsp(t_andand_tilde *UNUSED(x), t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(andand_tilde_performSSE, 4, in1, in2, out, n);
+    dsp_add(andand_tilde_performSSE, 4, in1, in2, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(andand_tilde_perform, 4, in1, in2, out, n);
+      dsp_add(andand_tilde_perform, 4, in1, in2, out, (t_int)n);
     } else {
-      dsp_add(andand_tilde_perf8, 4, in1, in2, out, n);
+      dsp_add(andand_tilde_perf8, 4, in1, in2, out, (t_int)n);
     }
 }
 
@@ -268,13 +268,13 @@ static void scalarandand_tilde_dsp(t_scalarandand_tilde *x, t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(scalarandand_tilde_performSSE, 4, in, &x->x_g, out, n);
+    dsp_add(scalarandand_tilde_performSSE, 4, in, &x->x_g, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(scalarandand_tilde_perform, 4, in, &x->x_g, out, n);
+      dsp_add(scalarandand_tilde_perform, 4, in, &x->x_g, out, (t_int)n);
     } else {
-      dsp_add(scalarandand_tilde_perf8,   4, in, &x->x_g, out, n);
+      dsp_add(scalarandand_tilde_perf8,   4, in, &x->x_g, out, (t_int)n);
     }
 }
 
diff --git a/externals/zexy/src/0x3c_tilde.c b/externals/zexy/src/0x3c_tilde.c
index ef742e8669fb9f6247d68fd20f29c3a8cb13bd48..6e278fd96eb2a372dcf303683452bff43aece5e8 100644
--- a/externals/zexy/src/0x3c_tilde.c
+++ b/externals/zexy/src/0x3c_tilde.c
@@ -202,13 +202,13 @@ static void lt_tilde_dsp(t_lt_tilde* UNUSED(x), t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(lt_tilde_performSSE, 4, in1, in2, out, n);
+    dsp_add(lt_tilde_performSSE, 4, in1, in2, out, (t_int)n);
   } else
 #endif
     if(n&7) {
-      dsp_add(lt_tilde_perform, 4, in1, in2, out, n);
+      dsp_add(lt_tilde_perform, 4, in1, in2, out, (t_int)n);
     } else {
-      dsp_add(lt_tilde_perf8, 4, in1, in2, out, n);
+      dsp_add(lt_tilde_perf8, 4, in1, in2, out, (t_int)n);
     }
 }
 
@@ -225,13 +225,13 @@ static void scalarlt_tilde_dsp(t_scalarlt_tilde *x, t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(scalarlt_tilde_performSSE, 4, in, &x->x_g, out, n);
+    dsp_add(scalarlt_tilde_performSSE, 4, in, &x->x_g, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(scalarlt_tilde_perform, 4, in, &x->x_g, out, n);
+      dsp_add(scalarlt_tilde_perform, 4, in, &x->x_g, out, (t_int)n);
     } else {
-      dsp_add(scalarlt_tilde_perf8, 4, in, &x->x_g, out, n);
+      dsp_add(scalarlt_tilde_perf8, 4, in, &x->x_g, out, (t_int)n);
     }
 }
 static void lt_tilde_help(t_object*x)
diff --git a/externals/zexy/src/0x3d0x3d_tilde.c b/externals/zexy/src/0x3d0x3d_tilde.c
index f78af4558020e2e6fde13a7b2650cb1a48c1725e..3430987865663a6fdf7bacff2caab48721f5a69c 100644
--- a/externals/zexy/src/0x3d0x3d_tilde.c
+++ b/externals/zexy/src/0x3d0x3d_tilde.c
@@ -201,13 +201,13 @@ static void eq_tilde_dsp(t_eq_tilde* UNUSED(x), t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(eq_tilde_performSSE, 4, in1, in2, out, n);
+    dsp_add(eq_tilde_performSSE, 4, in1, in2, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(eq_tilde_perform, 4, in1, in2, out, n);
+      dsp_add(eq_tilde_perform, 4, in1, in2, out, (t_int)n);
     } else {
-      dsp_add(eq_tilde_perf8, 4, in1, in2, out, n);
+      dsp_add(eq_tilde_perf8, 4, in1, in2, out, (t_int)n);
     }
 }
 
@@ -224,13 +224,13 @@ static void scalareq_tilde_dsp(t_scalareq_tilde *x, t_signal **sp)
     Z_SIMD_CHKALIGN(out) &&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(scalareq_tilde_performSSE, 4, in, &x->x_g, out, n);
+    dsp_add(scalareq_tilde_performSSE, 4, in, &x->x_g, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(scalareq_tilde_perform, 4, in, &x->x_g, out, n);
+      dsp_add(scalareq_tilde_perform, 4, in, &x->x_g, out, (t_int)n);
     } else {
-      dsp_add(scalareq_tilde_perf8,   4, in, &x->x_g, out, n);
+      dsp_add(scalareq_tilde_perf8,   4, in, &x->x_g, out, (t_int)n);
     }
 }
 
diff --git a/externals/zexy/src/0x3e_tilde.c b/externals/zexy/src/0x3e_tilde.c
index cc6964ab7172855863e7ed82abf5940bb42068b6..008a3b1c32fd324c87ce14f9483429e59cb4ed96 100644
--- a/externals/zexy/src/0x3e_tilde.c
+++ b/externals/zexy/src/0x3e_tilde.c
@@ -204,13 +204,13 @@ static void gt_tilde_dsp(t_gt_tilde* UNUSED(x), t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(gt_tilde_performSSE, 4, in1, in2, out, n);
+    dsp_add(gt_tilde_performSSE, 4, in1, in2, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(gt_tilde_perform, 4, in1, in2, out, n);
+      dsp_add(gt_tilde_perform, 4, in1, in2, out, (t_int)n);
     } else {
-      dsp_add(gt_tilde_perf8, 4, in1, in2, out, n);
+      dsp_add(gt_tilde_perf8, 4, in1, in2, out, (t_int)n);
     }
 }
 
@@ -227,13 +227,13 @@ static void scalargt_tilde_dsp(t_scalargt_tilde *x, t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(scalargt_tilde_performSSE, 4, in, &x->x_g, out, n);
+    dsp_add(scalargt_tilde_performSSE, 4, in, &x->x_g, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(scalargt_tilde_perform, 4, in, &x->x_g, out, n);
+      dsp_add(scalargt_tilde_perform, 4, in, &x->x_g, out, (t_int)n);
     } else {
-      dsp_add(scalargt_tilde_perf8,   4, in, &x->x_g, out, n);
+      dsp_add(scalargt_tilde_perf8,   4, in, &x->x_g, out, (t_int)n);
     }
 }
 
diff --git a/externals/zexy/src/0x7c0x7c_tilde.c b/externals/zexy/src/0x7c0x7c_tilde.c
index 9b43d73066187c44c940b98bc35ea1284f1ea080..558c7609078098b3f9bb3cb29a1fb6e4d9486074 100644
--- a/externals/zexy/src/0x7c0x7c_tilde.c
+++ b/externals/zexy/src/0x7c0x7c_tilde.c
@@ -219,13 +219,13 @@ static void oror_tilde_dsp(t_oror_tilde* UNUSED(x), t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(oror_tilde_performSSE, 4, in1, in2, out, n);
+    dsp_add(oror_tilde_performSSE, 4, in1, in2, out, (t_int)n);
   } else
 #endif
     if(n&7) {
-      dsp_add(oror_tilde_perform, 4, in1, in2, out, n);
+      dsp_add(oror_tilde_perform, 4, in1, in2, out, (t_int)n);
     } else {
-      dsp_add(oror_tilde_perf8, 4, in1, in2, out, n);
+      dsp_add(oror_tilde_perf8, 4, in1, in2, out, (t_int)n);
     }
 }
 
@@ -242,13 +242,13 @@ static void scalaroror_tilde_dsp(t_scalaroror_tilde *x, t_signal **sp)
     Z_SIMD_CHKALIGN(out)&&
     ZEXY_TYPE_EQUAL(t_sample, float)
   ) {
-    dsp_add(scalaroror_tilde_performSSE, 4, in, &x->x_g, out, n);
+    dsp_add(scalaroror_tilde_performSSE, 4, in, &x->x_g, out, (t_int)n);
   } else
 #endif
     if (n&7) {
-      dsp_add(scalaroror_tilde_perform, 4, in, &x->x_g, out, n);
+      dsp_add(scalaroror_tilde_perform, 4, in, &x->x_g, out, (t_int)n);
     } else {
-      dsp_add(scalaroror_tilde_perf8, 4, in, &x->x_g, out, n);
+      dsp_add(scalaroror_tilde_perf8, 4, in, &x->x_g, out, (t_int)n);
     }
 }
 
diff --git a/externals/zexy/src/absgn~.c b/externals/zexy/src/absgn~.c
index 927c55d2c11316d5d365d41484c011782f2fb7c2..52d828927c6e47292f14d2fcf84f13a2c48ae802 100644
--- a/externals/zexy/src/absgn~.c
+++ b/externals/zexy/src/absgn~.c
@@ -106,12 +106,12 @@ static void sigABSGN_dsp(t_absgn* UNUSED(x), t_signal **sp)
     zexy_testSSE(sigABSGN_perform, sigABSGN_performSSE, 1, 2)
   ) {
     dsp_add(sigABSGN_performSSE, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
   } else
 #endif
   {
     dsp_add(sigABSGN_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
   }
 }
 
diff --git a/externals/zexy/src/abs~.c b/externals/zexy/src/abs~.c
index 333aba3ae144cb7df76dd063a39b64b040d0bc53..c2bf55a28c6060b35d5dc9dee383d5988cd64378 100644
--- a/externals/zexy/src/abs~.c
+++ b/externals/zexy/src/abs~.c
@@ -128,11 +128,11 @@ static void sigABS_dsp(t_abs *x, t_signal **sp)
                  sigABS_performSSE,
                  1, 1)
   ) {
-    dsp_add(sigABS_performSSE, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sigABS_performSSE, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
   } else
 #endif
   {
-    dsp_add(sigABS_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sigABS_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
   }
 }
 
diff --git a/externals/zexy/src/avg~.c b/externals/zexy/src/avg~.c
index 839b6b523ed418ae76c9c808b8f802292186841c..669879ca4817d67ae0f8a8d4a60258d4f67ceada 100644
--- a/externals/zexy/src/avg~.c
+++ b/externals/zexy/src/avg~.c
@@ -55,7 +55,7 @@ static t_int *avg_perform(t_int *w)
 static void avg_dsp(t_avg *x, t_signal **sp)
 {
   x->n_inv=1./sp[0]->s_n;
-  dsp_add(avg_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(avg_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *avg_new(void)
diff --git a/externals/zexy/src/blockmirror~.c b/externals/zexy/src/blockmirror~.c
index 67465dd6e2693ec8d4469f921a92461f4c3d7547..2ad4092cdbb0542267043d139108e1cbd4c1599d 100644
--- a/externals/zexy/src/blockmirror~.c
+++ b/externals/zexy/src/blockmirror~.c
@@ -78,7 +78,7 @@ static void blockmirror_dsp(t_blockmirror *x, t_signal **sp)
     x->blocksize = sp[0]->s_n;
     x->blockbuffer = getbytes(sizeof(*x->blockbuffer)*x->blocksize);
   }
-  dsp_add(blockmirror_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(blockmirror_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void blockmirror_helper(t_blockmirror*x)
diff --git a/externals/zexy/src/blockshuffle~.c b/externals/zexy/src/blockshuffle~.c
index d2e0e9e56cb06cc887ddb0e3f2c89fac173e55b6..de9b24fc9af6d34efdd0c9efa745a73189e1054a 100644
--- a/externals/zexy/src/blockshuffle~.c
+++ b/externals/zexy/src/blockshuffle~.c
@@ -116,7 +116,7 @@ static void blockshuffle_dsp(t_blockshuffle *x, t_signal **sp)
   blockshuffle_buildindex(x, sp[0]->s_n);
 
   dsp_add(blockshuffle_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,
-          sp[0]->s_n);
+          (t_int)sp[0]->s_n);
 }
 
 static void blockshuffle_helper(void)
diff --git a/externals/zexy/src/blockswap~.c b/externals/zexy/src/blockswap~.c
index 05ea2e8e42eea60cb1f0b2b69472c90917be901d..15785850f36a879d061990f6ff32634f324b964c 100644
--- a/externals/zexy/src/blockswap~.c
+++ b/externals/zexy/src/blockswap~.c
@@ -76,7 +76,7 @@ static void blockswap_dsp(t_blockswap *x, t_signal **sp)
     x->blocksize = sp[0]->s_n/2;
     x->blockbuffer = getbytes(sizeof(*x->blockbuffer)*x->blocksize);
   }
-  dsp_add(blockswap_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(blockswap_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void blockswap_helper(t_blockswap *x)
diff --git a/externals/zexy/src/demultiplex~.c b/externals/zexy/src/demultiplex~.c
index 6a40cbb4bbee64342352c0605248d548f1e66d74..4fb7e7876337a459a9c27273feea2e40cde7a5df 100644
--- a/externals/zexy/src/demultiplex~.c
+++ b/externals/zexy/src/demultiplex~.c
@@ -73,7 +73,7 @@ static void demux_dsp(t_demux *x, t_signal **sp)
   while(n--) {
     *dummy++=sp[x->n_out-n]->s_vec;
   }
-  dsp_add(demux_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(demux_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/zexy/src/dfreq~.c b/externals/zexy/src/dfreq~.c
index 1868e80b3bb016f4ffd18d2fbb9b2c1f2eec73c8..2ad7715751fa40bfb83073b60e2bca91f743c0f6 100644
--- a/externals/zexy/src/dfreq~.c
+++ b/externals/zexy/src/dfreq~.c
@@ -82,7 +82,7 @@ static t_int *dfreq_perform(t_int *w)
 
 static void dfreq_dsp(t_dfreq *x, t_signal **sp)
 {
-  dsp_add(dfreq_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n,x);
+  dsp_add(dfreq_perform, 4, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n,x);
 }
 
 
diff --git a/externals/zexy/src/dirac~.c b/externals/zexy/src/dirac~.c
index fbd83109b3b7b7491f3d2e16361a2774ef7c77eb..027fee5539284af8472b3db088eefcabc22e9fd5 100644
--- a/externals/zexy/src/dirac~.c
+++ b/externals/zexy/src/dirac~.c
@@ -110,9 +110,9 @@ static t_int *dirac_perf8(t_int *w)
 static void dirac_dsp(t_dirac *x, t_signal **sp)
 {
   if (sp[0]->s_n & 7) {
-    dsp_add(dirac_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(dirac_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
   } else {
-    dsp_add(dirac_perf8, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(dirac_perf8, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
   }
 }
 
diff --git a/externals/zexy/src/doublepole~.c b/externals/zexy/src/doublepole~.c
index 6666135c6b38a172ee754e141129013d4f06f046..650c8a5313f7c3adf4f3d505483465ac57b82a51 100644
--- a/externals/zexy/src/doublepole~.c
+++ b/externals/zexy/src/doublepole~.c
@@ -105,7 +105,7 @@ static void sigdoublepole_dsp(t_sigdoublepole *x, t_signal **sp)
 {
   dsp_add(sigdoublepole_perform, 4,
           sp[0]->s_vec, sp[1]->s_vec,
-          x->x_ctl, sp[0]->s_n);
+          x->x_ctl, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/zexy/src/envrms~.c b/externals/zexy/src/envrms~.c
index 520421153c84bad4552bfc320c9da3a128d047c3..b074414c8f95b3b12690f5f82ea55889e2606256 100644
--- a/externals/zexy/src/envrms~.c
+++ b/externals/zexy/src/envrms~.c
@@ -126,7 +126,7 @@ static void sigenvrms_dsp(t_sigenvrms *x, t_signal **sp)
   else {
     x->x_realperiod = x->x_period;
   }
-  dsp_add(sigenvrms_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(sigenvrms_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
   if (sp[0]->s_n > MAXVSTAKEN) {
     bug("sigenvrms_dsp");
   }
diff --git a/externals/zexy/src/multiline~.c b/externals/zexy/src/multiline~.c
index 7982c2329919295465e9e4a8d75ce372dd7b1149..fea4f3d2218fc0d8c07d6993fce576c65da7a957 100644
--- a/externals/zexy/src/multiline~.c
+++ b/externals/zexy/src/multiline~.c
@@ -211,7 +211,7 @@ static void mline_dsp(t_mline *x, t_signal **sp)
   }
 
   x->msec2tick = sp[0]->s_sr / (1000.f * sp[0]->s_n);
-  dsp_add(mline_perform, 2, x, sp[0]->s_n);
+  dsp_add(mline_perform, 2, x, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/zexy/src/multiplex~.c b/externals/zexy/src/multiplex~.c
index eccda19f00b635a11c9ddfcddb2a3a9d692fb755..86de9c5604a5a1154508d691e7eee875e92f6298 100644
--- a/externals/zexy/src/multiplex~.c
+++ b/externals/zexy/src/multiplex~.c
@@ -64,7 +64,7 @@ static void mux_tilde_dsp(t_mux *x, t_signal **sp)
     *dummy++=sp[n]->s_vec;
   }
 
-  dsp_add(mux_tilde_perform, 3, x, sp[n]->s_vec, sp[0]->s_n);
+  dsp_add(mux_tilde_perform, 3, x, sp[n]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void mux_tilde_helper(void)
diff --git a/externals/zexy/src/noish~.c b/externals/zexy/src/noish~.c
index 295a95f95be271dea5b3a3731c70120750e4bbab..f34455141f3f474701a28c853b5f6ab2976a18a7 100644
--- a/externals/zexy/src/noish~.c
+++ b/externals/zexy/src/noish~.c
@@ -141,7 +141,7 @@ static t_int *noish_perform(t_int *w)
 
 static void noish_dsp(t_nois *x, t_signal **sp)
 {
-  dsp_add(noish_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(noish_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void noish_helper(void)
diff --git a/externals/zexy/src/noisi~.c b/externals/zexy/src/noisi~.c
index 4703b95692915e40803a7743fefb3a6d41b4a4a3..f79e939f7cf26bbbda6c5f5ae9951fb4b0854641 100644
--- a/externals/zexy/src/noisi~.c
+++ b/externals/zexy/src/noisi~.c
@@ -144,7 +144,7 @@ static t_int *noisi_perform(t_int *w)
 
 static void noisi_dsp(t_nois *x, t_signal **sp)
 {
-  dsp_add(noisi_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(noisi_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/zexy/src/pack~.c b/externals/zexy/src/pack~.c
index e1614a7e4c486465f103d0463ae4e735487708e2..ef823ec87ac067a492f86379a477c13caa363294 100644
--- a/externals/zexy/src/pack~.c
+++ b/externals/zexy/src/pack~.c
@@ -64,7 +64,7 @@ static void sigpack_dsp(t_sigpack *x, t_signal **sp)
     x->vector_length = sp[0]->s_n;
     x->buffer = (t_atom *)getbytes(x->vector_length * sizeof(t_atom));
   }
-  dsp_add(sigpack_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(sigpack_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void sigpack_free(t_sigpack*x)
diff --git a/externals/zexy/src/pdf~.c b/externals/zexy/src/pdf~.c
index 74d20d6bf4a5c2dbd28145798c8a04a5bd494cea..12db1db6c43e9e5911a31e9d919780f7c9284821 100644
--- a/externals/zexy/src/pdf~.c
+++ b/externals/zexy/src/pdf~.c
@@ -96,7 +96,7 @@ static void pdf_dsp(t_pdf *x, t_signal **sp)
 {
   x->halfsize = (x->size - 1) / 2.0;
 
-  dsp_add(pdf_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(pdf_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *pdf_new(t_floatarg f)
diff --git a/externals/zexy/src/quantize~.c b/externals/zexy/src/quantize~.c
index 972fa6dec902787f8a9b784d677821d829e0be43..36d8f8964d2a65d85141edfe0bf47f77934e7e8c 100644
--- a/externals/zexy/src/quantize~.c
+++ b/externals/zexy/src/quantize~.c
@@ -75,7 +75,7 @@ static t_int *quantize_perform(t_int *w)
 
 static void quantize_dsp(t_quantize *x, t_signal **sp)
 {
-  dsp_add(quantize_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(quantize_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void quantize_tilde_helper(t_quantize* UNUSED(x))
diff --git a/externals/zexy/src/route~.c b/externals/zexy/src/route~.c
index aa073ba63b7afe9a599421584ef12f6b8684b4cb..43add4e90d85811704456df8fa3604a2f0e29cf9 100644
--- a/externals/zexy/src/route~.c
+++ b/externals/zexy/src/route~.c
@@ -46,7 +46,7 @@ t_int *route_tilde_perform(t_int *w)
 static void route_tilde_dsp(t_route_tilde *x, t_signal **sp)
 {
   if(sp) {
-    dsp_add(route_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(route_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
   } else {
     route_tilde_any(x, gensym("dsp"), 0, 0);
   }
diff --git a/externals/zexy/src/sfplay.c b/externals/zexy/src/sfplay.c
index 8418e322098b15bb20f61370389cef02b2ffd3b5..49c6229e925c5ac5baa66377cbaee18179a31c8a 100644
--- a/externals/zexy/src/sfplay.c
+++ b/externals/zexy/src/sfplay.c
@@ -560,14 +560,14 @@ static void sfplay_dsp(t_sfplay *x, t_signal **sp)
     dsp_add(sfplay_perform, 4, x,
             sp[0]->s_vec,
             sp[1]->s_vec, /* out 1 */
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   case 2:
     dsp_add(sfplay_perform, 5, x,
             sp[0]->s_vec, /* out 1*/
             sp[1]->s_vec, /* out 2*/
             sp[2]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   case 4:
     dsp_add(sfplay_perform, 7, x,
@@ -576,7 +576,7 @@ static void sfplay_dsp(t_sfplay *x, t_signal **sp)
             sp[2]->s_vec,
             sp[3]->s_vec,
             sp[4]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   case 8:
     dsp_add(sfplay_perform, 11, x,
@@ -589,7 +589,7 @@ static void sfplay_dsp(t_sfplay *x, t_signal **sp)
             sp[6]->s_vec,
             sp[7]->s_vec,
             sp[8]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   }
 }
diff --git a/externals/zexy/src/sfrecord.c b/externals/zexy/src/sfrecord.c
index 3a63eb3c46766f2fdd079cfb9e24b423ba7d02c2..0e491ce9d58d0e07417c6dad1e5a46666f2f9238 100644
--- a/externals/zexy/src/sfrecord.c
+++ b/externals/zexy/src/sfrecord.c
@@ -489,13 +489,13 @@ static void sfrecord_dsp(t_sfrecord *x, t_signal **sp)
   case 1:
     dsp_add(sfrecord_perform, 3, x,
             sp[0]->s_vec, /* in 1 */
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   case 2:
     dsp_add(sfrecord_perform, 4, x,
             sp[0]->s_vec,
             sp[1]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   case 4:
     dsp_add(sfrecord_perform, 6, x,
@@ -503,7 +503,7 @@ static void sfrecord_dsp(t_sfrecord *x, t_signal **sp)
             sp[1]->s_vec,
             sp[2]->s_vec,
             sp[3]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   case 8:
     dsp_add(sfrecord_perform, 9, x,
@@ -515,7 +515,7 @@ static void sfrecord_dsp(t_sfrecord *x, t_signal **sp)
             sp[5]->s_vec,
             sp[6]->s_vec,
             sp[7]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
     break;
   }
 }
diff --git a/externals/zexy/src/sgn~.c b/externals/zexy/src/sgn~.c
index 4ed554fd7dc85a23ceec9b21aa48f62cfba9d083..6e6e03d8aa5a5ed3f3c179a524dc3088e4149697 100644
--- a/externals/zexy/src/sgn~.c
+++ b/externals/zexy/src/sgn~.c
@@ -171,13 +171,13 @@ static void sgnTilde_dsp(t_sgnTilde *x, t_signal **sp)
                  sgnTilde_performSSE,
                  1,1)
   ) {
-    dsp_add(sgnTilde_performSSE, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sgnTilde_performSSE, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
   } else
 #endif
     if (sp[0]->s_n & 7) {
-      dsp_add(sgnTilde_perform , 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+      dsp_add(sgnTilde_perform , 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
     } else {
-      dsp_add(sgnTilde_perform8, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+      dsp_add(sgnTilde_perform8, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
     }
 
 }
diff --git a/externals/zexy/src/sigzero~.c b/externals/zexy/src/sigzero~.c
index d5f8e7773d1114fa33d7d8caaef6715d7007a5a6..8a12b538c5c0b7e367fd788dc024276e02447200 100644
--- a/externals/zexy/src/sigzero~.c
+++ b/externals/zexy/src/sigzero~.c
@@ -74,7 +74,7 @@ static t_int *sigzero_perform(t_int *w)
 
 static void sigzero_dsp(t_sigzero *x, t_signal **sp)
 {
-  dsp_add(sigzero_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(sigzero_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void sigzero_tilde_helper(void)
diff --git a/externals/zexy/src/step~.c b/externals/zexy/src/step~.c
index 9cc5cab9bacf06e3c68727c8b3615f7616a8ce67..a35ed35be5ba65f922b12735ea4933c3e08338e3 100644
--- a/externals/zexy/src/step~.c
+++ b/externals/zexy/src/step~.c
@@ -96,7 +96,7 @@ static t_int *step_perform(t_int *w)
 
 static void step_dsp(t_step *x, t_signal **sp)
 {
-  dsp_add(step_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+  dsp_add(step_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 
diff --git a/externals/zexy/src/swap~.c b/externals/zexy/src/swap~.c
index 7ed978341fe29bfb3fd93fa0eebba3ee096e7a83..9d6486eead09a893d23d7a34bbcee7493f87b3dd 100644
--- a/externals/zexy/src/swap~.c
+++ b/externals/zexy/src/swap~.c
@@ -70,7 +70,7 @@ static t_int *swap_perform(t_int *w)
 
 static void swap_dsp(t_swap *x, t_signal **sp)
 {
-  dsp_add(swap_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+  dsp_add(swap_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void swap_helper(void)
diff --git a/externals/zexy/src/tabread4~~.c b/externals/zexy/src/tabread4~~.c
index 085178a0eae8488977fcb3930263f8a0fe5c221b..37cb27b4fa533d11cf1ee69c86d170d10f1906a0 100644
--- a/externals/zexy/src/tabread4~~.c
+++ b/externals/zexy/src/tabread4~~.c
@@ -119,7 +119,7 @@ static void tabread4_tilde_dsp(t_tabread4_tilde *x, t_signal **sp)
   tabread4_tilde_set(x, x->x_arrayname);
 
   dsp_add(tabread4_tilde_perform, 5, x,
-          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+          sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
diff --git a/externals/zexy/src/tavg~.c b/externals/zexy/src/tavg~.c
index 90c9d3d950f550d997e4cceee5eacf07ed5692a4..b51dcd68e8df80f3986c9c0a5d971b5ac057467e 100644
--- a/externals/zexy/src/tavg~.c
+++ b/externals/zexy/src/tavg~.c
@@ -57,7 +57,7 @@ static t_int *tavg_perform(t_int *w)
 static void tavg_dsp(t_tavgtilde *x, t_signal **sp)
 {
   x->n_inv=1./sp[0]->s_n;
-  dsp_add(tavg_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(tavg_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *tavg_new(void)
diff --git a/externals/zexy/src/unpack~.c b/externals/zexy/src/unpack~.c
index d7bae1ceebbe7966c582e87d3006e10800576f20..2706261912d96a99e5ee5fd65221d27175e75e84 100644
--- a/externals/zexy/src/unpack~.c
+++ b/externals/zexy/src/unpack~.c
@@ -94,7 +94,7 @@ static void sigunpack_dsp(t_sigunpack *x, t_signal **sp)
     x->bufsize = newsize;
   }
 
-  dsp_add(sigunpack_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+  dsp_add(sigunpack_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *sigunpack_new(t_floatarg f)
diff --git a/externals/zexy/src/z~.c b/externals/zexy/src/z~.c
index 02cc88db2e84aa04fab2adbc341191c44815c77c..bafca048360221129806d7bc569a2d2601f92594 100644
--- a/externals/zexy/src/z~.c
+++ b/externals/zexy/src/z~.c
@@ -89,7 +89,7 @@ static t_int *zN_perform(t_int *w)
 
 static void zNdelay_dsp(t_zNdelay *x, t_signal **sp)
 {
-  dsp_add(zN_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n);
+  dsp_add(zN_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void *zNdelay_new(t_symbol*s, int argc, t_atom*argv)
diff --git a/pd/extra/bob~/bob~.c b/pd/extra/bob~/bob~.c
index d28371c51e61219fe757157a083f250acf4ce9df..ac040d796e698ec44c86022149607cf30e55caeb 100644
--- a/pd/extra/bob~/bob~.c
+++ b/pd/extra/bob~/bob~.c
@@ -234,7 +234,7 @@ static void bob_dsp(t_bob *x, t_signal **sp)
 {
     x->x_sr = sp[0]->s_sr;
     dsp_add(bob_perform, 6, x, sp[0]->s_vec, sp[1]->s_vec,
-        sp[2]->s_vec, sp[3]->s_vec, sp[0]->s_n);
+        sp[2]->s_vec, sp[3]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void bob_tilde_setup(void)
diff --git a/pd/extra/bonk~/bonk~.c b/pd/extra/bonk~/bonk~.c
index c61619d7a47bae03707fdf05c78f5e9dd375917d..f8b982553e24e5f7b12c06486f09d0d6f4fcb8c5 100644
--- a/pd/extra/bonk~/bonk~.c
+++ b/pd/extra/bonk~/bonk~.c
@@ -818,7 +818,7 @@ static void bonk_dsp(t_bonk *x, t_signal **sp)
     for (i = 0, gp = x->x_insig; i < ninsig; i++, gp++)
         gp->g_invec = (*(sp++))->s_vec;
     
-    dsp_add(bonk_perform, 2, x, n);
+    dsp_add(bonk_perform, 2, x, (t_int)n);
 }
 
 static void bonk_thresh(t_bonk *x, t_floatarg f1, t_floatarg f2)
diff --git a/pd/extra/fiddle~/fiddle~.c b/pd/extra/fiddle~/fiddle~.c
index d034f0476a03fb617402230eab8ff1966230d0d4..c11bbf6708f336bccf0bfddd6e22528146b91176 100644
--- a/pd/extra/fiddle~/fiddle~.c
+++ b/pd/extra/fiddle~/fiddle~.c
@@ -1417,7 +1417,7 @@ void sigfiddle_dsp(t_sigfiddle *x, t_signal **sp)
     x->x_sr = sp[0]->s_sr;
     sigfiddle_reattack(x, x->x_attacktime, x->x_attackthresh);
     sigfiddle_vibrato(x, x->x_vibtime, x->x_vibdepth);
-    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
     /* This is the callback function for the clock, but also acts as
@@ -1677,7 +1677,7 @@ void sigfiddle_dsp(t_sigfiddle *x, t_signal **sp)
         }
         sigfiddle_reattack(x, x->x_attacktime, x->x_attackthresh);
     sigfiddle_vibrato(x, x->x_vibtime, x->x_vibdepth);
-    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(fiddle_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 void sigfiddle_tick(t_sigfiddle *x)     /* callback function for the clock MSP*/
diff --git a/pd/extra/loop~/loop~.c b/pd/extra/loop~/loop~.c
index 72938fd7597bc8293ee46a701d3b02f1903ead80..2019b58274d9eea5bafec91f7e05ab761e3fe5c6 100644
--- a/pd/extra/loop~/loop~.c
+++ b/pd/extra/loop~/loop~.c
@@ -142,7 +142,7 @@ static void loop_dsp(t_loop *x, t_signal **sp)
 {
     dsp_add(loop_perform, 6,
         &x->x_loopctl, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
-            sp[0]->s_n);
+            (t_int)sp[0]->s_n);
 }
 
 static void loop_set(t_loop *x, t_floatarg val)
diff --git a/pd/extra/lrshift~/lrshift~.c b/pd/extra/lrshift~/lrshift~.c
index 19dcb93d5c07686f20372058004c275b1b7d0718..377b43fb8a722e08a611df646f898fe327579fbd 100644
--- a/pd/extra/lrshift~/lrshift~.c
+++ b/pd/extra/lrshift~/lrshift~.c
@@ -51,9 +51,9 @@ static void lrshift_tilde_dsp(t_lrshift_tilde *x, t_signal **sp)
         shift = -n;
     if (shift < 0)
         dsp_add(rightshift_perform, 4,
-            sp[0]->s_vec + n, sp[1]->s_vec + n, n, -shift);
+            sp[0]->s_vec + n, sp[1]->s_vec + n, (t_int)n, (t_int)(-shift));
     else dsp_add(leftshift_perform, 4,
-            sp[0]->s_vec, sp[1]->s_vec, n, shift);
+            sp[0]->s_vec, sp[1]->s_vec, (t_int)n, (t_int)shift);
 }
 
 static void *lrshift_tilde_new(t_floatarg f)
diff --git a/pd/extra/pd~/pd~.c b/pd/extra/pd~/pd~.c
index bc096dd21f78e94935fadf9607c605356901a9b6..226edffee8b05b4174792a9bab1eb50095378740 100644
--- a/pd/extra/pd~/pd~.c
+++ b/pd/extra/pd~/pd~.c
@@ -584,7 +584,7 @@ static void pd_tilde_dsp(t_pd_tilde *x, t_signal **sp)
     for (i = 0, g = x->x_outsig; i < x->x_noutsig; i++, g++)
         *g = (*(sp++))->s_vec;
     
-    dsp_add(pd_tilde_perform, 2, x, n);
+    dsp_add(pd_tilde_perform, 2, x, (t_int)n);
 }
 
 static void pd_tilde_pdtilde(t_pd_tilde *x, t_symbol *s,
diff --git a/pd/extra/sigmund~/sigmund~.c b/pd/extra/sigmund~/sigmund~.c
index a246dad895cc73e5ef03d9093ab4ef2f96e2b3cb..1199f6014cf2d46634b6365bd993c6d28c930dba 100644
--- a/pd/extra/sigmund~/sigmund~.c
+++ b/pd/extra/sigmund~/sigmund~.c
@@ -1050,7 +1050,7 @@ static void sigmund_dsp(t_sigmund *x, t_signal **sp)
             post("sigmund: adjusting hop size to %d",
                 (x->x_hop = sp[0]->s_n * (x->x_hop / sp[0]->s_n)));
         x->x_sr = sp[0]->s_sr;
-        dsp_add(sigmund_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+        dsp_add(sigmund_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/pd/src/d_arithmetic.c b/pd/src/d_arithmetic.c
index c79f434700eed2ea75321b749e0fa20ac6bd8563..2b8336891775c3d2bf03aaa446618b96e7da6374 100644
--- a/pd/src/d_arithmetic.c
+++ b/pd/src/d_arithmetic.c
@@ -107,10 +107,10 @@ t_int *scalarplus_perf8(t_int *w)
 
 void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n)
 {
-    if (n&7)
-        dsp_add(plus_perform, 4, in1, in2, out, n);
+    if (n & 7)
+        dsp_add(plus_perform, 4, in1, in2, out, (t_int)n);
     else        
-        dsp_add(plus_perf8, 4, in1, in2, out, n);
+        dsp_add(plus_perf8, 4, in1, in2, out, (t_int)n);
 }
 
 static void plus_dsp(t_plus *x, t_signal **sp)
@@ -120,12 +120,12 @@ static void plus_dsp(t_plus *x, t_signal **sp)
 
 static void scalarplus_dsp(t_scalarplus *x, t_signal **sp)
 {
-    if (sp[0]->s_n&7)
+    if (sp[0]->s_n & 7)
         dsp_add(scalarplus_perform, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(scalarplus_perf8, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void plus_setup(void)
@@ -242,20 +242,20 @@ static void minus_dsp(t_minus *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(minus_perform, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(minus_perf8, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void scalarminus_dsp(t_scalarminus *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(scalarminus_perform, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(scalarminus_perf8, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void minus_setup(void)
@@ -373,20 +373,20 @@ static void times_dsp(t_times *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(times_perform, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(times_perf8, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void scalartimes_dsp(t_scalartimes *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(scalartimes_perform, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(scalartimes_perf8, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void times_setup(void)
@@ -515,20 +515,20 @@ static void over_dsp(t_over *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(over_perform, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(over_perf8, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void scalarover_dsp(t_scalarover *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(scalarover_perform, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(scalarover_perf8, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void over_setup(void)
@@ -657,20 +657,20 @@ static void max_dsp(t_max *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(max_perform, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(max_perf8, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void scalarmax_dsp(t_scalarmax *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(scalarmax_perform, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(scalarmax_perf8, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void max_setup(void)
@@ -799,20 +799,20 @@ static void min_dsp(t_min *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(min_perform, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(min_perf8, 4,
-            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+            sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void scalarmin_dsp(t_scalarmin *x, t_signal **sp)
 {
     if (sp[0]->s_n&7)
         dsp_add(scalarmin_perform, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
     else        
         dsp_add(scalarmin_perf8, 4, sp[0]->s_vec, &x->x_g,
-            sp[1]->s_vec, sp[0]->s_n);
+            sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void min_setup(void)
diff --git a/pd/src/d_array.c b/pd/src/d_array.c
index eb6d2031d60ffa99e6cb817527fbdbc196f58abd..b69a097acaa4029ab96c549403e53f8308b96d9b 100644
--- a/pd/src/d_array.c
+++ b/pd/src/d_array.c
@@ -95,7 +95,7 @@ void tabwrite_tilde_set(t_tabwrite_tilde *x, t_symbol *s)
 static void tabwrite_tilde_dsp(t_tabwrite_tilde *x, t_signal **sp)
 {
     tabwrite_tilde_set(x, x->x_arrayname);
-    dsp_add(tabwrite_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(tabwrite_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void tabwrite_tilde_bang(t_tabwrite_tilde *x)
@@ -220,7 +220,7 @@ void tabplay_tilde_set(t_tabplay_tilde *x, t_symbol *s)
 static void tabplay_tilde_dsp(t_tabplay_tilde *x, t_signal **sp)
 {
     tabplay_tilde_set(x, x->x_arrayname);
-    dsp_add(tabplay_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(tabplay_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void tabplay_tilde_list(t_tabplay_tilde *x, t_symbol *s,
@@ -342,7 +342,7 @@ static void tabread_tilde_dsp(t_tabread_tilde *x, t_signal **sp)
     tabread_tilde_set(x, x->x_arrayname);
 
     dsp_add(tabread_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
@@ -473,7 +473,7 @@ static void tabread4_tilde_dsp(t_tabread4_tilde *x, t_signal **sp)
     tabread4_tilde_set(x, x->x_arrayname);
 
     dsp_add(tabread4_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 
 }
 
@@ -604,7 +604,7 @@ static void tabosc4_tilde_dsp(t_tabosc4_tilde *x, t_signal **sp)
     tabosc4_tilde_set(x, x->arrayname);
 
     dsp_add(tabosc4_tilde_perform, 4, x,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void tabosc4_tilde_setup(void)
@@ -694,7 +694,7 @@ static void tabsend_dsp(t_tabsend *x, t_signal **sp)
         if (x->x_graphcount > ticksper) x->x_graphcount = ticksper;
         if (n < vecsize) vecsize = n;
         garray_usedindsp(a);
-        dsp_add(tabsend_perform, 3, x, sp[0]->s_vec, vecsize);
+        dsp_add(tabsend_perform, 3, x, sp[0]->s_vec, (t_int)vecsize);
     }
 }
 
@@ -753,7 +753,7 @@ static void tabreceive_dsp(t_tabreceive *x, t_signal **sp)
         if (x->x_vecsize > sp[0]->s_n)
             x->x_vecsize = sp[0]->s_n;
         garray_usedindsp(a);
-        dsp_add(tabreceive_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+        dsp_add(tabreceive_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/pd/src/d_ctl.c b/pd/src/d_ctl.c
index 6e854b512f5f750188f2b21d102360b1e3fcfbe3..15b8587b1a65fd23d6c9ca5705924de34c12b952 100644
--- a/pd/src/d_ctl.c
+++ b/pd/src/d_ctl.c
@@ -51,9 +51,9 @@ static t_int *sig_tilde_perf8(t_int *w)
 void dsp_add_scalarcopy(t_float *in, t_sample *out, int n)
 {
     if (n&7)
-        dsp_add(sig_tilde_perform, 3, in, out, n);
+        dsp_add(sig_tilde_perform, 3, in, out, (t_int)n);
     else        
-        dsp_add(sig_tilde_perf8, 3, in, out, n);
+        dsp_add(sig_tilde_perf8, 3, in, out, (t_int)n);
 }
 
 static void sig_tilde_float(t_sig *x, t_float f)
@@ -63,7 +63,7 @@ static void sig_tilde_float(t_sig *x, t_float f)
 
 static void sig_tilde_dsp(t_sig *x, t_signal **sp)
 {
-    dsp_add(sig_tilde_perform, 3, &x->x_f, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(sig_tilde_perform, 3, &x->x_f, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void *sig_tilde_new(t_floatarg f)
@@ -198,9 +198,9 @@ static void line_tilde_stop(t_line *x)
 static void line_tilde_dsp(t_line *x, t_signal **sp)
 {
     if(sp[0]->s_n&7)
-        dsp_add(line_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+        dsp_add(line_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     else
-        dsp_add(line_tilde_perf8, 3, x, sp[0]->s_vec, sp[0]->s_n);
+        dsp_add(line_tilde_perf8, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     x->x_1overn = 1./sp[0]->s_n;
     x->x_dspticktomsec = sp[0]->s_sr / (1000 * sp[0]->s_n);
 }
@@ -378,7 +378,7 @@ static void vline_tilde_float(t_vline *x, t_float f)
 
 static void vline_tilde_dsp(t_vline *x, t_signal **sp)
 {
-    dsp_add(vline_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(vline_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     x->x_samppermsec = ((double)(sp[0]->s_sr)) / 1000;
     x->x_msecpersamp = ((double)1000) / sp[0]->s_sr;
 }
@@ -664,7 +664,7 @@ static void env_tilde_dsp(t_sigenv *x, t_signal **sp)
         x->x_buf = (t_sample *)xx;
         x->x_allocforvs = sp[0]->s_n;
     }
-    dsp_add(env_tilde_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(env_tilde_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void env_tilde_tick(t_sigenv *x) /* callback function for the clock */
@@ -800,7 +800,7 @@ done:
 void threshold_tilde_dsp(t_threshold_tilde *x, t_signal **sp)
 {
     x->x_msecpertick = 1000. * sp[0]->s_n / sp[0]->s_sr;
-    dsp_add(threshold_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
+    dsp_add(threshold_tilde_perform, 3, sp[0]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void threshold_tilde_ff(t_threshold_tilde *x)
diff --git a/pd/src/d_dac.c b/pd/src/d_dac.c
index f5515fb0ab9aa4edd5b9d540059b2f7038f3c931..902a806d2ac44b51291f9fdabce180afc8bd4789 100644
--- a/pd/src/d_dac.c
+++ b/pd/src/d_dac.c
@@ -52,7 +52,8 @@ static void dac_dsp(t_dac *x, t_signal **sp)
             error("dac~: bad vector size");
         else if (ch >= 0 && ch < sys_get_outchannels())
             dsp_add(plus_perform, 4, sys_soundout + DEFDACBLKSIZE*ch,
-                (*sp2)->s_vec, sys_soundout + DEFDACBLKSIZE*ch, DEFDACBLKSIZE);
+                (*sp2)->s_vec, sys_soundout + DEFDACBLKSIZE*ch,
+                (t_int)DEFDACBLKSIZE);
     }    
 }
 
@@ -142,9 +143,9 @@ t_int *copy_perf8(t_int *w)
 void dsp_add_copy(t_sample *in, t_sample *out, int n)
 {
     if (n&7)
-        dsp_add(copy_perform, 3, in, out, n);
+        dsp_add(copy_perform, 3, in, out, (t_int)n);
     else        
-        dsp_add(copy_perf8, 3, in, out, n);
+        dsp_add(copy_perf8, 3, in, out, (t_int)n);
 }
 
 static void adc_dsp(t_adc *x, t_signal **sp)
diff --git a/pd/src/d_delay.c b/pd/src/d_delay.c
index b43ba84277d60d0a446b5ee5cec1074708884978..89172d37b5cac1dad653a8f3020e70a8aa122d81 100644
--- a/pd/src/d_delay.c
+++ b/pd/src/d_delay.c
@@ -109,7 +109,8 @@ static t_int *sigdelwrite_perform(t_int *w)
 
 static void sigdelwrite_dsp(t_sigdelwrite *x, t_signal **sp)
 {
-    dsp_add(sigdelwrite_perform, 3, sp[0]->s_vec, &x->x_cspace, sp[0]->s_n);
+    dsp_add(sigdelwrite_perform, 3, sp[0]->s_vec, &x->x_cspace,
+        (t_int)sp[0]->s_n);
     x->x_sortno = ugen_getsortno();
     sigdelwrite_checkvecsize(x, sp[0]->s_n);
 }
@@ -213,7 +214,8 @@ static void sigdelread_dsp(t_sigdelread *x, t_signal **sp)
             0 : delwriter->x_vecsize);
         sigdelread_float(x, x->x_deltime);
         dsp_add(sigdelread_perform, 4,
-            sp[0]->s_vec, &delwriter->x_cspace, &x->x_delsamps, sp[0]->s_n);
+            sp[0]->s_vec, &delwriter->x_cspace, &x->x_delsamps,
+            (t_int)sp[0]->s_n);
     }
     else if (*x->x_sym->s_name)
         error("delread~: %s: no such delwrite~",x->x_sym->s_name);
@@ -306,7 +308,7 @@ static void sigvd_dsp(t_sigvd *x, t_signal **sp)
             0 : delwriter->x_vecsize);
         dsp_add(sigvd_perform, 5,
             sp[0]->s_vec, sp[1]->s_vec,
-                &delwriter->x_cspace, x, sp[0]->s_n);
+                &delwriter->x_cspace, x, (t_int)sp[0]->s_n);
     }
     else error("vd~: %s: no such delwrite~",x->x_sym->s_name);
 }
diff --git a/pd/src/d_fft.c b/pd/src/d_fft.c
index f4c92c6d3e3228402fa7f8077a11ab74292dfd0c..dc1d9e940b2d3baaa298f98a65f2273f99cd87d7 100644
--- a/pd/src/d_fft.c
+++ b/pd/src/d_fft.c
@@ -97,18 +97,18 @@ static void sigfft_dspx(t_sigfft *x, t_signal **sp, t_int *(*f)(t_int *w))
     t_sample *out1 = sp[2]->s_vec;
     t_sample *out2 = sp[3]->s_vec;
     if (out1 == in2 && out2 == in1)
-        dsp_add(sigfft_swap, 3, out1, out2, n);
+        dsp_add(sigfft_swap, 3, out1, out2, (t_int)n);
     else if (out1 == in2)
     {
-        dsp_add(copy_perform, 3, in2, out2, n);
-        dsp_add(copy_perform, 3, in1, out1, n);
+        dsp_add(copy_perform, 3, in2, out2, (t_int)n);
+        dsp_add(copy_perform, 3, in1, out1, (t_int)n);
     }
     else
     {
-        if (out1 != in1) dsp_add(copy_perform, 3, in1, out1, n);
-        if (out2 != in2) dsp_add(copy_perform, 3, in2, out2, n);
+        if (out1 != in1) dsp_add(copy_perform, 3, in1, out1, (t_int)n);
+        if (out2 != in2) dsp_add(copy_perform, 3, in2, out2, (t_int)n);
     }
-    dsp_add(f, 3, sp[2]->s_vec, sp[3]->s_vec, n);
+    dsp_add(f, 3, sp[2]->s_vec, sp[3]->s_vec, (t_int)n);
 }
 
 static void sigfft_dsp(t_sigfft *x, t_signal **sp)
@@ -176,9 +176,9 @@ static void sigrfft_dsp(t_sigrfft *x, t_signal **sp)
         return;
     }
     if (in1 != out1)
-        dsp_add(copy_perform, 3, in1, out1, n);
-    dsp_add(sigrfft_perform, 2, out1, n);
-    dsp_add(sigrfft_flip, 3, out1 + (n2+1), out2 + n2, n2-1);
+        dsp_add(copy_perform, 3, in1, out1, (t_int)n);
+    dsp_add(sigrfft_perform, 2, out1, (t_int)n);
+    dsp_add(sigrfft_flip, 3, out1 + (n2+1), out2 + n2, (t_int)(n2-1));
     dsp_add_zero(out1 + (n2+1), ((n2-1)&(~7)));
     dsp_add_zero(out1 + (n2+1) + ((n2-1)&(~7)), ((n2-1)&7));
     dsp_add_zero(out2 + n2, n2);
@@ -235,15 +235,15 @@ static void sigrifft_dsp(t_sigrifft *x, t_signal **sp)
     }
     if (in2 == out1)
     {
-        dsp_add(sigrfft_flip, 3, out1+1, out1 + n, n2-1);
-        dsp_add(copy_perform, 3, in1, out1, n2+1);
+        dsp_add(sigrfft_flip, 3, out1+1, out1 + n, (t_int)(n2-1));
+        dsp_add(copy_perform, 3, in1, out1, (t_int)(n2+1));
     }
     else
     {
-        if (in1 != out1) dsp_add(copy_perform, 3, in1, out1, n2+1);
-        dsp_add(sigrfft_flip, 3, in2+1, out1 + n, n2-1);
+        if (in1 != out1) dsp_add(copy_perform, 3, in1, out1, (t_int)(n2+1));
+        dsp_add(sigrfft_flip, 3, in2+1, out1 + n, (t_int)(n2-1));
     }
-    dsp_add(sigrifft_perform, 2, out1, n);
+    dsp_add(sigrifft_perform, 2, out1, (t_int)n);
 }
 
 static void sigrifft_setup(void)
@@ -331,8 +331,8 @@ static void sigframp_dsp(t_sigframp *x, t_signal **sp)
         return;
     }
     dsp_add(sigframp_perform, 5, sp[0]->s_vec, sp[1]->s_vec,
-        sp[2]->s_vec, sp[3]->s_vec, n2);
-    dsp_add(sigsqrt_perform, 3, sp[3]->s_vec, sp[3]->s_vec, n2);
+        sp[2]->s_vec, sp[3]->s_vec, (t_int)n2);
+    dsp_add(sigsqrt_perform, 3, sp[3]->s_vec, sp[3]->s_vec, (t_int)n2);
 }
 
 static void sigframp_setup(void)
diff --git a/pd/src/d_filter.c b/pd/src/d_filter.c
index 448782f757c334d8fe2ea0bf62aba42eea54fd87..fdf422e0a257c82bb7ffd24d1b4ff55401d81ac7 100644
--- a/pd/src/d_filter.c
+++ b/pd/src/d_filter.c
@@ -119,7 +119,7 @@ static void sighip_dsp(t_sighip *x, t_signal **sp)
     sighip_ft1(x,  x->x_hz);
     dsp_add((pd_compatibilitylevel > 43 ?
         sighip_perform : sighip_perform_old),
-            4, sp[0]->s_vec, sp[1]->s_vec, x->x_ctl, sp[0]->s_n);
+            4, sp[0]->s_vec, sp[1]->s_vec, x->x_ctl, (t_int)sp[0]->s_n);
 }
 
 static void sighip_clear(t_sighip *x, t_floatarg q)
@@ -214,7 +214,7 @@ static void siglop_dsp(t_siglop *x, t_signal **sp)
     siglop_ft1(x,  x->x_hz);
     dsp_add(siglop_perform, 4,
         sp[0]->s_vec, sp[1]->s_vec, 
-            x->x_ctl, sp[0]->s_n);
+            x->x_ctl, (t_int)sp[0]->s_n);
 
 }
 
@@ -349,7 +349,7 @@ static void sigbp_dsp(t_sigbp *x, t_signal **sp)
     sigbp_docoef(x, x->x_freq, x->x_q);
     dsp_add(sigbp_perform, 4,
         sp[0]->s_vec, sp[1]->s_vec, 
-            x->x_ctl, sp[0]->s_n);
+            x->x_ctl, (t_int)sp[0]->s_n);
 
 }
 
@@ -476,7 +476,7 @@ static void sigbiquad_dsp(t_sigbiquad *x, t_signal **sp)
 {
     dsp_add(sigbiquad_perform, 4,
         sp[0]->s_vec, sp[1]->s_vec, 
-            x->x_ctl, sp[0]->s_n);
+            x->x_ctl, (t_int)sp[0]->s_n);
 
 }
 
@@ -543,7 +543,7 @@ static void sigsamphold_dsp(t_sigsamphold *x, t_signal **sp)
 {
     dsp_add(sigsamphold_perform, 5,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
-            x, sp[0]->s_n);
+            x, (t_int)sp[0]->s_n);
 }
 
 static void sigsamphold_reset(t_sigsamphold *x, t_symbol *s, int argc,
@@ -618,7 +618,7 @@ static void sigrpole_dsp(t_sigrpole *x, t_signal **sp)
 {
     dsp_add(sigrpole_perform, 5,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
-            x, sp[0]->s_n);
+            x, (t_int)sp[0]->s_n);
 }
 
 static void sigrpole_clear(t_sigrpole *x)
@@ -690,7 +690,7 @@ static void sigrzero_dsp(t_sigrzero *x, t_signal **sp)
 {
     dsp_add(sigrzero_perform, 5,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
-            x, sp[0]->s_n);
+            x, (t_int)sp[0]->s_n);
 }
 
 static void sigrzero_clear(t_sigrzero *x)
@@ -762,7 +762,7 @@ static void sigrzero_rev_dsp(t_sigrzero_rev *x, t_signal **sp)
 {
     dsp_add(sigrzero_rev_perform, 5,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, 
-            x, sp[0]->s_n);
+            x, (t_int)sp[0]->s_n);
 }
 
 static void sigrzero_rev_clear(t_sigrzero_rev *x)
@@ -854,7 +854,7 @@ static void sigcpole_dsp(t_sigcpole *x, t_signal **sp)
 {
     dsp_add(sigcpole_perform, 8,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, 
-        sp[4]->s_vec, sp[5]->s_vec, x, sp[0]->s_n);
+        sp[4]->s_vec, sp[5]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void sigcpole_clear(t_sigcpole *x)
@@ -944,7 +944,7 @@ static void sigczero_dsp(t_sigczero *x, t_signal **sp)
 {
     dsp_add(sigczero_perform, 8,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, 
-        sp[4]->s_vec, sp[5]->s_vec, x, sp[0]->s_n);
+        sp[4]->s_vec, sp[5]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void sigczero_clear(t_sigczero *x)
@@ -1036,7 +1036,7 @@ static void sigczero_rev_dsp(t_sigczero_rev *x, t_signal **sp)
 {
     dsp_add(sigczero_rev_perform, 8,
         sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec, 
-        sp[4]->s_vec, sp[5]->s_vec, x, sp[0]->s_n);
+        sp[4]->s_vec, sp[5]->s_vec, x, (t_int)sp[0]->s_n);
 }
 
 static void sigczero_rev_clear(t_sigczero_rev *x)
diff --git a/pd/src/d_global.c b/pd/src/d_global.c
index af6843aaf5036444da81e3ac283e858dd89de3d2..c2b9faa4b88fd8c125145fb40965b88f0d7eb1ed 100644
--- a/pd/src/d_global.c
+++ b/pd/src/d_global.c
@@ -50,7 +50,7 @@ static t_int *sigsend_perform(t_int *w)
 static void sigsend_dsp(t_sigsend *x, t_signal **sp)
 {
     if (x->x_n == sp[0]->s_n)
-        dsp_add(sigsend_perform, 3, sp[0]->s_vec, x->x_vec, sp[0]->s_n);
+        dsp_add(sigsend_perform, 3, sp[0]->s_vec, x->x_vec, (t_int)sp[0]->s_n);
     else error("sigsend %s: unexpected vector size", x->x_sym->s_name);
 }
 
@@ -168,9 +168,9 @@ static void sigreceive_dsp(t_sigreceive *x, t_signal **sp)
         sigreceive_set(x, x->x_sym);
         if (sp[0]->s_n&7)
             dsp_add(sigreceive_perform, 3,
-                x, sp[0]->s_vec, sp[0]->s_n);
+                x, sp[0]->s_vec, (t_int)sp[0]->s_n);
         else dsp_add(sigreceive_perf8, 3,
-            x, sp[0]->s_vec, sp[0]->s_n);
+            x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
@@ -241,9 +241,9 @@ static void sigcatch_dsp(t_sigcatch *x, t_signal **sp)
     if (x->x_n == sp[0]->s_n)
     {
         if(sp[0]->s_n&7)
-        dsp_add(sigcatch_perform, 3, x->x_vec, sp[0]->s_vec, sp[0]->s_n);
+        dsp_add(sigcatch_perform, 3, x->x_vec, sp[0]->s_vec, (t_int)sp[0]->s_n);
         else
-        dsp_add(sigcatch_perf8, 3, x->x_vec, sp[0]->s_vec, sp[0]->s_n);
+        dsp_add(sigcatch_perf8, 3, x->x_vec, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
     else error("sigcatch %s: unexpected vector size", x->x_sym->s_name);
 }
@@ -334,7 +334,7 @@ static void sigthrow_dsp(t_sigthrow *x, t_signal **sp)
     {
         sigthrow_set(x, x->x_sym);
         dsp_add(sigthrow_perform, 3,
-            x, sp[0]->s_vec, sp[0]->s_n);
+            x, sp[0]->s_vec, (t_int)sp[0]->s_n);
     }
 }
 
diff --git a/pd/src/d_math.c b/pd/src/d_math.c
index 8225803cc49851bfca1857d5413b1dfcd2ad3c2f..59e6d989b80b7064313ba50c102f6a3043a66129 100644
--- a/pd/src/d_math.c
+++ b/pd/src/d_math.c
@@ -51,7 +51,7 @@ static t_int *clip_perform(t_int *w)
 
 static void clip_dsp(t_clip *x, t_signal **sp)
 {
-    dsp_add(clip_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(clip_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void clip_setup(void)
@@ -168,7 +168,7 @@ static t_int *sigrsqrt_perform(t_int *w)
 
 static void sigrsqrt_dsp(t_sigrsqrt *x, t_signal **sp)
 {
-    dsp_add(sigrsqrt_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sigrsqrt_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void sigrsqrt_setup(void)
@@ -227,7 +227,7 @@ t_int *sigsqrt_perform(t_int *w)    /* not static; also used in d_fft.c */
 
 static void sigsqrt_dsp(t_sigsqrt *x, t_signal **sp)
 {
-    dsp_add(sigsqrt_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(sigsqrt_perform, 3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void sigsqrt_setup(void)
@@ -304,7 +304,7 @@ static void sigwrap_dsp(t_sigwrap *x, t_signal **sp)
 {
     dsp_add((pd_compatibilitylevel > 47 ?
         sigwrap_perform : sigwrap_perform_old),
-            3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+            3, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 void sigwrap_setup(void)
@@ -353,7 +353,8 @@ static t_int *mtof_tilde_perform(t_int *w)
 
 static void mtof_tilde_dsp(t_mtof_tilde *x, t_signal **sp)
 {
-    dsp_add(mtof_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(mtof_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void mtof_tilde_setup(void)
@@ -397,7 +398,8 @@ static t_int *ftom_tilde_perform(t_int *w)
 
 static void ftom_tilde_dsp(t_ftom_tilde *x, t_signal **sp)
 {
-    dsp_add(ftom_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(ftom_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void ftom_tilde_setup(void)
@@ -447,7 +449,8 @@ static t_int *dbtorms_tilde_perform(t_int *w)
 
 static void dbtorms_tilde_dsp(t_dbtorms_tilde *x, t_signal **sp)
 {
-    dsp_add(dbtorms_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(dbtorms_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void dbtorms_tilde_setup(void)
@@ -496,7 +499,8 @@ static t_int *rmstodb_tilde_perform(t_int *w)
 
 static void rmstodb_tilde_dsp(t_rmstodb_tilde *x, t_signal **sp)
 {
-    dsp_add(rmstodb_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(rmstodb_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void rmstodb_tilde_setup(void)
@@ -546,7 +550,8 @@ static t_int *dbtopow_tilde_perform(t_int *w)
 
 static void dbtopow_tilde_dsp(t_dbtopow_tilde *x, t_signal **sp)
 {
-    dsp_add(dbtopow_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(dbtopow_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void dbtopow_tilde_setup(void)
@@ -595,7 +600,8 @@ static t_int *powtodb_tilde_perform(t_int *w)
 
 static void powtodb_tilde_dsp(t_powtodb_tilde *x, t_signal **sp)
 {
-    dsp_add(powtodb_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(powtodb_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void powtodb_tilde_setup(void)
@@ -684,13 +690,14 @@ t_int *scalarpow_tilde_perform(t_int *w)
 static void pow_tilde_dsp(t_pow_tilde *x, t_signal **sp)
 {
     dsp_add(pow_tilde_perform, 4,
-        sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 static void scalarpow_tilde_dsp(t_scalarpow_tilde *x, t_signal **sp)
 {
     dsp_add(scalarpow_tilde_perform, 4,
-        sp[0]->s_vec, &x->x_g, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, &x->x_g, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void pow_tilde_setup(void)
@@ -736,7 +743,7 @@ t_int *exp_tilde_perform(t_int *w)
 static void exp_tilde_dsp(t_exp_tilde *x, t_signal **sp)
 {
     dsp_add(exp_tilde_perform, 3,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void exp_tilde_setup(void)
@@ -830,13 +837,13 @@ t_int *scalarlog_tilde_perform(t_int *w)
 static void log_tilde_dsp(t_log_tilde *x, t_signal **sp)
 {
     dsp_add(log_tilde_perform, 4,
-        sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void scalarlog_tilde_dsp(t_scalarlog_tilde *x, t_signal **sp)
 {
     dsp_add(scalarlog_tilde_perform, 4,
-        sp[0]->s_vec, &x->x_g, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, &x->x_g, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void log_tilde_setup(void)
@@ -886,7 +893,7 @@ t_int *abs_tilde_perform(t_int *w)
 static void abs_tilde_dsp(t_abs_tilde *x, t_signal **sp)
 {
     dsp_add(abs_tilde_perform, 3,
-        sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+        sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void abs_tilde_setup(void)
diff --git a/pd/src/d_misc.c b/pd/src/d_misc.c
index c86a0f37f6b13c0540bf5826bd14028d3b7e867a..13c829add3fd100a791aa4166d0f35c8c1a2257d 100644
--- a/pd/src/d_misc.c
+++ b/pd/src/d_misc.c
@@ -48,7 +48,7 @@ static t_int *print_perform(t_int *w)
 
 static void print_dsp(t_print *x, t_signal **sp)
 {
-    dsp_add(print_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+    dsp_add(print_perform, 3, x, sp[0]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void print_float(t_print *x, t_float f)
diff --git a/pd/src/d_osc.c b/pd/src/d_osc.c
index d815c54ca6213a7db37eb08739ad62d699d837c4..12c28e1cc7eb77a5038fe02eb0ebe4a447cfe6fd 100644
--- a/pd/src/d_osc.c
+++ b/pd/src/d_osc.c
@@ -95,7 +95,8 @@ static t_int *phasor_perform(t_int *w)
 static void phasor_dsp(t_phasor *x, t_signal **sp)
 {
     x->x_oneoversamplerate= 1. / sp[0]->s_sr;
-    dsp_add(phasor_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(phasor_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 static void phasor_ft1(t_phasor *x, t_float f)
@@ -157,7 +158,8 @@ static t_int *cos_perform(t_int *w)
 
 static void cos_dsp(t_cos *x, t_signal **sp)
 {
-    dsp_add(cos_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(cos_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec,
+        (t_int)sp[0]->s_n);
 }
 
 void cos_tilde_setup(void)
@@ -221,7 +223,7 @@ static t_int *osc_perform(t_int *w)
 static void osc_dsp(t_osc *x, t_signal **sp)
 {
     x->x_oneoversamplerate = 1. / sp[0]->s_sr;
-    dsp_add(osc_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
+    dsp_add(osc_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, (t_int)sp[0]->s_n);
 }
 
 static void osc_ft1(t_osc *x, t_float phase)
@@ -341,7 +343,7 @@ static void vcf_dsp(t_vcf *x, t_signal **sp)
 {
     x->x_ctl->c_oneoversamplerate = 1. / sp[0]->s_sr;
     dsp_add(vcf_perform, 6, sp[0]->s_vec, sp[1]->s_vec,
-        sp[2]->s_vec, sp[3]->s_vec, x->x_ctl, sp[0]->s_n);
+        sp[2]->s_vec, sp[3]->s_vec, x->x_ctl, (t_int)sp[0]->s_n);
 }
 
 void vcf_tilde_setup(void)
@@ -391,7 +393,7 @@ static t_int *noise_perform(t_int *w)
 
 static void noise_dsp(t_noise *x, t_signal **sp)
 {
-    dsp_add(noise_perform, 3, sp[0]->s_vec, &x->x_val, sp[0]->s_n);
+    dsp_add(noise_perform, 3, sp[0]->s_vec, &x->x_val, (t_int)sp[0]->s_n);
 }
 
 static void noise_tilde_setup(void)
@@ -410,4 +412,4 @@ void d_osc_setup(void)
     osc_tilde_setup();
     vcf_tilde_setup();
     noise_tilde_setup();
-}
\ No newline at end of file
+}
diff --git a/pd/src/d_resample.c b/pd/src/d_resample.c
index 255af71d92c7cd8391cfe37b0dc73de505f71a8b..8ee8da2a4528a00c2d671308862c0ba6d36acd05 100644
--- a/pd/src/d_resample.c
+++ b/pd/src/d_resample.c
@@ -141,7 +141,8 @@ void resample_dsp(t_resample *x,
     }
     switch (method) {
     default:
-      dsp_add(downsampling_perform_0, 4, in, out, insize/outsize, insize);
+      dsp_add(downsampling_perform_0, 4, in, out, (t_int)(insize/outsize),
+        (t_int)insize);
     }
 
 
@@ -152,7 +153,8 @@ void resample_dsp(t_resample *x,
     }
     switch (method) {
     case 1:
-      dsp_add(upsampling_perform_hold, 4, in, out, outsize/insize, insize);
+      dsp_add(upsampling_perform_hold, 4, in, out, (t_int)(outsize/insize),
+        (t_int)insize);
       break;
     case 2:
       if (x->bufsize != 1) {
@@ -160,10 +162,12 @@ void resample_dsp(t_resample *x,
         x->bufsize = 1;
         x->buffer = t_getbytes(x->bufsize*sizeof(*x->buffer));
       }
-      dsp_add(upsampling_perform_linear, 5, x, in, out, outsize/insize, insize);
+      dsp_add(upsampling_perform_linear, 5, x, in, out, (t_int)(outsize/insize),
+        (t_int)insize);
       break;
     default:
-      dsp_add(upsampling_perform_0, 4, in, out, outsize/insize, insize);
+      dsp_add(upsampling_perform_0, 4, in, out, (t_int)(outsize/insize),
+        (t_int)insize);
     }
   }
 }
diff --git a/pd/src/d_ugen.c b/pd/src/d_ugen.c
index 5e9ea9bba8e739eabf337754ce83016bbedcfdc8..459fd2852e527693e61452f0a1ddfedbc2fb8cf9 100644
--- a/pd/src/d_ugen.c
+++ b/pd/src/d_ugen.c
@@ -63,9 +63,9 @@ t_int *zero_perf8(t_int *w)
 void dsp_add_zero(t_sample *out, int n)
 {
     if (n&7)
-        dsp_add(zero_perform, 2, out, n);
+        dsp_add(zero_perform, 2, out, (t_int)n);
     else
-        dsp_add(zero_perf8, 2, out, n);
+        dsp_add(zero_perf8, 2, out, (t_int)n);
 }
 
 /* ---------------------------- block~ ----------------------------- */
diff --git a/scripts/external-tests.pd b/scripts/external-tests.pd
index 398d5def76d040539a490d54474c3446436fdfb7..06fd1eb968f1310657580a0dc527e70031b3c7e4 100644
--- a/scripts/external-tests.pd
+++ b/scripts/external-tests.pd
@@ -1,9 +1,14 @@
-#N canvas 1 53 659 616 12;
+#N canvas 9 60 659 633 12;
 #X obj 61 34 loadbang;
 #N canvas 107 123 756 233 load_hcs/folder_list 0;
 #X obj 357 47 inlet;
 #X obj 357 155 s pd-\$0-hcs/folder_list;
 #N canvas 288 225 450 300 \$0-hcs/folder_list 0;
+#X obj 5 5 receive 1003-fl-in;
+#X obj 5 30 /usr/lib/pd-l2ork/extra/hcs/folder_list;
+#X obj 5 55 send 1003-fl-out;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
 #X restore 43 113 pd \$0-hcs/folder_list;
 #X obj 43 47 inlet;
 #X obj 43 76 s \$0-fl-in;
@@ -57,7 +62,16 @@ iem_anything ekext disis lyonpotpourri;
 #X obj 102 163 f;
 #X obj 102 188 + 1;
 #X msg 274 263 set;
-#X msg 66 307 \$1 \, \$2 \,;
+#X msg 66 307 \$1 \, \$2 \, \$3 \, \$4 \, \$5 \, \$6 \, \$7 \, \$8
+\, \$9 \, \$10 \, \$11 \, \$12 \, \$13 \, \$14 \, \$15 \, \$16 \, \$17
+\, \$18 \, \$19 \, \$20 \, \$21 \, \$22 \, \$23 \, \$24 \, \$25 \,
+\$26 \, \$27 \, \$28 \, \$29 \, \$30 \, \$31 \, \$32 \, \$33 \, \$34
+\, \$35 \, \$36 \, \$37 \, \$38 \, \$39 \, \$40 \, \$41 \, \$42 \,
+\$43 \, \$44 \, \$45 \, \$46 \, \$47 \, \$48 \, \$49 \, \$50 \, \$51
+\, \$52 \, \$53 \, \$54 \, \$55 \, \$56 \, \$57 \, \$58 \, \$59 \,
+\$60 \, \$61 \, \$62 \, \$63 \, \$64 \, \$65 \, \$66 \, \$67 \, \$68
+\, \$69 \, \$70 \, \$71 \, \$72 \, \$73 \, \$74 \, \$75 \, \$76 \,
+\$77 \, \$78 \, \$79 \, \$80 \, \$81 \, \$82 \, \$83 \, \$84 \,;
 #X obj 66 263 list;
 #X msg 102 263 adddollar \$1 \, addcomma;
 #X msg 150 126 0;
@@ -143,7 +157,7 @@ iem_anything ekext disis lyonpotpourri;
 #X obj 102 163 f;
 #X obj 102 188 + 1;
 #X msg 274 263 set;
-#X msg 66 307 \$1 \, \$2 \,;
+#X msg 66 307 \$1 \, \$2 \, \$3 \,;
 #X obj 66 263 list;
 #X msg 102 263 adddollar \$1 \, addcomma;
 #X msg 150 126 0;
@@ -354,7 +368,7 @@ works.;
 #X connect 28 1 19 1;
 #X connect 29 0 19 0;
 #X restore 132 653 pd get-creator-names;
-#N canvas 240 179 450 346 test-object 0;
+#N canvas 310 187 450 421 test-object 0;
 #X obj 26 36 inlet;
 #X text 72 34 creator_name argtype1 argtype2 etc.;
 #N canvas 372 37 649 659 right_outlet_for_aliases 0;
@@ -419,8 +433,8 @@ tests;
 #X connect 25 0 26 1;
 #X connect 26 1 3 0;
 #X connect 27 0 12 1;
-#X restore 194 79 pd right_outlet_for_aliases;
-#N canvas 3 25 740 694 load_the_object 0;
+#X restore 194 129 pd right_outlet_for_aliases;
+#N canvas 6 60 740 633 load_the_object 0;
 #X obj 22 13 inlet;
 #X obj 86 115 list split 1;
 #N canvas 238 121 613 490 set_args 0;
@@ -498,32 +512,29 @@ arguments in order to continue the tests, f 45;
 #X restore 193 168 pd set_args;
 #X obj 126 140 route bang;
 #X obj 86 213 list;
-#X obj 86 351 s pd-\$0-load_the_object_subpatch;
+#X obj 86 381 s pd-\$0-load_the_object_subpatch;
 #X obj 86 238 t a b;
 #X msg 118 264 clear;
 #X text 216 107 Try to instantiate the object and connect up the primary
 inlet and outlet;
-#X msg 54 400 find \$1;
-#X msg 86 291 obj 5 30 \$@ \, obj 5 100 r \$0-load_canvasinfo_input
-\, obj 5 130 canvasinfo \, obj 5 160 s \$0-load_canvasinfo_output \,
-connect 1 0 2 0 \, connect 2 0 3 0;
-#X obj 54 425 s \$0-load_canvasinfo_input;
-#X obj 54 450 r \$0-load_canvasinfo_output;
-#X obj 54 475 list split 1;
-#X text 261 399 <-- find the object by box text-- it was the first
+#X msg 54 430 find \$1;
+#X obj 54 455 s \$0-load_canvasinfo_input;
+#X obj 54 480 r \$0-load_canvasinfo_output;
+#X obj 54 505 list split 1;
+#X text 261 429 <-- find the object by box text-- it was the first
 one on the canvas to get created so it will get returned first if there
 are any duplicate matches;
-#X text 149 475 <-- filter out any duplicate matches from our "helper"
+#X text 149 505 <-- filter out any duplicate matches from our "helper"
 object chain;
-#X obj 54 500 t b a;
-#X msg 54 525 class;
-#X obj 54 550 objectinfo;
-#X obj 54 575 select text;
-#X text 140 574 <-- the "text" class is an internal class that essentially
+#X obj 54 530 t b a;
+#X msg 54 555 class;
+#X obj 54 580 objectinfo;
+#X obj 54 605 select text;
+#X text 140 604 <-- the "text" class is an internal class that essentially
 represents an object box that currently holds no object. So if we query
 our object and get "text" here \, it means Pd couldn't load the object.
 ;
-#X obj 54 376 trigger anything anything;
+#X obj 54 406 trigger anything anything;
 #N canvas 365 98 450 323 fail 0;
 #X obj 41 34 inlet;
 #X obj 112 34 inlet;
@@ -537,8 +548,8 @@ our object and get "text" here \, it means Pd couldn't load the object.
 #X connect 3 0 6 0;
 #X connect 5 0 3 1;
 #X connect 6 0 4 0;
-#X restore 54 600 pd fail;
-#X obj 22 625 outlet;
+#X restore 54 630 pd fail;
+#X obj 22 665 outlet;
 #N canvas 436 87 569 401 plain_then_with_libdir_prefix 0;
 #X obj 35 26 inlet;
 #X text 128 26 try both the lone creator name and the libdir prefix:
@@ -568,7 +579,11 @@ may be other oddities in external libs with regard to libdir prefixes.
 #X restore 128 57 pd plain_then_with_libdir_prefix;
 #X obj 22 38 t a a;
 #X obj 54 89 t a a;
-#X connect 0 0 25 0;
+#X msg 86 291 obj 5 30 \$@ \, obj 5 100 r \$0-load_canvasinfo_input
+\, obj 5 130 canvasinfo \, obj 5 160 s \$0-load_canvasinfo_output \,
+obj 5 190 r \$0-switch \, obj 5 220 switch~ \, connect 1 0 2 0 \, connect
+2 0 3 0 \, connect 4 0 5 0;
+#X connect 0 0 24 0;
 #X connect 1 0 4 0;
 #X connect 1 1 3 0;
 #X connect 2 0 4 1;
@@ -576,31 +591,31 @@ may be other oddities in external libs with regard to libdir prefixes.
 #X connect 3 0 4 1;
 #X connect 3 1 2 0;
 #X connect 4 0 6 0;
-#X connect 6 0 10 0;
+#X connect 6 0 26 0;
 #X connect 6 1 7 0;
 #X connect 7 0 5 0;
-#X connect 9 0 11 0;
-#X connect 10 0 5 0;
-#X connect 12 0 13 0;
-#X connect 13 0 16 0;
+#X connect 9 0 10 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 15 0 16 0;
+#X connect 15 1 17 1;
 #X connect 16 0 17 0;
-#X connect 16 1 18 1;
 #X connect 17 0 18 0;
-#X connect 18 0 19 0;
-#X connect 19 0 22 0;
-#X connect 21 0 9 0;
-#X connect 21 1 22 1;
-#X connect 25 0 23 0;
-#X connect 25 1 24 0;
-#X connect 25 1 26 0;
-#X connect 26 0 21 0;
-#X connect 26 1 1 0;
-#X restore 26 156 pd load_the_object;
-#N canvas 268 243 450 346 \$0-load_the_object_subpatch 0;
-#X restore 171 157 pd \$0-load_the_object_subpatch;
-#X msg 26 241 clear;
-#X obj 26 266 s pd-\$0-load_the_object_subpatch;
-#N canvas 99 25 704 622 check_for_namespace_collisions 0;
+#X connect 18 0 21 0;
+#X connect 20 0 9 0;
+#X connect 20 1 21 1;
+#X connect 24 0 22 0;
+#X connect 24 1 23 0;
+#X connect 24 1 25 0;
+#X connect 25 0 20 0;
+#X connect 25 1 1 0;
+#X connect 26 0 5 0;
+#X restore 46 206 pd load_the_object;
+#N canvas 844 164 450 369 \$0-load_the_object_subpatch 0;
+#X restore 191 207 pd \$0-load_the_object_subpatch;
+#X msg 46 291 clear;
+#X obj 46 316 s pd-\$0-load_the_object_subpatch;
+#N canvas 135 60 704 645 check_for_namespace_collisions 0;
 #X obj 42 26 inlet;
 #X obj 42 51 t a a;
 #X obj 74 83 list split 1;
@@ -692,19 +707,43 @@ nameclash is in the current library we're testing then we ignore it.
 #X connect 22 0 13 0;
 #X connect 23 0 24 1;
 #X connect 24 0 22 0;
-#X restore 194 114 pd check_for_namespace_collisions;
-#X obj 49 128 print testing;
-#X obj 49 103 list split 1;
-#X obj 26 61 t a a b;
-#X obj 96 69 s \$0-object-test;
+#X restore 194 164 pd check_for_namespace_collisions;
+#X obj 86 87 s \$0-object-test;
+#X obj 66 160 s pd;
+#X obj 26 61 t b b a b;
+#X msg 66 131 dsp 1 \, dsp 0;
+#X obj 26 345 outlet;
+#N canvas 798 213 450 323 test-dsp 0;
+#X obj 46 32 inlet;
+#X obj 46 61 t b b b b;
+#X obj 46 260 outlet;
+#X msg 106 110 dsp 1;
+#X obj 106 229 send pd;
+#X obj 86 149 s \$0-switch;
+#X msg 66 183 dsp 0;
+#X text 177 149 force a dsp object to compute a block of samples. This
+way we can get code coverage for its "perform" routine at the default
+block size. Later we may want to reblock to size 4 or 1 to trigger
+non-optimized branches.;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 6 0;
+#X connect 1 2 5 0;
+#X connect 1 3 3 0;
+#X connect 3 0 4 0;
+#X connect 6 0 4 0;
+#X restore 46 248 pd test-dsp;
 #X connect 0 0 10 0;
 #X connect 2 0 7 0;
 #X connect 2 1 7 0;
-#X connect 3 0 5 0;
+#X connect 3 0 13 0;
 #X connect 5 0 6 0;
-#X connect 9 0 8 0;
-#X connect 10 0 3 0;
-#X connect 10 2 11 0;
+#X connect 10 0 12 0;
+#X connect 10 1 11 0;
+#X connect 10 2 3 0;
+#X connect 10 3 8 0;
+#X connect 11 0 9 0;
+#X connect 13 0 5 0;
 #X restore 132 714 pd test-object;
 #X obj 164 269 trigger bang anything anything;
 #X msg 371 293 methods;
@@ -744,7 +783,7 @@ nameclash is in the current library we're testing then we ignore it.
 #X connect 1 0 2 0;
 #X connect 1 1 3 0;
 #X restore 164 359 pd set_\$0-ext;
-#N canvas 37 97 1068 572 results 0;
+#N canvas 236 102 1068 595 results 0;
 #X obj 62 25 inlet;
 #X obj 235 33 r \$0-current-libdir-name;
 #X obj 146 33 r \$0-fail;
@@ -837,7 +876,7 @@ to set up Windows tests \, however.;
 #X connect 41 0 42 0;
 #X connect 41 1 36 0;
 #X connect 42 0 37 0;
-#X restore 61 741 pd results;
+#X restore 61 801 pd results;
 #X obj 132 239 t a a;
 #X obj 61 94 trigger bang bang bang anything;
 #X obj 132 179 t a a;