aboutsummaryrefslogtreecommitdiff
path: root/externals/grill
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2006-11-02 00:27:23 +0000
committerThomas Grill <xovo@users.sourceforge.net>2006-11-02 00:27:23 +0000
commit8342ab77f5be792054a9168ef3c0494dbee99ce5 (patch)
tree6b4b5b1d538b9316210ac7449e329ed98f3922a7 /externals/grill
parent6f18843653284cc93d89c0a1f8797c5601358575 (diff)
use branch hints
small fixes update for new flext callback naming updated docs svn path=/trunk/; revision=6211
Diffstat (limited to 'externals/grill')
-rw-r--r--externals/grill/xsample/readme.txt3
-rw-r--r--externals/grill/xsample/source/groove.cpp68
-rw-r--r--externals/grill/xsample/source/inter.cpp2
-rwxr-xr-xexternals/grill/xsample/source/inter.h32
-rw-r--r--externals/grill/xsample/source/main.cpp20
-rw-r--r--externals/grill/xsample/source/main.h2
-rw-r--r--externals/grill/xsample/source/play.cpp4
-rw-r--r--externals/grill/xsample/source/record.cpp14
-rw-r--r--externals/grill/xsample/xsample.vcproj2
9 files changed, 74 insertions, 73 deletions
diff --git a/externals/grill/xsample/readme.txt b/externals/grill/xsample/readme.txt
index a4553457..86b96d76 100644
--- a/externals/grill/xsample/readme.txt
+++ b/externals/grill/xsample/readme.txt
@@ -1,6 +1,6 @@
xsample - extended sample objects for Max/MSP and PD (pure data)
-Copyright (c)2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c)2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
@@ -101,6 +101,7 @@ Version history:
- reconsidered all state changes
- more optimizations for interpolation functions
- use the new flext build system
+- use branch hints
0.3.0:
- added resources to MaxMSP build
diff --git a/externals/grill/xsample/source/groove.cpp b/externals/grill/xsample/source/groove.cpp
index 2a7cbeec..fd899275 100644
--- a/externals/grill/xsample/source/groove.cpp
+++ b/externals/grill/xsample/source/groove.cpp
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
@@ -36,11 +36,11 @@ public:
void m_pos(float pos)
{
- setpos(s2u?pos/s2u:0);
+ setpos(LIKELY(s2u)?pos/s2u:0);
Update(xsc_pos,true);
}
- inline void m_posmod(float pos) { setposmod(pos?pos/s2u:0); } // motivated by Tim Blechmann
+ inline void m_posmod(float pos) { setposmod(LIKELY(pos)?pos/s2u:0); } // motivated by Tim Blechmann
inline void mg_pos(float &v) const { v = curpos*s2u; }
@@ -87,8 +87,8 @@ protected:
inline void setpos(double pos)
{
- if(pos < znsmin) curpos = znsmin;
- else if(pos > znsmax) curpos = znsmax;
+ if(UNLIKELY(pos < znsmin)) curpos = znsmin;
+ else if(UNLIKELY(pos > znsmax)) curpos = znsmax;
else curpos = pos;
}
@@ -208,7 +208,7 @@ xgroove::xgroove(int argc,const t_atom *argv):
#if FLEXT_SYS == FLEXT_SYS_MAX
// old-style command line?
- if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) {
+ if(UNLIKELY(argi == 1 && argc == 2 && CanbeInt(argv[argi]))) {
outchns = GetAInt(argv[argi]);
argi++;
post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName());
@@ -259,13 +259,13 @@ void xgroove::ms_xzone(float xz)
{
ChkBuffer(true);
- _xzone = (xz < 0 || !s2u)?0:xz/s2u;
+ _xzone = (UNLIKELY(xz < 0) || UNLIKELY(!s2u))?0:xz/s2u;
Update(xsc_fade,true);
}
void xgroove::ms_xshape(int sh)
{
- if(sh < 0 || sh > xss_hsine) sh = xss_lin;
+ if(UNLIKELY(sh < 0) || UNLIKELY(sh > xss_hsine)) sh = xss_lin;
xshape = (xs_shape)sh;
switch(xshape) {
@@ -300,14 +300,14 @@ void xgroove::s_pos_once(int n,t_sample *const *invecs,t_sample *const *outvecs)
const double smin = curmin,smax = curmax,plen = smax-smin;
- if(plen > 0) {
+ if(LIKELY(plen > 0)) {
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!
- if(!(o < smax)) { o = smax; lpbang = true; }
- else if(o < smin) { o = smin; lpbang = true; }
+ if(UNLIKELY(!(o < smax))) { o = smax; lpbang = true; }
+ else if(UNLIKELY(o < smin)) { o = smin; lpbang = true; }
pos[i] = o;
o += spd;
@@ -322,7 +322,7 @@ void xgroove::s_pos_once(int n,t_sample *const *invecs,t_sample *const *outvecs)
else
s_pos_off(n,invecs,outvecs);
- if(lpbang) ToOutBang(outchns+3);
+ if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
}
void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs)
@@ -338,19 +338,19 @@ void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs)
const double smin = curmin,smax = curmax,plen = smax-smin;
- if(plen > 0) {
+ if(LIKELY(plen > 0)) {
register double o = curpos;
- if(wrap && smin < 0 && smax >= buf.Frames()) {
+ if(wrap && UNLIKELY(smin < 0) && UNLIKELY(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
+ if(UNLIKELY(!(o < smax))) { // faster than o >= smax
o = fmod(o-smin,plen)+smin;
lpbang = true;
}
- else if(o < smin) {
+ else if(UNLIKELY(o < smin)) {
o = fmod(o-smin,plen)+smax;
lpbang = true;
}
@@ -365,11 +365,11 @@ void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs)
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
+ if(UNLIKELY(!(o < smax))) { // faster than o >= smax
o = fmod(o-smin,plen)+smin;
lpbang = true;
}
- else if(o < smin) {
+ else if(UNLIKELY(o < smin)) {
o = fmod(o-smin,plen)+smax;
lpbang = true;
}
@@ -393,7 +393,7 @@ void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs)
vec_dss(0);
#endif
- if(lpbang) ToOutBang(outchns+3);
+ if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
}
void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvecs)
@@ -414,7 +414,7 @@ void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvec
// hack -> set curmin/curmax to loop extremes so that sampling functions (playfun) don't get confused
curmin = smin,curmax = smax;
- if(plen > 0) {
+ if(LIKELY(plen > 0)) {
bool inzn = false;
register double o = curpos;
@@ -424,16 +424,16 @@ void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvec
for(int i = 0; i < n; ++i) {
// normalize offset
- if(o < smin) {
+ if(UNLIKELY(o < smin)) {
o = fmod(o-smin,plen)+smax;
lpbang = true;
}
- else if(!(o < smax)) {
+ else if(UNLIKELY(!(o < smax))) {
o = fmod(o-smin,plen)+smin;
lpbang = true;
}
- if(o < lmin) {
+ if(UNLIKELY(o < lmin)) {
register float inp;
if(o < lmin2) {
// in first half of early cross-fade zone
@@ -456,7 +456,7 @@ void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvec
znidx[i] = inp*xf;
inzn = true;
}
- else if(!(o < lmax)) {
+ else if(UNLIKELY(!(o < lmax))) {
register float inp;
if(!(o < lmax2)) {
// in second half of late cross-fade zone
@@ -494,7 +494,7 @@ void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvec
// rescale position vector
arrscale(n,pos,pos);
- if(inzn) {
+ if(UNLIKELY(inzn)) {
// only if we have touched the cross-fade zone
// calculate samples in loop zone (2nd voice)
@@ -520,7 +520,7 @@ void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvec
curmin = cmin,curmax = cmax;
- if(lpbang) ToOutBang(outchns+3);
+ if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
}
void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs)
@@ -531,7 +531,7 @@ void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs
const int smin = curmin,smax = curmax,plen = smax-smin;
- if(plen > 0) {
+ if(LIKELY(plen > 0)) {
register double o = curpos;
register float bd = bidir;
@@ -540,12 +540,12 @@ void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs
// normalize offset
// \todo at the moment fmod doesn't take bidirectionality into account!!
- if(!(o < smax)) {
+ if(UNLIKELY(!(o < smax))) {
o = smax-fmod(o-smax,plen); // mirror the position at smax
bd = -bd;
lpbang = true;
}
- else if(o < smin) {
+ else if(UNLIKELY(o < smin)) {
o = smin+fmod(smin-o,plen); // mirror the position at smin
bd = -bd;
lpbang = true;
@@ -565,14 +565,14 @@ void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs
else
s_pos_off(n,invecs,outvecs);
- if(lpbang) ToOutBang(outchns+3);
+ if(UNLIKELY(lpbang)) ToOutBang(outchns+3);
}
void xgroove::CbSignal()
{
int ret = ChkBuffer(true);
- if(ret) {
+ if(LIKELY(ret)) {
FLEXT_ASSERT(buf.Valid());
const lock_t l = Lock();
@@ -655,10 +655,10 @@ void xgroove::DoUpdate(unsigned int flags)
bool xgroove::do_xzone()
{
// \todo do we really need this?
- if(!s2u) return false; // this can happen if DSP is off
+ if(UNLIKELY(!s2u)) return false; // this can happen if DSP is off
const long frames = buf.Frames();
- if(!frames) return false;
+ if(UNLIKELY(!frames)) return false;
xzone = _xzone; // make a copy for changing it
@@ -756,7 +756,7 @@ bool xgroove::do_xzone()
void xgroove::m_help()
{
post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName());
- post("(C) Thomas Grill, 2001-2005");
+ post("(C) Thomas Grill, 2001-2006");
#if FLEXT_SYS == FLEXT_SYS_MAX
post("Arguments: %s [channels=1] [buffer]",thisName());
#else
diff --git a/externals/grill/xsample/source/inter.cpp b/externals/grill/xsample/source/inter.cpp
index 418726fc..1f70b79f 100644
--- a/externals/grill/xsample/source/inter.cpp
+++ b/externals/grill/xsample/source/inter.cpp
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
diff --git a/externals/grill/xsample/source/inter.h b/externals/grill/xsample/source/inter.h
index d0ab3994..5ee87b90 100755
--- a/externals/grill/xsample/source/inter.h
+++ b/externals/grill/xsample/source/inter.h
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
@@ -26,7 +26,7 @@ TMPLDEF void xinter::st_play1(const t_sample *bdt,const int smin,const int smax,
// no interpolation
// ----------------
- if(smin == smax) {
+ if(UNLIKELY(smin == smax)) {
// zero loop length -> assume that smin is a valid sample position...
int ci;
@@ -40,8 +40,8 @@ TMPLDEF void xinter::st_play1(const t_sample *bdt,const int smin,const int smax,
register long oint = CASTINT<long>(*(pos++));
// for xplay oint can be out of bounds -> check
- if(oint >= smin)
- if(oint < smax) {
+ if(LIKELY(oint >= smin))
+ if(LIKELY(oint < smax)) {
// normal
*(sig0++) = bdt[oint*BCHNS];
}
@@ -61,8 +61,8 @@ TMPLDEF void xinter::st_play1(const t_sample *bdt,const int smin,const int smax,
register const t_sample *fp;
// for xplay oint can be out of bounds -> check
- if(oint >= smin)
- if(oint < smax) {
+ if(LIKELY(oint >= smin))
+ if(LIKELY(oint < smax)) {
// normal
fp = bdt+oint*BCHNS;
}
@@ -87,7 +87,7 @@ TMPLDEF void xinter::st_play1(const t_sample *bdt,const int smin,const int smax,
TMPLDEF void xinter::st_play2(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
{
const int plen = smax-smin;
- if(plen < 2) {
+ if(UNLIKELY(plen < 2)) {
st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped);
return;
}
@@ -111,8 +111,8 @@ TMPLDEF void xinter::st_play2(const t_sample *bdt,const int smin,const int smax,
const float frac = o-oint;
t_sample fp0,fp1;
- if(oint >= smin)
- if(oint < maxo) {
+ if(LIKELY(oint >= smin))
+ if(LIKELY(oint < maxo)) {
// normal interpolation
fp0 = bdt[oint*BCHNS];
fp1 = bdt[(oint+1)*BCHNS];
@@ -148,8 +148,8 @@ TMPLDEF void xinter::st_play2(const t_sample *bdt,const int smin,const int smax,
const t_sample *fp0,*fp1;
const float frac = o-oint;
- if(oint >= smin)
- if(oint < maxo) {
+ if(LIKELY(oint >= smin))
+ if(LIKELY(oint < maxo)) {
// normal interpolation
fp0 = bdt+oint*BCHNS;
fp1 = fp0+BCHNS;
@@ -187,7 +187,7 @@ TMPLDEF void xinter::st_play2(const t_sample *bdt,const int smin,const int smax,
TMPLDEF void xinter::st_play4(const t_sample *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped)
{
const int plen = smax-smin; //curlen;
- if(plen < 4) {
+ if(UNLIKELY(plen < 4)) {
if(plen < 2) st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped);
else st_play2 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped);
return;
@@ -212,8 +212,8 @@ TMPLDEF void xinter::st_play4(const t_sample *bdt,const int smin,const int smax,
const float frac = o-oint;
register const t_sample *ptr = bdt+oint*BCHNS;
- if(oint > smin) {
- if(oint < maxo-2) {
+ if(LIKELY(oint > smin)) {
+ if(LIKELY(oint < maxo-2)) {
// normal case
fa = ptr[-BCHNS];
fb = ptr[0];
@@ -306,8 +306,8 @@ looped1:
register const t_sample *ptr = bdt+oint*BCHNS;
register const t_sample *fa,*fb,*fc,*fd;
- if(oint > smin)
- if(oint < maxo-2) {
+ if(LIKELY(oint > smin))
+ if(LIKELY(oint < maxo-2)) {
// normal case
fb = ptr;
fa = fb-BCHNS;
diff --git a/externals/grill/xsample/source/main.cpp b/externals/grill/xsample/source/main.cpp
index c62df461..7c8bd9d2 100644
--- a/externals/grill/xsample/source/main.cpp
+++ b/externals/grill/xsample/source/main.cpp
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
@@ -16,7 +16,7 @@ static void xsample_main()
flext::post("xsample objects, version " XSAMPLE_VERSION);
flext::post("");
flext::post(" xrecord~, xplay~, xgroove~ ");
- flext::post(" (C)2001-2005 Thomas Grill ");
+ flext::post(" (C)2001-2006 Thomas Grill ");
#ifdef FLEXT_DEBUG
flext::post("");
flext::post("DEBUG BUILD - " __DATE__ " " __TIME__);
@@ -74,7 +74,7 @@ int xsample::ChkBuffer(bool refresh)
{
if(!buf.Ok()) return 0;
- if(buf.Update()) {
+ if(UNLIKELY(buf.Update())) {
#ifdef FLEXT_DEBUG
post("%s - buffer update!",thisName());
#endif
@@ -100,7 +100,7 @@ void xsample::m_set(int argc,const t_atom *argv)
{
const t_symbol *sym = argc >= 1?GetASymbol(argv[0]):NULL;
int r = buf.Set(sym);
- if(sym && r < 0)
+ if(LIKELY(sym) && UNLIKELY(r < 0))
post("%s - can't find buffer %s",thisName(),GetString(sym));
Update(xsc_buffer,true);
}
@@ -109,12 +109,12 @@ void xsample::m_min(float mn)
{
int ret = ChkBuffer(true);
- if(ret && s2u) {
+ if(LIKELY(ret) && LIKELY(s2u)) {
long cmn = CASTINT<long>(mn/s2u+0.5f); // conversion to samples
- if(cmn < 0)
+ if(UNLIKELY(cmn < 0))
curmin = 0;
- else if(cmn > curmax)
+ else if(UNLIKELY(cmn > curmax))
curmin = curmax;
else
curmin = cmn;
@@ -127,12 +127,12 @@ void xsample::m_max(float mx)
{
int ret = ChkBuffer(true);
- if(ret && s2u) {
+ if(LIKELY(ret) && LIKELY(s2u)) {
long cmx = CASTINT<long>(mx/s2u+0.5f); // conversion to samples
- if(cmx > buf.Frames())
+ if(UNLIKELY(cmx > buf.Frames()))
curmax = buf.Frames();
- else if(cmx < curmin)
+ else if(UNLIKELY(cmx < curmin))
curmax = curmin;
else
curmax = cmx;
diff --git a/externals/grill/xsample/source/main.h b/externals/grill/xsample/source/main.h
index 9d9f94b8..ec2218d3 100644
--- a/externals/grill/xsample/source/main.h
+++ b/externals/grill/xsample/source/main.h
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
diff --git a/externals/grill/xsample/source/play.cpp b/externals/grill/xsample/source/play.cpp
index 69f37cc3..f3fdaab1 100644
--- a/externals/grill/xsample/source/play.cpp
+++ b/externals/grill/xsample/source/play.cpp
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
@@ -117,7 +117,7 @@ void xplay::m_help()
#ifdef FLEXT_DEBUG
post("compiled on " __DATE__ " " __TIME__);
#endif
- post("(C) Thomas Grill, 2001-2005");
+ post("(C) Thomas Grill, 2001-2006");
#if FLEXT_SYS == FLEXT_SYS_MAX
post("Arguments: %s [channels=1] [buffer]",thisName());
#else
diff --git a/externals/grill/xsample/source/record.cpp b/externals/grill/xsample/source/record.cpp
index 92738a2e..b8c8a9b0 100644
--- a/externals/grill/xsample/source/record.cpp
+++ b/externals/grill/xsample/source/record.cpp
@@ -1,7 +1,7 @@
/*
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
@@ -25,7 +25,7 @@ public:
void m_pos(float pos)
{
- curpos = pos?CASTINT<long>(pos/s2u+.5):0;
+ curpos = LIKELY(pos)?CASTINT<long>(pos/s2u+.5):0;
Update(xsc_pos);
Refresh();
}
@@ -210,11 +210,11 @@ TMPLDEF void xrecord::s_rec(int n,t_sample *const *invecs,t_sample *const *outve
if(o < curmin) o = curmin;
- if(dorec && curmax > curmin) {
+ if(dorec && LIKELY(curmax > curmin)) {
while(n) {
long ncur = curmax-o; // at max to buffer or recording end
- if(ncur <= 0) { // end of buffer
+ if(UNLIKELY(ncur <= 0)) { // end of buffer
if(doloop) {
ncur = curmax-(o = curmin);
}
@@ -227,9 +227,9 @@ TMPLDEF void xrecord::s_rec(int n,t_sample *const *invecs,t_sample *const *outve
lpbang = true;
}
- if(!dorec) break;
+ if(UNLIKELY(!dorec)) break;
- if(ncur > n) ncur = n;
+ if(UNLIKELY(ncur > n)) ncur = n;
register int i;
register t_sample *bf = buf.Data()+o*BCHNS;
@@ -452,7 +452,7 @@ void xrecord::m_help()
#ifdef FLEXT_DEBUG
post("compiled on " __DATE__ " " __TIME__);
#endif
- post("(C) Thomas Grill, 2001-2005");
+ post("(C) Thomas Grill, 2001-2006");
#if FLEXT_SYS == FLEXT_SYS_MAX
post("Arguments: %s [channels=1] [buffer]",thisName());
#else
diff --git a/externals/grill/xsample/xsample.vcproj b/externals/grill/xsample/xsample.vcproj
index 036de43c..112dfc21 100644
--- a/externals/grill/xsample/xsample.vcproj
+++ b/externals/grill/xsample/xsample.vcproj
@@ -28,7 +28,7 @@
AdditionalIncludeDirectories="c:\programme\audio\pd\src;..\flext\source"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2"
StringPooling="TRUE"
- RuntimeLibrary="0"
+ RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="2"