notes.txt 2.62 KB
Newer Older
thomas's avatar
thomas committed
1
2
flext - C++ layer for Max/MSP and pd (pure data) externals

thomas's avatar
thomas committed
3
Copyright (c) 2001-2012 Thomas Grill (gr@grrrr.org)
thomas's avatar
thomas committed
4
For information on usage and redistribution, and for a DISCLAIMER OF ALL
5
WARRANTIES, see the file, "license.txt," in this distribution.
thomas's avatar
thomas committed
6
7
8
9
10
11

----------------------------------------------------------------------------

VARIOUS NOTES:

Platform specific:
12
13
- 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
thomas's avatar
thomas committed
14
15
16
17
18
19
20
21
22
23
24
25
26

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:
thomas's avatar
thomas committed
27
28
29
- Some few external libraries have troubles with flext's global new and delete overloadings.
  In these cases one can switch back to the C library memory operators by defining the FLEXT_NOGLOBALNEW macro before
  inclusion of the flext.h header file (e.g. as a -D compiler option)
thomas's avatar
thomas committed
30

31
- Pd: floats into the leftmost inlet of DSP objects can't be used as messages
thomas's avatar
thomas committed
32
33
  even if there's no signal inlet at all

thomas's avatar
thomas committed
34
35
36
37
38
----------------------------------------------------------------------------

TODO LIST:

- optimizations for object initialization and messaging
thomas's avatar
thomas committed
39
- speed up message handling (usage of other containers?)
thomas's avatar
thomas committed
40
- SIMD for gcc
thomas's avatar
thomas committed
41
- lock-free code for old AMD 64-bit architectures
thomas's avatar
thomas committed
42
43
44

- update documentation
- add log messages for debugging version
45
- use Pd's t_float and t_int types (or comparable for 32-bit safety)
thomas's avatar
thomas committed
46
47
48
49
50
51
52
53
54
55
56
57
58
59

- 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:

60
- Pd: problems with timed buffer redrawing (takes a lot of cpu time)
thomas's avatar
thomas committed
61
62
63
- hard thread termination upon object destruction doesn't seem to work properly -> crash
- Max rounding bug ... buffer resize could be one sample less!

64
- Pd: figure out what "pointer" messages do and whether they are correctly implemented in flext
thomas's avatar
thomas committed
65
66
67

- Max buffer~ resize: flext_base::buffer::Frames(): must we use buffer or system sample rate?

68
69
- 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