[PD-cvs] externals/grill/flext notes.txt,NONE,1.1 NEWS,1.2,1.3 build.txt,1.1,1.2 changes.txt,1.67,1.68 configure.ac,1.3,1.4 readme.txt,1.48,1.49

Thomas Grill xovo at users.sourceforge.net
Thu Jan 6 05:59:07 CET 2005


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 at 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 at grrrr.org],[flext])
! AM_INIT_AUTOMAKE(1.8)
  
  
--- 8,12 ----
  
  AC_INIT([flext],[0.5.0],[gr at 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





More information about the Pd-cvs mailing list