Update of /cvsroot/pure-data/externals/grill/flext In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2605
Modified Files: NEWS build.txt changes.txt configure.ac readme.txt Added Files: notes.txt Log Message: build system for flext-based externals reconsidered flext::buffer:Update improved buffer handling added object construction and destruction flags updated autoconf system updated documentation updated build system
--- NEW FILE: notes.txt --- flext - C++ layer for Max/MSP and pd (pure data) externals
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.
----------------------------------------------------------------------------
VARIOUS NOTES:
Platform specific: - PD does not allow signal and message to go into the same inlet (except leftmost inlet) - PD: with DSP objects all float messages to the leftmost inlet are converted to signal
Restrictions in compatibility mode: - Max allows only 9 float/int inlets
Porting to new compilers/platforms: - enums must be int-sized!!! - compiler must support bool type - an STL implementation must exist - C++ exceptions and RTTI must be enabled
----------------------------------------------------------------------------
KNOWN BUGS: - can't use MFC libraries because of global new and delete overloadings - MaxMSP Mach-O DSP externals cannot be the first externals loaded (e.g. in Max Runtime) there must be a CFM signal external loaded beforehand!!! (Max will crash otherwise)
----------------------------------------------------------------------------
TODO LIST:
- optimizations for object initialization and messaging - SIMD for gcc
- update documentation - add log messages for debugging version - use PD's t_float and t_int types (or comparable for 32-bit safety)
- add double handlers - add signal in/out connection query function
- support for Max qelem style
- flext::post and flext::error should print via a worker thread (and should be unlimited in characters)
- manage running threads individually (stop, isrunning?, priority etc.)
----------------------------------------------------------------------------
TESTS TO DO:
- PD: problems with timed buffer redrawing (takes a lot of cpu time) - hard thread termination upon object destruction doesn't seem to work properly -> crash - Max rounding bug ... buffer resize could be one sample less! - flext_dsp: Max/MSP doesn't correctly report in/out channel counts
- PD: figure out what "pointer" messages do and whether they are correctly implemented in flext
- Max buffer~ resize: flext_base::buffer::Frames(): must we use buffer or system sample rate?
- check whether m_dsp gets called upon deletion of a used buffer (PD and MaxMSP may behave differently). -> PD does call m_dsp
Index: configure.ac =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/configure.ac,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** configure.ac 5 Jan 2005 05:04:07 -0000 1.3 --- configure.ac 6 Jan 2005 04:59:04 -0000 1.4 *************** *** 8,12 ****
AC_INIT([flext],[0.5.0],[gr@grrrr.org],[flext]) ! AM_INIT_AUTOMAKE(1.8)
--- 8,12 ----
AC_INIT([flext],[0.5.0],[gr@grrrr.org],[flext]) ! AM_INIT_AUTOMAKE(1.6)
*************** *** 71,78 **** AC_DEFINE(FLEXT_USE_SIMD);; G5 | G4) ! OPT_FLAGS="-mtune=$enableval -march=$enableval -maltivec -faltivec -malign-natural"; AC_DEFINE(FLEXT_USE_SIMD);; G3) ! OPT_FLAGS="-mtune=$enableval -march=$enableval -malign-natural";; *) ;; --- 71,78 ---- AC_DEFINE(FLEXT_USE_SIMD);; G5 | G4) ! OPT_FLAGS="-mtune=$enableval --maltivec -faltivec -malign-natural"; AC_DEFINE(FLEXT_USE_SIMD);; G3) ! OPT_FLAGS="-mtune=$enableval --malign-natural";; *) ;; *************** *** 102,106 ****
if test `uname -s` == Linux; then ! DYNAMIC_LDFLAGS="-Wl,-Bdynamic" EXTENSION=pd_linux SOEXT=so --- 102,106 ----
if test `uname -s` == Linux; then ! DYNAMIC_LDFLAGS="-Wl,-Bdynamic -shared" EXTENSION=pd_linux SOEXT=so *************** *** 108,120 ****
if test `uname -s` == Darwin; then ! DYNAMIC_LDFLAGS = "-version-info $API_VERSION -release $AC_PACKAGE_VERSION -dylib -dynamic -flat_namespace -undefined suppress"
! if test $system = max; then ! echo "what's the name in max???" #EXEEXT = ??? else EXTENSION=pd_darwin - SOEXT=dylib - FRAMEWORKS=??? fi fi
--- 108,122 ----
if test `uname -s` == Darwin; then ! # DYNAMIC_LDFLAGS="-version-info $API_VERSION -release $AC_PACKAGE_VERSION -dynamiclib -dynamic -flat_namespace -undefined suppress"
! DYNAMIC_LDFLAGS="-dynamiclib -dynamic -flat_namespace -undefined suppress" ! if test $system == max; then ! EXTENSION=mxo else EXTENSION=pd_darwin fi + + SOEXT=dylib + FRAMEWORKS="ApplicationServices vecLib" fi
*************** *** 156,157 **** --- 158,160 ---- tutorial/maxmsp/Makefile source/Makefile]) +
Index: changes.txt =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/changes.txt,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** changes.txt 5 Jan 2005 05:04:07 -0000 1.67 --- changes.txt 6 Jan 2005 04:59:04 -0000 1.68 *************** *** 5,13 **** WARRANTIES, see the file, "license.txt," in this distribution.
- This package seeks to encourage the development of open source software - for the pd and Max/MSP platforms. - - Donations for further development of the package are highly appreciated. - ----------------------------------------------------------------------------
--- 5,8 ---- *************** *** 27,30 **** --- 22,27 ---- - flags for object construction and destruction phase (Initing() and Exiting()) - reconsidered flext::buffer::Update + - enhanced buffer handling + - support for buffer locking (flext::buffer::Lock() and Unlock()) - it's a must for Max/MSP at least
0.4.7: *************** *** 300,364 ****
- ---------------------------------------------------------------------------- - - Notes: - - no support for default object arguments (A_DEFFLOAT, A_DEFSYMBOL) -> use variable argument lists instead - - Platform specific: - - PD does not allow signal and message to go into the same inlet (except leftmost inlet) - - Restrictions in compatibility mode: - - Max allows only 9 float/int inlets - - Porting to new compilers/platforms: - - enums must be int-sized!!! - - compiler must support bool type - - an STL implementation must exist - - no need of C++ exceptions or RTTI (RTTI only for GUI objects) - BUT: some libraries could use RTTI and then need run-time type information from the library! (this is known for gcc compiles) - - ---------------------------------------------------------------------------- - - TODO list: - - - optimizations for object initialization and messaging - - SIMD for gcc - - bugs: - - can't use MFC libraries because of global new and delete overloadings - - TEST: - - PD: problems with timed buffer redrawing (takes a lot of cpu time) - - hard thread termination upon object destruction doesn't seem to work properly -> crash - - Max rounding bug ... buffer resize could be one sample less! - - flext_dsp: Max/MSP doesn't correctly report in/out channel counts - - - general: - - documentation - - add log messages for debugging version - - use PD's t_float and t_int types (or comparable for 32-bit safety) - - - add double handlers - - add signal in/out connection query function - - - support for Max qelem style - - - PD: with DSP objects all float messages to left input are currently converted to signal - there should be a way to avoid this - - - flext::post and flext::error should print via a worker thread (and should be unlimited in characters) - - tests: - - PD: figure out what "pointer" messages do and where they occur - - buffer resize: flext_base::buffer::Frames(): should we use buffer or system sample rate? - - - check whether m_dsp gets called upon deletion of a used buffer (PD and MaxMSP may behave differently). - - - features: - - manage running threads individually (stop, isrunning?, priority etc.) - -
--- 297,300 ----
Index: NEWS =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/NEWS,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NEWS 5 Jan 2005 05:04:07 -0000 1.2 --- NEWS 6 Jan 2005 04:59:04 -0000 1.3 *************** *** 1 **** ! see changes.txt --- 1 ---- ! see notes.txt and changes.txt
Index: build.txt =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/build.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** build.txt 5 Jan 2005 05:04:07 -0000 1.1 --- build.txt 6 Jan 2005 04:59:04 -0000 1.2 *************** *** 142,171 **** - Windows - Microsoft Visual Studio projects (.vcproj files)
! Please have a look at the projects delivered with flext and flext-based externals. !
- MacOSX - Apple Xcode projects (.xcode bundles)
! Please have a look at the projects delivered with flext and flext-based externals.
- MacOSX - Metrowerks Codewarrior (.mcp files)
! You should have the following "Source Trees" (CW preferences, not project specific!) defined: ! "OS X Volume" - Pointing to your OSX boot drive ! "flext" - Pointing to the flext main directory ! "Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support ! ! With your project using flext use the prefix file "flcwmax-x.h" or, ! alternatively "flcwmax-x-thr.h" for threading support.
- MacOS9 - Metrowerks Codewarrior (.mcp files)
! You should have the following "Source Trees" (CW preferences, not project specific!) defined: ! "flext" - Pointing to the flext main directory ! "Cycling74" - Pointing to the Cycling 74 SDK ! "MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
! With your project using flext use the prefix file "flcwmax.h" or, ! alternatively "flcwmax-thr.h" for threading support. --- 142,174 ---- - Windows - Microsoft Visual Studio projects (.vcproj files)
! Please have a look at the projects delivered with flext and flext-based externals.
- MacOSX - Apple Xcode projects (.xcode bundles)
! Please have a look at the projects delivered with flext and flext-based externals.
+ Xcode projects often use some Source Trees (definable in the Xcode Preferences). + - Flext - the flext main folder + - PD - the PD installation + - Max SDK - the Max SDK (path ending with "c74support") + - Max Common - Max common files (normally /Library/Application\ Support/Cycling\ '74 )
- MacOSX - Metrowerks Codewarrior (.mcp files)
! You should have the following "Source Trees" (CW preferences, not project specific!) defined: ! "OS X Volume" - Pointing to your OSX boot drive ! "flext" - Pointing to the flext main directory ! "Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support
+ With your project using flext use the prefix file "flcwmax-x.h" or, + alternatively "flcwmax-x-thr.h" for threading support.
- MacOS9 - Metrowerks Codewarrior (.mcp files)
! You should have the following "Source Trees" (CW preferences, not project specific!) defined: ! "flext" - Pointing to the flext main directory ! "Cycling74" - Pointing to the Cycling 74 SDK ! "MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
! With your project using flext use the prefix file "flcwmax.h" or, ! alternatively "flcwmax-thr.h" for threading support.
Index: readme.txt =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/readme.txt,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** readme.txt 5 Jan 2005 05:04:07 -0000 1.48 --- readme.txt 6 Jan 2005 04:59:04 -0000 1.49 *************** *** 48,75 **** Prerequisites:
! o --- PD --- ! You need the pd source code which is most likely part of the distribution. ! Otherwise download from: http://www-crca.ucsd.edu/~msp/software.html
! o --- Max/MSP --- ! You will need the latest Max/MSP SDK ! for Windows (http://synthesisters.com/pluggo3/downloadMaxWinSDK.php) ! for OSX (http://www.synthesisters.com/sdk/max.php) ! or for OS9 (ask Cycling'74 where to find that)
! For OS9 threading support you'll also need the Multiprocessing library ! (download at http://developer.apple.com/sdk/)
! o --- SndObj --- ! If you choose to compile with SndObj support you will need the respective library ! download from: http://www.may.ie/academic/music/musictec/SndObj/main.html
! o --- STK --- ! If you choose to compile with STK support you will need the respective package ! and build a library. ! download from: http://ccrma-www.stanford.edu/software/stk/ ! For linking it may preferable to use a library of all the STK objects. ! Under linux you can create one from the STK directory with something like ! "g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o"
---------------------------------------------------------------------------- --- 48,75 ---- Prerequisites:
! --- PD --- ! You need the pd source code which is most likely part of the distribution. ! Otherwise download from: http://www-crca.ucsd.edu/~msp/software.html
! --- Max/MSP --- ! You will need the latest Max/MSP SDK ! for Windows (http://synthesisters.com/pluggo3/downloadMaxWinSDK.php) ! for OSX (http://www.synthesisters.com/sdk/max.php) ! or for OS9 (ask Cycling'74 where to find that)
! For OS9 threading support you'll also need the Multiprocessing library ! (download at http://developer.apple.com/sdk/)
! --- SndObj --- ! If you choose to compile with SndObj support you will need the respective library ! download from: http://www.may.ie/academic/music/musictec/SndObj/main.html
! --- STK --- ! If you choose to compile with STK support you will need the respective package ! and build a library. ! download from: http://ccrma-www.stanford.edu/software/stk/ ! For linking it may preferable to use a library of all the STK objects. ! Under linux you can create one from the STK directory with something like ! "g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o"
---------------------------------------------------------------------------- *************** *** 77,85 **** Building and installing of flext and flext-based externals:
! Read the build.txt document
----------------------------------------------------------------------------
History of changes:
! Read the changes.txt document --- 77,91 ---- Building and installing of flext and flext-based externals:
! See the build.txt document ! ! ----------------------------------------------------------------------------
+ Various notes / limitations / bug list: + + Read the notes.txt document + ----------------------------------------------------------------------------
History of changes:
! Read the changes.txt document