blob: 67b4d11b31aa28cee24ab941008dd47a4c610633 (
plain)
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
|
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 creation of buffers
- 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, Max/MSP does not
|