[PD-cvs] externals/signal/lrshift~ lrshift~.c,1.1,1.2

Martin Peach mrpeach at users.sourceforge.net
Tue Nov 7 23:00:43 CET 2006


Update of /cvsroot/pure-data/externals/signal/lrshift~
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21659

Modified Files:
	lrshift~.c 
Log Message:
added float input to dynamically change shift amount


Index: lrshift~.c
===================================================================
RCS file: /cvsroot/pure-data/externals/signal/lrshift~/lrshift~.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** lrshift~.c	16 Sep 2004 18:01:08 -0000	1.1
--- lrshift~.c	7 Nov 2006 22:00:41 -0000	1.2
***************
*** 11,14 ****
--- 11,15 ----
  } t_lrshift_tilde;
  
+ #ifdef OBSOLETE
  static t_int *leftshift_perform(t_int *w)
  {
***************
*** 40,48 ****
      return (w+5);
  }
  
! static void lrshift_tilde_dsp(t_lrshift_tilde *x, t_signal **sp)
  {
!     int n = sp[0]->s_n;
!     int shift = x->x_n;
      if (shift > n)
      	shift = n;
--- 41,54 ----
      return (w+5);
  }
+ #endif
  
! static t_int *lrshift_perform(t_int *w)
  {
!     t_float *in = (t_float *)(w[1]);
!     t_float *out= (t_float *)(w[2]);
!     int n = (int)(w[3]);
! 	t_lrshift_tilde *x = (t_lrshift_tilde *)w[4];
! 	int shift = x->x_n;
! 
      if (shift > n)
      	shift = n;
***************
*** 50,57 ****
      	shift = -n;
      if (shift < 0)
!     	dsp_add(rightshift_perform, 4,
!     	    sp[0]->s_vec + n, sp[1]->s_vec + n, n, -shift);
!     else dsp_add(leftshift_perform, 4,
!     	    sp[0]->s_vec, sp[1]->s_vec, n, shift);
  }
  
--- 56,87 ----
      	shift = -n;
      if (shift < 0)
! 	{
! 		shift = -shift;
! 		out += n;
! 		in += n;
! 		n -= shift;
! 	    in -= shift;
! 		while (n--)
! 	    	*--out = *--in;
! 	    while (shift--)
! 	    	*--out = 0;
! 	}
! 	else
! 	{
! 	    in += shift;
! 	    n -= shift;
! 	    while (n--)
! 	    	*out++ = *in++;
! 	    while (shift--)
! 	    	*out++ = 0;
! 	}
! 	return (w+5);
! }
! 
! 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);
! 
  }
  
***************
*** 64,67 ****
--- 94,102 ----
  }
  
+ static void lrshift_tilde_float(t_lrshift_tilde *x, t_floatarg f)
+ {
+     x->x_n = f;
+ }
+ 
  void lrshift_tilde_setup(void)
  {
***************
*** 72,74 ****
--- 107,110 ----
      class_addmethod(lrshift_tilde_class, (t_method)lrshift_tilde_dsp,
      	gensym("dsp"), 0);
+ 	class_addfloat(lrshift_tilde_class, (t_method)lrshift_tilde_float);
  }





More information about the Pd-cvs mailing list