From 69f7f0c33559cf90e7d6ce7c0ddbd5501af7b1de Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Tue, 4 Mar 2003 04:40:14 +0000 Subject: "" svn path=/trunk/; revision=452 --- externals/grill/xsample/source/groove.cpp | 43 +++++++++++-------------------- externals/grill/xsample/source/main.h | 2 +- 2 files changed, 16 insertions(+), 29 deletions(-) (limited to 'externals/grill/xsample/source') diff --git a/externals/grill/xsample/source/groove.cpp b/externals/grill/xsample/source/groove.cpp index 60bf617b..6355b1a0 100644 --- a/externals/grill/xsample/source/groove.cpp +++ b/externals/grill/xsample/source/groove.cpp @@ -276,7 +276,7 @@ V xgroove::m_xzone(F xz) { bufchk(); _xzone = xz < 0?0:xz; - do_xzone(); +// do_xzone(); s_dsp(); } @@ -335,6 +335,8 @@ V xgroove::m_xkeep(BL k) V xgroove::do_xzone() { + if(!s2u) return; // this can happen if DSP is off + xzone = _xzone/s2u; I smin = curmin,smax = curmax,plen = smax-smin; //curlen; if(xsymm < 0) { @@ -346,7 +348,7 @@ V xgroove::do_xzone() // desired crossfade points znmin = smin+xzone*xsymm,znmax = smax+xzone*(xsymm-1); // extra space at beginning and end - F o1 = znmin-xzone,o2 = buf->Frames()-(znmax+xzone); + F o1 = znmin-xzone,o2 = buf->Frames()-(znmax+xzone); if(o1 < 0 || o2 < 0) { // or (o1*o2 < 0) if(o1+o2 < 0) { @@ -595,7 +597,9 @@ V xgroove::s_dsp() switch(loopmode) { case xsl_once: SETSIGFUN(posfun,SIGFUN(s_pos_once)); break; case xsl_loop: - if(xzone > 0) { + if(_xzone > 0) { + // xzone might not be set yet (is done in do_xzone() ) + const I blksz = Blocksize(); if(pblksz != blksz) { @@ -610,34 +614,17 @@ V xgroove::s_dsp() pblksz = blksz; } + do_xzone(); // recalculate (s2u may have been 0 before) + SETSIGFUN(posfun,SIGFUN(s_pos_loopzn)); // linear interpolation should be just ok for fade zone, no? -/* - if(interp == xsi_4p) - switch(outchns) { - case 1: SETSTFUN(zonefun,TMPLSTF(st_play4,1,1)); break; - case 2: SETSTFUN(zonefun,TMPLSTF(st_play4,1,2)); break; - case 4: SETSTFUN(zonefun,TMPLSTF(st_play4,1,4)); break; - default: SETSTFUN(zonefun,TMPLSTF(st_play4,1,-1)); - } - else if(interp == xsi_lin) -*/ - switch(outchns) { - case 1: SETSTFUN(zonefun,TMPLSTF(st_play2,1,1)); break; - case 2: SETSTFUN(zonefun,TMPLSTF(st_play2,1,2)); break; - case 4: SETSTFUN(zonefun,TMPLSTF(st_play2,1,4)); break; - default: SETSTFUN(zonefun,TMPLSTF(st_play2,1,-1)); - } -/* - else - switch(outchns) { - case 1: SETSTFUN(zonefun,TMPLSTF(st_play1,1,1)); break; - case 2: SETSTFUN(zonefun,TMPLSTF(st_play1,1,2)); break; - case 4: SETSTFUN(zonefun,TMPLSTF(st_play1,1,4)); break; - default: SETSTFUN(zonefun,TMPLSTF(st_play1,1,-1)); - } -*/ + switch(outchns) { + case 1: SETSTFUN(zonefun,TMPLSTF(st_play2,1,1)); break; + case 2: SETSTFUN(zonefun,TMPLSTF(st_play2,1,2)); break; + case 4: SETSTFUN(zonefun,TMPLSTF(st_play2,1,4)); break; + default: SETSTFUN(zonefun,TMPLSTF(st_play2,1,-1)); + } } else SETSIGFUN(posfun,SIGFUN(s_pos_loop)); diff --git a/externals/grill/xsample/source/main.h b/externals/grill/xsample/source/main.h index 03d5d261..fbbb693b 100644 --- a/externals/grill/xsample/source/main.h +++ b/externals/grill/xsample/source/main.h @@ -11,7 +11,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. #ifndef __XSAMPLE_H #define __XSAMPLE_H -#define XSAMPLE_VERSION "0.3.0pre4" +#define XSAMPLE_VERSION "0.3.0pre5" #define FLEXT_ATTRIBUTES 1 -- cgit v1.2.1