aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/xsample/source/inter.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2005-01-08 04:59:44 +0000
committerThomas Grill <xovo@users.sourceforge.net>2005-01-08 04:59:44 +0000
commiteba585829684fcf54a0c8614709d2c10c75032b4 (patch)
tree9f4e2ca184f37852fd5c5d8e30df10b100f25ffd /externals/grill/xsample/source/inter.cpp
parent0709ac9fabf4184675df1c3d8e205a2790adaadb (diff)
merge in branch "20041229-unify"
- some small cleanups os x fixes minor updates improved buffer handling simplify updates Mac adaptations - made xcode project preparing xsample 0.3.0 release updated for build system some optimizations - fixed loop record bug Completion of attribute functionality, revisited and updated help files svn path=/trunk/; revision=2477
Diffstat (limited to 'externals/grill/xsample/source/inter.cpp')
-rw-r--r--externals/grill/xsample/source/inter.cpp128
1 files changed, 55 insertions, 73 deletions
diff --git a/externals/grill/xsample/source/inter.cpp b/externals/grill/xsample/source/inter.cpp
index fe63fce8..418726fc 100644
--- a/externals/grill/xsample/source/inter.cpp
+++ b/externals/grill/xsample/source/inter.cpp
@@ -1,11 +1,9 @@
/*
-
xsample - extended sample objects for Max/MSP and pd (pure data)
-Copyright (c) 2001-2004 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2001-2005 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.
-
*/
#include "main.h"
@@ -21,80 +19,64 @@ WARRANTIES, see the file, "license.txt," in this distribution.
void xinter::setup(t_classid c)
{
+ FLEXT_CADDBANG(c,0,m_start);
+ FLEXT_CADDMETHOD_(c,0,"start",m_start);
+ FLEXT_CADDMETHOD_(c,0,"stop",m_stop);
+
FLEXT_CADDATTR_VAR_E(c,"interp",interp,m_interp);
}
-I xinter::m_set(I argc,const t_atom *argv)
+void xinter::DoUpdate(unsigned int flags)
{
- I r = xsample::m_set(argc,argv);
- if(r)
- // buffer parameters have changed, reset pos/min/max
- m_reset();
- return r;
-}
+ xsample::DoUpdate(flags);
-V xinter::m_start()
-{
- m_refresh();
- doplay = true;
- s_dsp();
-}
+ if(flags&xsc_play) {
+ switch(outchns) {
+ case 1: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,1)); break;
+ case 2: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,2)); break;
+ case 4: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,4)); break;
+ default: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,-1));
+ }
-V xinter::m_stop()
-{
- doplay = false;
- s_dsp();
+ if(doplay && buf.Ok()) {
+ if(interp == xsi_4p)
+ switch(buf.Channels()*1000+outchns) {
+ case 1001: SETSIGFUN(playfun,TMPLFUN(s_play4,1,1)); break;
+ case 1002: SETSIGFUN(playfun,TMPLFUN(s_play4,1,2)); break;
+ case 2001: SETSIGFUN(playfun,TMPLFUN(s_play4,2,1)); break;
+ case 2002: SETSIGFUN(playfun,TMPLFUN(s_play4,2,2)); break;
+ case 4001:
+ case 4002:
+ case 4003: SETSIGFUN(playfun,TMPLFUN(s_play4,4,-1)); break;
+ case 4004: SETSIGFUN(playfun,TMPLFUN(s_play4,4,4)); break;
+ default: SETSIGFUN(playfun,TMPLFUN(s_play4,-1,-1));
+ }
+ else if(interp == xsi_lin)
+ switch(buf.Channels()*1000+outchns) {
+ case 1001: SETSIGFUN(playfun,TMPLFUN(s_play2,1,1)); break;
+ case 1002: SETSIGFUN(playfun,TMPLFUN(s_play2,1,2)); break;
+ case 2001: SETSIGFUN(playfun,TMPLFUN(s_play2,2,1)); break;
+ case 2002: SETSIGFUN(playfun,TMPLFUN(s_play2,2,2)); break;
+ case 4001:
+ case 4002:
+ case 4003: SETSIGFUN(playfun,TMPLFUN(s_play2,4,-1)); break;
+ case 4004: SETSIGFUN(playfun,TMPLFUN(s_play2,4,4)); break;
+ default: SETSIGFUN(playfun,TMPLFUN(s_play2,-1,-1));
+ }
+ else
+ switch(buf.Channels()*1000+outchns) {
+ case 1001: SETSIGFUN(playfun,TMPLFUN(s_play1,1,1)); break;
+ case 1002: SETSIGFUN(playfun,TMPLFUN(s_play1,1,2)); break;
+ case 2001: SETSIGFUN(playfun,TMPLFUN(s_play1,2,1)); break;
+ case 2002: SETSIGFUN(playfun,TMPLFUN(s_play1,2,2)); break;
+ case 4001:
+ case 4002:
+ case 4003: SETSIGFUN(playfun,TMPLFUN(s_play1,4,-1)); break;
+ case 4004: SETSIGFUN(playfun,TMPLFUN(s_play1,4,4)); break;
+ default: SETSIGFUN(playfun,TMPLFUN(s_play1,-1,-1));
+ }
+ }
+ else
+ SETSIGFUN(playfun,TMPLFUN(s_play0,-1,-1));
+ }
}
-
-V xinter::s_dsp()
-{
- switch(outchns) {
- case 1: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,1)); break;
- case 2: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,2)); break;
- case 4: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,4)); break;
- default: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,-1));
- }
-
- if(doplay) {
- if(interp == xsi_4p)
- switch(buf->Channels()*1000+outchns) {
- case 1001: SETSIGFUN(playfun,TMPLFUN(s_play4,1,1)); break;
- case 1002: SETSIGFUN(playfun,TMPLFUN(s_play4,1,2)); break;
- case 2001: SETSIGFUN(playfun,TMPLFUN(s_play4,2,1)); break;
- case 2002: SETSIGFUN(playfun,TMPLFUN(s_play4,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(playfun,TMPLFUN(s_play4,4,-1)); break;
- case 4004: SETSIGFUN(playfun,TMPLFUN(s_play4,4,4)); break;
- default: SETSIGFUN(playfun,TMPLFUN(s_play4,-1,-1));
- }
- else if(interp == xsi_lin)
- switch(buf->Channels()*1000+outchns) {
- case 1001: SETSIGFUN(playfun,TMPLFUN(s_play2,1,1)); break;
- case 1002: SETSIGFUN(playfun,TMPLFUN(s_play2,1,2)); break;
- case 2001: SETSIGFUN(playfun,TMPLFUN(s_play2,2,1)); break;
- case 2002: SETSIGFUN(playfun,TMPLFUN(s_play2,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(playfun,TMPLFUN(s_play2,4,-1)); break;
- case 4004: SETSIGFUN(playfun,TMPLFUN(s_play2,4,4)); break;
- default: SETSIGFUN(playfun,TMPLFUN(s_play2,-1,-1));
- }
- else
- switch(buf->Channels()*1000+outchns) {
- case 1001: SETSIGFUN(playfun,TMPLFUN(s_play1,1,1)); break;
- case 1002: SETSIGFUN(playfun,TMPLFUN(s_play1,1,2)); break;
- case 2001: SETSIGFUN(playfun,TMPLFUN(s_play1,2,1)); break;
- case 2002: SETSIGFUN(playfun,TMPLFUN(s_play1,2,2)); break;
- case 4001:
- case 4002:
- case 4003: SETSIGFUN(playfun,TMPLFUN(s_play1,4,-1)); break;
- case 4004: SETSIGFUN(playfun,TMPLFUN(s_play1,4,4)); break;
- default: SETSIGFUN(playfun,TMPLFUN(s_play1,-1,-1));
- }
- }
- else
- SETSIGFUN(playfun,TMPLFUN(s_play0,-1,-1));
-}
-
-