From f237ae21678a18c8862d4e8c1f180f1d56097b17 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Fri, 7 Mar 2003 04:40:37 +0000 Subject: "" svn path=/trunk/; revision=455 --- externals/grill/dyn/src/main.cpp | 4 +- externals/grill/flext/flext.cw | Bin 454327 -> 454327 bytes externals/grill/flext/source/flsupport.h | 6 +- externals/grill/flext/source/flutil.cpp | 29 +- externals/grill/flext/tutorial/timer1/timer1.cw | Bin 207765 -> 207765 bytes .../xsample/maxmsp/xsample-objectmappings.txt | 3 + externals/grill/xsample/readme.txt | 461 ++++++++++++++------- externals/grill/xsample/source/main.h | 2 +- externals/grill/xsample/xsample.cw | Bin 213671 -> 213671 bytes 9 files changed, 342 insertions(+), 163 deletions(-) create mode 100755 externals/grill/xsample/maxmsp/xsample-objectmappings.txt (limited to 'externals') diff --git a/externals/grill/dyn/src/main.cpp b/externals/grill/dyn/src/main.cpp index afec7057..79af2089 100644 --- a/externals/grill/dyn/src/main.cpp +++ b/externals/grill/dyn/src/main.cpp @@ -262,7 +262,7 @@ dyn::dyn(int argc,const t_atom *argv): pxin[i] = (proxyin *)object_new(sig?pxins_class:pxin_class); pxin[i]->init(this,sig); t_binbuf *b = binbuf_new(); - binbuf_text(b,sig?"dyn-in~":"dyn-in",7); + binbuf_text(b,(char *)(sig?"dyn-in~":"dyn-in"),7); ToCanvas(&pxin[i]->obj,b,i*100,10); // place them left-to-right } @@ -272,7 +272,7 @@ dyn::dyn(int argc,const t_atom *argv): pxout[i] = (proxyout *)object_new(sig?pxouts_class:pxout_class); pxout[i]->init(this,i,sig); t_binbuf *b = binbuf_new(); - binbuf_text(b,sig?"dyn-out~":"dyn-out",8); + binbuf_text(b,(char *)(sig?"dyn-out~":"dyn-out"),8); ToCanvas(&pxout[i]->obj,b,i*100,500); // place them left-to-right } diff --git a/externals/grill/flext/flext.cw b/externals/grill/flext/flext.cw index e33fdf5a..89710be8 100644 Binary files a/externals/grill/flext/flext.cw and b/externals/grill/flext/flext.cw differ diff --git a/externals/grill/flext/source/flsupport.h b/externals/grill/flext/source/flsupport.h index 760083a8..f7e65899 100644 --- a/externals/grill/flext/source/flsupport.h +++ b/externals/grill/flext/source/flsupport.h @@ -516,10 +516,10 @@ public: */ //! Send a message to a symbol (bound to an object) - static bool Forward(const t_symbol *s,int argc,const t_atom *argv); + static bool Forward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv); - static bool Forward(const t_symbol *s,AtomList &args) { return Forward(s,args.Count(),args.Atoms()); } - static bool Forward(const char *s,AtomList &args) { return Forward(MakeSymbol(s),args.Count(),args.Atoms()); } + static bool Forward(const t_symbol *sym,AtomAnything &args) { return Forward(sym,args.Header(),args.Count(),args.Atoms()); } + static bool Forward(const char *sym,AtomAnything &args) { return Forward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); } //! @} FLEXT_S_MSG diff --git a/externals/grill/flext/source/flutil.cpp b/externals/grill/flext/source/flutil.cpp index 09c75377..be9329cd 100644 --- a/externals/grill/flext/source/flutil.cpp +++ b/externals/grill/flext/source/flutil.cpp @@ -15,27 +15,44 @@ WARRANTIES, see the file, "license.txt," in this distribution. #include "flext.h" #include +#if FLEXT_OS == FLEXT_OS_WIN +#include +#endif + void flext::CopyMem(void *dst,const void *src,int bytes) { +#if FLEXT_OS == FLEXT_OS_WIN + MoveMemory(dst,src,bytes); +#elif FLEXT_OS == FLEXT_OS_MAC + BlockMoveData(src,dst,bytes); +#else memcpy(dst,src,bytes); +#endif } void flext::ZeroMem(void *dst,int bytes) { +#if FLEXT_OS == FLEXT_OS_WIN + ZeroMemory(dst,bytes); +#elif FLEXT_OS == FLEXT_OS_MAC + BlockZero(dst,bytes); +#else memset(dst,0,bytes); +#endif } -bool flext::Forward(const t_symbol *recv,int argc,const t_atom *argv) +bool flext::Forward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv) { - t_class **cl = (t_class **)recv->s_thing; + void *cl = recv->s_thing; if(!cl) return false; #if FLEXT_SYS == FLEXT_SYS_PD - pd_forwardmess(cl,argc,(t_atom *)argv); + pd_typedmess((t_class **)cl,(t_symbol *)s,argc,(t_atom *)argv); +#elif FLEXT_SYS == FLEXT_SYS_MAX + typedmess(recv->s_thing,(t_symbol *)s,argc,(t_atom *)argv); #else - #error Not implemented +#error Not implemented #endif - - return true; + return true; } diff --git a/externals/grill/flext/tutorial/timer1/timer1.cw b/externals/grill/flext/tutorial/timer1/timer1.cw index 08e05996..af4e978a 100755 Binary files a/externals/grill/flext/tutorial/timer1/timer1.cw and b/externals/grill/flext/tutorial/timer1/timer1.cw differ diff --git a/externals/grill/xsample/maxmsp/xsample-objectmappings.txt b/externals/grill/xsample/maxmsp/xsample-objectmappings.txt new file mode 100755 index 00000000..d11f5f92 --- /dev/null +++ b/externals/grill/xsample/maxmsp/xsample-objectmappings.txt @@ -0,0 +1,3 @@ +max objectfile xgroove~ xsample; +max objectfile xplay~ xsample; +max objectfile xrecord~ xsample; diff --git a/externals/grill/xsample/readme.txt b/externals/grill/xsample/readme.txt index 97476164..26f9b54b 100644 --- a/externals/grill/xsample/readme.txt +++ b/externals/grill/xsample/readme.txt @@ -1,151 +1,310 @@ -xsample - extended sample objects for Max/MSP and pd (pure data) - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -Donations for further development of the package are highly appreciated. - ----------------------------------------------------------------------------- - -IMPORTANT INFORMATION for all MaxMSP users: - -It is advisable to put the xsample shared library file into the "max-startup" folder. Hence it will be -loaded at Max startup. - -If you want to load the xsample library on demand, create a [xsample] object in Max/MSP. - ----------------------------------------------------------------------------- - -You will need the flext C++ layer for PD and Max/MSP externals to compile this. -see http://www.parasitaere-kapazitaeten.net/ext - - -Package files: -- readme.txt: this one -- gpl.txt,license.txt: GPL license stuff -- main.h,main.cpp,inter.cpp,inter.ci: base class definition for all the other objects -- record.cpp: xrecord~ -- play.cpp: xplay~ -- groove.cpp: xgroove~ - ----------------------------------------------------------------------------- - -The package should at least compile (and is tested) with the following compilers: - -pd - Windows: -------------- -o Microsoft Visual C++ 6: edit "xsample.dsp" project file -> due to a compiler bug the optimization using templates is not functional - -pd - linux: ------------ -o GCC: edit "config-pd-linux.txt" and run "sh ./build-pd-linux.sh" -> various versions of GCC die during compile with template optimization turned on - -pd - OSX: ------------ -o GCC: edit "config-pd-darwin.txt" and run "sh ./build-pd-darwin.sh" -> various versions of GCC die during compile with template optimization turned on - -Max/MSP - MacOS9: ----------------- -o Metrowerks CodeWarrior: edit "xsample.cw" project file functions - -o Apple MPW-PR: edit & use the "flext.mpw" makefile - -Max/MSP - MacOSX: ----------------- -o Metrowerks CodeWarrior: edit "xsample.cw" project file functions - - ----------------------------------------------------------------------------- - -Goals/features of the package: - -- portable and effective sample recording/playing objects for pd and Max/MSP -- MSP-like groove~ object for PD -- message- or signal-triggered recording object with mix-in capability -- avoid the various bugs of the original MSP2 objects -- multi-channel capability -- live update of respective buffer/array content -- switchable 4-point or linear interpolation for xplay~/xgroove~ object -- cross-fading loop zone (inside or outside to loop) for xgroove~ - ----------------------------------------------------------------------------- - -Version history: - -0.3.0: -- added resources to MaxMSP build -- xgroove~, xrecord~: introduced a loop/end bang outlet -- added MaxMSP buffer resize recognition -- xgroove~: introduced a crossfading loop zone -- adapted source for flext 0.4.1 - most methods within class scope -- introduced attributes -- restructured make procedures -- corrected names of PD makefile, set help names -- fixed scale mode bug with xgroove~ -- added validity check for buffers - -0.2.4: -- according to flext 0.2.3 changed sample type to t_sample (S) -- xrecord~: fixed mix mode bug -- fixed argument buffer problem - -0.2.3: -- using flext 0.2.2 - xsample is now a library under MaxMSP -- cleaner gcc makefile -- xgroove~, xrecord~: added "all" message to select entire buffer length -- xgroove~, xplay~: revisited dsp methods, restructured the code, fixed small interpolation bugs -- xgroove~, xplay~: added linear interpolation (message "interp 2") -- enabled 0 output channels -> xgroove~: position output only -- xgroove~: added bidirectional looping (message "loop 2") - -0.2.2: -- using flext 0.2.0 -- xrecord~ for PD: new flext brings better graphics update behavior -- xrecord~: recording position doesn't jump to start when recording length is reached -- fixed bug with refresh message (min/max reset) -- xgroove~: position (by pos message) isn't sample rounded anymore -- reset/refresh messages readjust dsp routines to current buffer format (e.g. channel count) -- corrected Max/MSP assist method for multi-channel -- fixed xplay~ help method -- changed syntax to x*~ [channels=1] [buffer] for future enhancements (MaxMSP only, warning for old syntax) -- fixed small bug concerning startup position in xgroove~ and xrecord~ -- fixed deadly bug in xplay~ dsp code (only active with template optimization) - -0.2.1: -- no leftmost float inlet for position setting - use pos method -- changed dsp handling for flext 0.1.1 conformance -- workarounds for buggy/incomplete compilers -- prevent buffer warning message at patcher load (wait for loadbang) -- fixed bug: current pos is reset when changing min or max points - -0.2.0: -- first version for flext - ---------------------------------------------------------------------------- - - -TODO list: - -general: - -- do a smooth (line~) mixin in xrecord~ help patch - -features: -- multi-buffer handling (aka multi-channel for pd) -- vasp handling -- performance comparison to respective PD/Max objects -- anti-alias filter? (possible?) - -- delay min/max changes when cur pos in cross-fade zone - -tests: -- reconsider startup sequence of set buffer,set units,set sclmode,set pos/min/max - -bugs: -- PD: problems with timed buffer redrawing (takes a lot of cpu time) - flext bug? -- Apple MPW doesn't correctly compile template optimization -- Max help files aren't correctly opened due to xsample objects residing in a library +xsample - extended sample objects for Max/MSP and pd (pure data) + + + +Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) + +For information on usage and redistribution, and for a DISCLAIMER OF ALL + +WARRANTIES, see the file, "license.txt," in this distribution. + + + +Donations for further development of the package are highly appreciated. + + + +---------------------------------------------------------------------------- + + + +IMPORTANT INFORMATION for all MaxMSP users: + + + +1) For OSX it is best to put the xsample file somewhere in your Max/MSP search path and drop the file + +xsample-objectmappings.txt into the folder /Library/Application Support/Cycling '74/init . + + + +2) Otherwise (or for OS9) it is advisable to put the xsample shared library file into the "max-startup" folder. + +Hence it will be loaded at Max startup. + + + +3) If you want to load the xsample library on demand, create a [xsample] object in Max/MSP. + + + +---------------------------------------------------------------------------- + + + +You will need the flext C++ layer for PD and Max/MSP externals to compile this. + +see http://www.parasitaere-kapazitaeten.net/ext + + + + + +Package files: + +- readme.txt: this one + +- gpl.txt,license.txt: GPL license stuff + +- main.h,main.cpp,inter.cpp,inter.ci: base class definition for all the other objects + +- record.cpp: xrecord~ + +- play.cpp: xplay~ + +- groove.cpp: xgroove~ + + + +---------------------------------------------------------------------------- + + + +The package should at least compile (and is tested) with the following compilers: + + + +pd - Windows: + +------------- + +o Microsoft Visual C++ 6: edit "xsample.dsp" project file + +> due to a compiler bug the optimization using templates is not functional + + + +pd - linux: + +----------- + +o GCC: edit "config-pd-linux.txt" and run "sh ./build-pd-linux.sh" + +> various versions of GCC die during compile with template optimization turned on + + + +pd - OSX: + +----------- + +o GCC: edit "config-pd-darwin.txt" and run "sh ./build-pd-darwin.sh" + +> various versions of GCC die during compile with template optimization turned on + + + +Max/MSP - MacOS9: + +---------------- + +o Metrowerks CodeWarrior: edit "xsample.cw" project file functions + + + +o Apple MPW-PR: edit & use the "flext.mpw" makefile + + + +Max/MSP - MacOSX: + +---------------- + +o Metrowerks CodeWarrior: edit "xsample.cw" project file functions + + + + + +---------------------------------------------------------------------------- + + + +Goals/features of the package: + + + +- portable and effective sample recording/playing objects for pd and Max/MSP + +- MSP-like groove~ object for PD + +- message- or signal-triggered recording object with mix-in capability + +- avoid the various bugs of the original MSP2 objects + +- multi-channel capability + +- live update of respective buffer/array content + +- switchable 4-point or linear interpolation for xplay~/xgroove~ object + +- cross-fading loop zone (inside or outside to loop) for xgroove~ + + + +---------------------------------------------------------------------------- + + + +Version history: + + + +0.3.0: + +- added resources to MaxMSP build + +- xgroove~, xrecord~: introduced a loop/end bang outlet + +- added MaxMSP buffer resize recognition + +- xgroove~: introduced a crossfading loop zone + +- adapted source for flext 0.4.1 - most methods within class scope + +- introduced attributes + +- restructured make procedures + +- corrected names of PD makefile, set help names + +- fixed scale mode bug with xgroove~ + +- added validity check for buffers + +- Max/MSP OSX: new file xsample-objectmappings.txt fixes load of library on finding correct helpfiles! + + + +0.2.4: + +- according to flext 0.2.3 changed sample type to t_sample (S) + +- xrecord~: fixed mix mode bug + +- fixed argument buffer problem + + + +0.2.3: + +- using flext 0.2.2 - xsample is now a library under MaxMSP + +- cleaner gcc makefile + +- xgroove~, xrecord~: added "all" message to select entire buffer length + +- xgroove~, xplay~: revisited dsp methods, restructured the code, fixed small interpolation bugs + +- xgroove~, xplay~: added linear interpolation (message "interp 2") + +- enabled 0 output channels -> xgroove~: position output only + +- xgroove~: added bidirectional looping (message "loop 2") + + + +0.2.2: + +- using flext 0.2.0 + +- xrecord~ for PD: new flext brings better graphics update behavior + +- xrecord~: recording position doesn't jump to start when recording length is reached + +- fixed bug with refresh message (min/max reset) + +- xgroove~: position (by pos message) isn't sample rounded anymore + +- reset/refresh messages readjust dsp routines to current buffer format (e.g. channel count) + +- corrected Max/MSP assist method for multi-channel + +- fixed xplay~ help method + +- changed syntax to x*~ [channels=1] [buffer] for future enhancements (MaxMSP only, warning for old syntax) + +- fixed small bug concerning startup position in xgroove~ and xrecord~ + +- fixed deadly bug in xplay~ dsp code (only active with template optimization) + + + +0.2.1: + +- no leftmost float inlet for position setting - use pos method + +- changed dsp handling for flext 0.1.1 conformance + +- workarounds for buggy/incomplete compilers + +- prevent buffer warning message at patcher load (wait for loadbang) + +- fixed bug: current pos is reset when changing min or max points + + + +0.2.0: + +- first version for flext + + + +--------------------------------------------------------------------------- + + + + + +TODO list: + + + +general: + + + +- do a smooth (line~) mixin in xrecord~ help patch + + + +features: + +- multi-buffer handling (aka multi-channel for pd) + +- vasp handling + +- performance comparison to respective PD/Max objects + +- anti-alias filter? (possible?) + + + +- delay min/max changes when cur pos in cross-fade zone + + + +tests: + +- reconsider startup sequence of set buffer,set units,set sclmode,set pos/min/max + + + +bugs: + +- PD: problems with timed buffer redrawing (takes a lot of cpu time) - flext bug? + +- Apple MPW doesn't correctly compile template optimization + +- Max help files aren't correctly opened due to xsample objects residing in a library (FIXED for OSX!!!) + diff --git a/externals/grill/xsample/source/main.h b/externals/grill/xsample/source/main.h index fbbb693b..23fdca1d 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.0pre5" +#define XSAMPLE_VERSION "0.3.0pre6" #define FLEXT_ATTRIBUTES 1 diff --git a/externals/grill/xsample/xsample.cw b/externals/grill/xsample/xsample.cw index 88c1e049..43b02e21 100755 Binary files a/externals/grill/xsample/xsample.cw and b/externals/grill/xsample/xsample.cw differ -- cgit v1.2.1