1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
flext - C++ layer for Max/MSP and pd (pure data) externals
Copyright (c) 2001-2004 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.
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.
Visit https://www.paypal.com/xclick/business=t.grill%40gmx.net&item_name=flext&no_note=1&tax=0¤cy_code=EUR
----------------------------------------------------------------------------
o for PD you need the pd source code (which is most likely part of the distribution)
download from: http://www-crca.ucsd.edu/~msp/software.html
o for Max/MSP you will also need the Max/MSP SDK for OS9 (http://www.cycling74.com/products/dlmaxmsp.html)
or OSX (http://www.cycling74.com/products/dlxmax.html)
and for threading the Multiprocessing library (download at http://developer.apple.com/sdk/)
o 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 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"
----------------------------------------------------------------------------
BUILDING & INSTALLING:
======================
pd - Windows:
-------------
o Microsoft Visual C++ 6 or 7:
edit "config-pd-msvc.txt"
start a dos-shell (cmd.exe) and set the compiler environment (vcvars32.bat)
run "build-pd-msvc.bat"
o Borland C++ 5.5 (free):
edit "config-pd-bcc.txt" and run "build-pd-bcc.bat"
BCC++ currently supports non-threaded static flext libraries only
o Cygwin: edit "config-pd-cygwin.txt" & run "sh build-pd-cygwin.sh"
additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-cygwin
o MinGW: edit "config-pd-mingw.txt" & run "build-pd-mingw.bat"
the MinGW binaries have to be in the PATH
additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-mingw
MinGW currently supports non-threaded static flext libraries only
With your project using flext, be sure to define "FLEXT_SYS=2".
pd - linux:
-----------
o GCC,ICC: edit "config-pd-linux.txt" & run "sh build-pd-linux.sh"
additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-linux
Several variations of the flext library will be built: release and debug version of single-threaded and multi-threaded static libraries and of a multi-threaded shared library, respectively.
These will be installed into the flext directory given in config-pd-linux.txt. For the shared libraries to be found, be sure to specify the flext folder in the /etc/ld.so.conf.
With your project using flext, be sure to define "FLEXT_SYS=2".
pd - MacOSX:
-----------
o GCC: edit "config-pd-darwin.txt" & run "sh build-pd-darwin.sh"
additional settings (e.g. target processor, compiler flags) can be made in makefile.pd-darwin
With your project using flext, be sure to define "FLEXT_SYS=2".
Max/MSP - Windows:
------------------
o Microsoft Visual C++ 6 or 7: edit "config-max-msvc.txt" & run "build-max-msvc.bat"
With your project using flext, be sure to define "FLEXT_SYS=1".
Max/MSP - MacOS 9:
------------------
o Metrowerks CodeWarrior: edit & use the "flext.cw" project file
You must 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, be sure to define "FLEXT_SYS=1"
- alternatively use the prefix file "flcwmax.h" or "flcwmax-thr.h" for threading support.
Max/MSP - MacOSX:
------------------
o Metrowerks CodeWarrior: edit & use the "flext.cw" project file
Be sure to have the latest Max/MSK SDK downloadable from http://www.cycling74.com
You should use "version 4.5 headers" rather than "version 4.3 headers".
You must 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
"MP SDK" - Pointing to the Multiprocessing SDK (for threading support)
Note: Some parts of the Max/MSP SDK may not be compliant to the C standard.
If you get errors for lines like
#endif _MOTO_
You should changes all of these to
#endif /* _MOTO_ */
o GCC: edit "config-max-darwin.txt" & run "sh build-max-darwin.sh"
additional settings (e.g. target processor, compiler flags) can be made in makefile.max-darwin
With your project using flext, be sure to define "FLEXT_SYS=1"
- alternatively use the prefix file "flcwmax-x.h" or "flcwmax-x-thr.h" for threading support.
----------------------------------------------------------------------------
Goals/features of the package:
pros:
- better readability of code compared to straight C externals
- faster development, more robust coding
- sharing of common methods and data by using base classes
- any input to any inlet (with the exception of signal streams)
- transparent use of threads for methods
- libraries of externals in MaxMSP
- more than 3 typed creation arguments possible for MaxMSP
cons:
- introduces a small overhead to speed of message handling
- overhead in object size (due to possibly unneeded code)
see flext.h, fldefs.h and flclass.h for the documented base definitions and classes
|