[PD-cvs] externals/grill/xsample/source groove.cpp, 1.35, 1.36 main.cpp, 1.22, 1.23 main.h, 1.40, 1.41

Thomas Grill xovo at users.sourceforge.net
Sun Nov 20 00:15:46 CET 2005


Update of /cvsroot/pure-data/externals/grill/xsample/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25406/source

Modified Files:
	groove.cpp main.cpp main.h 
Log Message:


Index: groove.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/xsample/source/groove.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** groove.cpp	22 Oct 2005 23:55:21 -0000	1.35
--- groove.cpp	19 Nov 2005 23:15:44 -0000	1.36
***************
*** 342,361 ****
  		register double o = curpos;
  
! 		for(int i = 0; i < n; ++i) {	
! 			const t_sample spd = speed[i];  // must be first because the vector is reused for output!
  
! 			// normalize offset
! 			if(!(o < smax)) {  // faster than o >= smax
! 				o = fmod(o-smin,plen)+smin;
! 				lpbang = true;
! 			}
! 			else if(o < smin) {
! 				o = fmod(o-smin,plen)+smax; 
! 				lpbang = true;
! 			}
  
- 			pos[i] = o;
- 			o += spd;
- 		}
  		// normalize and store current playing position
  		setpos(o);
--- 342,383 ----
  		register double o = curpos;
  
!         if(wrap && smin < 0 && smax >= buf.Frames()) {
! 		    for(int i = 0; i < n; ++i) {	
! 			    const t_sample spd = speed[i];  // must be first because the vector is reused for output!
  
! 			    // normalize offset
! 			    if(!(o < smax)) {  // faster than o >= smax
! 				    o = fmod(o-smin,plen)+smin;
! 				    lpbang = true;
! 			    }
! 			    else if(o < smin) {
! 				    o = fmod(o-smin,plen)+smax; 
! 				    lpbang = true;
! 			    }
! 
!                 // TODO normalize to 0...buf.Frames()
! 			    pos[i] = o;
! 			    o += spd;
! 		    }
!         }
!         else {
! 		    for(int i = 0; i < n; ++i) {	
! 			    const t_sample spd = speed[i];  // must be first because the vector is reused for output!
! 
! 			    // normalize offset
! 			    if(!(o < smax)) {  // faster than o >= smax
! 				    o = fmod(o-smin,plen)+smin;
! 				    lpbang = true;
! 			    }
! 			    else if(o < smin) {
! 				    o = fmod(o-smin,plen)+smax; 
! 				    lpbang = true;
! 			    }
! 
! 			    pos[i] = o;
! 			    o += spd;
! 		    }
!         }
  
  		// normalize and store current playing position
  		setpos(o);
***************
*** 668,678 ****
  		if(lack > 0) znsmin -= lack,znsmax += lack;
  
! 		// check buffer limits and shift bounds if necessary
! 		if(znsmin < 0) {
! 			znsmax -= znsmin;
! 			znsmin = 0;
! 		}
! 		if(znsmax > frames) 
!             znsmax = frames;
  	}
  	else if(xfade == xsf_keeplooplen) { 
--- 690,702 ----
  		if(lack > 0) znsmin -= lack,znsmax += lack;
  
!         if(!wrap) {
! 		    // check buffer limits and shift bounds if necessary
! 		    if(znsmin < 0) {
! 			    znsmax -= znsmin;
! 			    znsmin = 0;
! 		    }
! 		    if(znsmax > frames) 
!                 znsmax = frames;
!         }
  	}
  	else if(xfade == xsf_keeplooplen) { 
***************
*** 690,703 ****
  		znsmax = curmax+hzone;
  
! 		// check buffer limits and shift bounds if necessary
! 		// both cases can't happen because of xzone having been limited above
! 		if(znsmin < 0) {
! 			znsmax -= znsmin;
! 			znsmin = 0;
! 		}
! 		else if(znsmax > frames) {
! 			znsmin -= znsmax-frames;
! 			znsmax = frames;
! 		}
  	}
  	else if(xfade == xsf_keeplooppos) { 
--- 714,729 ----
  		znsmax = curmax+hzone;
  
!         if(!wrap) {
! 		    // check buffer limits and shift bounds if necessary
! 		    // both cases can't happen because of xzone having been limited above
! 		    if(znsmin < 0) {
! 			    znsmax -= znsmin;
! 			    znsmin = 0;
! 		    }
! 		    else if(znsmax > frames) {
! 			    znsmin -= znsmax-frames;
! 			    znsmax = frames;
! 		    }
!         }
  	}
  	else if(xfade == xsf_keeplooppos) { 

Index: main.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/xsample/source/main.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** main.cpp	11 Oct 2005 10:09:47 -0000	1.22
--- main.cpp	19 Nov 2005 23:15:44 -0000	1.23
***************
*** 50,54 ****
  
  xsample::xsample():
!     update(xsc_all),
  #if FLEXT_SYS == FLEXT_SYS_MAX
  	unitmode(xsu_ms),	   // Max/MSP defaults to milliseconds
--- 50,54 ----
  
  xsample::xsample():
!     update(xsc_all),wrap(false),
  #if FLEXT_SYS == FLEXT_SYS_MAX
  	unitmode(xsu_ms),	   // Max/MSP defaults to milliseconds
***************
*** 169,178 ****
      if(flags&xsc_range && buf.Ok()) {
  		const int f = buf.Frames();
! 		
!         if(curmin < 0) curmin = 0;
! 		else if(curmin > f) curmin = f;
! 		
!         if(curmax > f) curmax = f;
! 		else if(curmax < curmin) curmax = curmin;		
      }
  
--- 169,184 ----
      if(flags&xsc_range && buf.Ok()) {
  		const int f = buf.Frames();
! 
!         if(!wrap) {
!             // normalize bounds
!             if(curmin < 0) curmin = 0;
! 		    else if(curmin > f) curmin = f;
!     		
!             if(curmax > f) curmax = f;
! 		    else if(curmax < curmin) curmax = curmin;
!         }
!         else
!             // don't normalize
! 		    if(curmax < curmin) curmax = curmin;
      }
  

Index: main.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/xsample/source/main.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -C2 -d -r1.40 -r1.41
*** main.h	22 Oct 2005 23:55:21 -0000	1.40
--- main.h	19 Nov 2005 23:15:44 -0000	1.41
***************
*** 16,20 ****
  #endif
  
! #define XSAMPLE_VERSION "0.3.1"
  
  extern "C++" {
--- 16,20 ----
  #endif
  
! #define XSAMPLE_VERSION "0.3.2pre"
  
  extern "C++" {
***************
*** 192,195 ****
--- 192,201 ----
      }
  
+     void m_wrap(bool w)
+     {
+         wrap = w;
+         Update(xsc_pos|xsc_range,true);
+     }
+ 
  	void m_min(float mn);
  	void m_max(float mx);
***************
*** 202,205 ****
--- 208,212 ----
  	float sclmul;
  	float s2u;  // sample to unit conversion factor
+     bool wrap;
  
  	inline float scale(float smp) const { return (smp-sclmin)*sclmul; }
***************
*** 267,270 ****
--- 274,280 ----
  	FLEXT_ATTRGET_F(s2u)
  
+ 	FLEXT_CALLSET_B(m_wrap)
+ 	FLEXT_ATTRGET_B(wrap)
+ 
  protected:
  	FLEXT_CALLGET_F(mg_min)





More information about the Pd-cvs mailing list