[PD-cvs] externals/grill/xsample/source groove.cpp,1.23,1.24 main.cpp,1.15,1.16 main.h,1.26,1.27

Thomas Grill xovo at users.sourceforge.net
Tue Mar 23 04:27:39 CET 2004


Update of /cvsroot/pure-data/externals/grill/xsample/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8085/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.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** groove.cpp	8 Feb 2004 03:40:47 -0000	1.23
--- groove.cpp	23 Mar 2004 03:27:37 -0000	1.24
***************
*** 40,44 ****
  
  	virtual V m_pos(F pos);
! 	V m_posmod(F pos); 
  	virtual V m_all();
  	virtual V m_min(F mn);
--- 40,44 ----
  
  	virtual V m_pos(F pos);
! 	inline V m_posmod(F pos) { setposmod(pos?pos/s2u:0); } // motivated by Tim Blechmann
  	virtual V m_all();
  	virtual V m_min(F mn);
***************
*** 67,74 ****
  
  	F _xzone,xzone,xsymm;
!     I znsmin,znsmax;
  	I xshape;
  	F xshparam;
! 	F znmin,znmax;
  	BL xkeep;
  	S **znbuf;
--- 67,74 ----
  
  	F _xzone,xzone,xsymm;
!     L znsmin,znsmax;
  	I xshape;
  	F xshparam;
! 	D znmin,znmax;
  	BL xkeep;
  	S **znbuf;
***************
*** 79,83 ****
  	inline V outputmax() { ToOutFloat(outchns+2,curmax*s2u); }
  	
