aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 7a9e6339a2d3f0bae6cfd09cb0fe61c41a4f5452 (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
68
69
70
71

 Tcl for Pd
 ==========

this library allows you to to write externals for Pd using the
Tcl language. despite tot/toxy/widget externals, Tcl code ran
with tclpd actually runs in server (rather than gui process).

this is a PRE-ALPHA release: it means something work, but don't
expect to do serious things right now. also expect changes to
the Tcl API and around.


 Data conversion between Tcl <=> Pd
 ==================================

In pd exists 'atoms'. An atom is a float, a symbol, a list item,
and such.
Tcl does not have data types. In Tcl everything is a string,
also numbers and lists. Just when something needs to be read as
number, then evaluation comes in.
This leads to loss of information about atom types. Imagine a
symbol '456' comes into tclpd, you won't know anymore if "456"
is a symbol or a float.

Here a little convention comes in action: in tclpd an atom gets
converted to a two-item list, where first item is atom type,
and second item is its value.

Some examples of conversion:

 Pd:  456
 Tcl: {float 456}

 Pd:  symbol foo
 Tcl: {symbol foo}

 Pd:  list cat dog 123 456 weee
 Tcl: {{symbol cat} {symbol dog} {float 123} {float 456} {symbol wee}}


 Examples
 ========

I provided small examples.
after loading pd with option '-lib tcl', just type the filename
(minus the .tcl extension) to load the Tcl externals examples.

actually there is one simple example: list_change (behaves like
[change] object, but work with lists only)

examples make use of pdlib.tcl, a little API I wrote to make
things more cute.
you are free to not use it (just look in pdlib.tcl to know what
happens for real) or better: YOU ARE ENCOURAGED to write an OOP
system for writing externals with tclpd.


 Authors
 =======

 * Federico Ferri <mescalinum@gmail.com>
 * Mathieu Bouchard <matju@artengine.ca>


 License
 =======

See COPYING file provided with the package.