! 	inline V setpos(F pos)
  	{
  		if(pos < znsmin) curpos = znsmin;
--- 79,83 ----
  	inline V outputmax() { ToOutFloat(outchns+2,curmax*s2u); }
  	
! 	inline V setpos(D pos)
  	{
  		if(pos < znsmin) curpos = znsmin;
***************
*** 86,92 ****
  	}
  
! 	inline V setposmod(F pos)
  	{
! 		F p = pos-znsmin;
  		if(p >= 0) curpos = znsmin+fmod(p,znsmax-znsmin);
  		else curpos = znsmax+fmod(p,znsmax-znsmin);
--- 86,92 ----
  	}
  
! 	inline V setposmod(D pos)
  	{
! 		D p = pos-znsmin;
  		if(p >= 0) curpos = znsmin+fmod(p,znsmax-znsmin);
  		else curpos = znsmax+fmod(p,znsmax-znsmin);
***************
*** 219,223 ****
  	znbuf = new S *[outchns];
  	for(I i = 0; i < outchns; ++i) znbuf[i] = new S[0];
! 	znpos = new S[0]; // don't know vector size yet -> m_dsp
  	znidx = new S[0];
  	znmul = new S[XZONE_TABLE+1];
--- 219,223 ----
  	znbuf = new S *[outchns];
  	for(I i = 0; i < outchns; ++i) znbuf[i] = new S[0];
! 	znpos = new S[0]; // don't know vector size yet -> wait for m_dsp
  	znidx = new S[0];
  	znmul = new S[XZONE_TABLE+1];
***************
*** 249,255 ****
  V xgroove::m_units(xs_unit mode)
  {
! 	xsample::m_units(mode);
  	
! 	m_sclmode();
  	outputmin();
  	outputmax();
--- 249,255 ----
  V xgroove::m_units(xs_unit mode)
  {
! 	xsample::m_units(mode);  // calls bufchk()
  	
! 	m_sclmode();  // calls bufchk() again.... \todo optimize that!!
  	outputmin();
  	outputmax();
***************
*** 277,286 ****
  }
  
- // motivated by Tim Blechmann
- V xgroove::m_posmod(F pos)
- {
- 	setposmod(pos?pos/s2u:0);
- }
- 
  V xgroove::m_all()
  {
--- 277,280 ----
***************
*** 390,394 ****
  		znmin = znsmin+xzone*xsymm,znmax = znsmax+xzone*(xsymm-1);
  		// extra space at beginning and end
! 		F o1 = znmin-xzone,o2 = buf->Frames()-(znmax+xzone); 
  
  		if(o1 < 0 || o2 < 0) { // or (o1*o2 < 0)
--- 384,388 ----
  		znmin = znsmin+xzone*xsymm,znmax = znsmax+xzone*(xsymm-1);
  		// extra space at beginning and end
! 		D o1 = znmin-xzone,o2 = buf->Frames()-(znmax+xzone); 
  
  		if(o1 < 0 || o2 < 0) { // or (o1*o2 < 0)
***************
*** 622,627 ****
  	BL lpbang = false;
  
! 	const F xz = xzone,lmin = znmin,lmax = znmax,lsh = lmax+xz-lmin;
! 	const F xf = (F)XZONE_TABLE/xz;
  
      // adapt the playing bounds to the current cross-fade zone
--- 616,621 ----
  	BL lpbang = false;
  
! 	const F xz = xzone,xf = (F)XZONE_TABLE/xz;
! 	const D lmin = znmin,lmax = znmax,lsh = lmax+xz-lmin;
  
      // adapt the playing bounds to the current cross-fade zone
***************
*** 658,662 ****
  			if(o < lmin) {
  				// in early cross-fade zone
! 				register F inp = xz-(lmin-o);  // 0 <= inp < xz
  				znidx[i] = inp*xf;
  				znpos[i] = lmax+inp;
--- 652,656 ----
  			if(o < lmin) {
  				// in early cross-fade zone
! 				register F inp = xz-(F)(lmin-o);  // 0 <= inp < xz
  				znidx[i] = inp*xf;
  				znpos[i] = lmax+inp;

Index: main.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/xsample/source/main.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** main.cpp	8 Feb 2004 03:40:47 -0000	1.15
--- main.cpp	23 Mar 2004 03:27:37 -0000	1.16
***************
*** 102,111 ****
  BL xsample::m_refresh()
  {
- //	bufchk();
- 
  	BL ret;
  	if(buf->Set()) { s_dsp(); ret = true; } // channel count may have changed
  	else ret = false;
  	
  	m_min((F)curmin*s2u); // also checks pos
  	m_max((F)curmax*s2u); // also checks pos
--- 102,110 ----
  BL xsample::m_refresh()
  {
  	BL ret;
  	if(buf->Set()) { s_dsp(); ret = true; } // channel count may have changed
  	else ret = false;
  	
+ 	// realize positions... 2 times bufchk()!!
  	m_min((F)curmin*s2u); // also checks pos
  	m_max((F)curmax*s2u); // also checks pos
***************
*** 116,125 ****
  BL xsample::m_reset()
  {
- //	bufchk();
- 
  	BL ret;
  	if(buf->Set()) { s_dsp(); ret = true; } // channel count may have changed
  	else ret = false;
  	
  	m_units();
  	m_sclmode();	
--- 115,123 ----
  BL xsample::m_reset()
  {
  	BL ret;
  	if(buf->Set()) { s_dsp(); ret = true; } // channel count may have changed
  	else ret = false;
  	
+ 	// now... 4 times bufchk()!! \todo get rid of that
  	m_units();
  	m_sclmode();	
***************
*** 137,183 ****
  V xsample::m_units(xs_unit mode)
  {
- 	if(!bufchk()) return; // if invalid do nothing (actually, it should be delayed)
- 
  	if(mode != xsu__) unitmode = mode;
! 	switch(unitmode) {
! 		case xsu_sample: // samples
! 			s2u = 1;
! 			break;
! 		case xsu_buffer: // buffer size
! 			s2u = 1.f/buf->Frames();
! 			break;
! 		case xsu_ms: // ms
! 			s2u = 1000.f/Samplerate();
! 			break;
! 		case xsu_s: // s
! 			s2u = 1.f/Samplerate();
! 			break;
! 		default:
! 			post("%s: Unknown unit mode",thisName());
! 	}
  }
  
  V xsample::m_sclmode(xs_sclmd mode)
  {
- 	if(!bufchk()) return; // if invalid do nothing (actually, it should be delayed)
- 
  	if(mode != xss__) sclmode = mode;
! 	switch(sclmode) {
! 		case 0: // samples/units
! 			sclmin = 0; sclmul = s2u;
! 			break;
! 		case 1: // samples/units from recmin to recmax
! 			sclmin = curmin; sclmul = s2u;
! 			break;
! 		case 2: // unity between 0 and buffer size
! 			sclmin = 0; sclmul = buf->Frames()?1.f/buf->Frames():0;
! 			break;
! 		case 3:	// unity between recmin and recmax
! //			sclmin = curmin; sclmul = curlen?1.f/curlen:0;
! 			sclmin = curmin; sclmul = curmin != curmax?1.f/(curmax-curmin):0;
! 			break;
! 		default:
! 			post("%s: Unknown scale mode",thisName());
! 	}
  }
  
--- 135,180 ----
  V xsample::m_units(xs_unit mode)
  {
  	if(mode != xsu__) unitmode = mode;
! 
! 	if(bufchk())
! 		switch(unitmode) {
! 			case xsu_sample: // samples
! 				s2u = 1;
! 				break;
! 			case xsu_buffer: // buffer size
! 				s2u = 1.f/buf->Frames();
! 				break;
! 			case xsu_ms: // ms
! 				s2u = 1000.f/Samplerate();
! 				break;
! 			case xsu_s: // s
! 				s2u = 1.f/Samplerate();
! 				break;
! 			default:
! 				post("%s: Unknown unit mode",thisName());
! 		}
  }
  
  V xsample::m_sclmode(xs_sclmd mode)
  {
  	if(mode != xss__) sclmode = mode;
! 
! 	if(bufchk())
! 		switch(sclmode) {
! 			case 0: // samples/units
! 				sclmin = 0; sclmul = s2u;
! 				break;
! 			case 1: // samples/units from recmin to recmax
! 				sclmin = curmin; sclmul = s2u;
! 				break;
! 			case 2: // unity between 0 and buffer size
! 				sclmin = 0; sclmul = buf->Frames()?1.f/buf->Frames():0;
! 				break;
! 			case 3:	// unity between recmin and recmax
! 				sclmin = curmin; sclmul = curmin != curmax?1.f/(curmax-curmin):0;
! 				break;
! 			default:
! 				post("%s: Unknown scale mode",thisName());
! 		}
  }
  
***************
*** 190,194 ****
  	else if(mn > curmax) mn = (F)curmax;
  	curmin = (I)(mn+.5);
- //	curlen = curmax-curmin;
  
  	m_sclmode();
--- 187,190 ----
***************
*** 203,207 ****
  	else if(mx < curmin) mx = (F)curmin;
  	curmax = (I)(mx+.5);
- //	curlen = curmax-curmin;
  
  	m_sclmode();
--- 199,202 ----
***************
*** 212,216 ****
  	if(!bufchk()) return; // if invalid do nothing (actually, it should be delayed)
  
- //	curlen = (curmax = buf->Frames())-(curmin = 0);
  	curmin = 0; curmax = buf->Frames();
  	m_sclmode();
--- 207,210 ----

Index: main.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/xsample/source/main.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** main.h	8 Feb 2004 03:40:47 -0000	1.26
--- main.h	23 Mar 2004 03:27:37 -0000	1.27
***************
*** 13,17 ****
  
  
! #define XSAMPLE_VERSION "0.3.0pre17"
  
  
--- 13,17 ----
  
  
! #define XSAMPLE_VERSION "0.3.0pre18"
  
  





More information about the Pd-cvs mailing list