[PD] pyext vanishing boxes
Thomas Grill
gr at grrrr.org
Sun Nov 27 23:34:28 CET 2005
Am 27.11.2005 um 19:23 schrieb vincent rioux:
> By the way i am running into problems with the ._send() method of
> pyext.
> For example i would like to setup gemwin, to different configurations :
>
> [pyx gemwin config]
> |
> [r gemwin]
> |
> [gemwin]
>
> On windows, when i send:
>
> ._send('gemwin', 'create')
> i get no method for symbol
>
> ._send('gemwin', 'border', 0)
> i get the same message but it works on macosx...
>
> ._send('gemwin', 1)
> it works
>
> sorry, i know sven already helped with that but i really get confused
> with this syntax and the terms
> symbol, list, float from Pd
> list, tuple, string, numbers of Python
yes, this is not too easy, but i think it will be clear once it is
understood.
Let's look at the _outlet method first:
1) self._outlet(outletnr,arg1,arg2,arg3,.....) will always generate a
list message [list arg1 arg2 arg3 ....(
2) self._outlet(outletnr,tag,(arg1,arg2,arg3,....) will generate a tag
message [tag arg1 arg2 arg3 ....(
the variation of 2)
self._outlet(outletnr,'list',(arg1,arg2,arg3,....)) is the same as 1)
When there's only one arg, like in self._outlet(outletnr,arg), this arg
will be converted to a symbol or a float message dependent on it's type
E.g.
self._outlet(outlet,1) will give [float 1( which is the same as just
[1(
while
self._outlet(outletnr,'hey') will give [symbol hey( which is _not_ the
same as [hey( !
some examples:
._outlet(1,1,2,3) will send a message [list 1 2 3(
._outlet(1,1) will send a message [float 1(
._outlet(1,'a','b','c') will send a message [list a b c(
._outlet(1,'a') will send a message [symbol a(
._outlet(1,'message',(1,2) ) will send a message [message 1 2(
._outlet(1,'message',1) will send a message [list message 1(
._outlet(1,'message',(1,)) will send a message [message 1(
- remember, in Python one-element tuples have to be written as
(element, )
the same applies for the _send method, except there's the receiver
symbol replacing outletnr.
Therefore,
._send('gemwin','create') will generate a [symbol create( message sent
to [r gemwin] , which is not understood
Instead you will want to use ._send('gemwin','create',()) instead which
makes a [create( message
._send('gemwin','border',0) will generate [list border 0(
You'd rather use ._send('gemwin','border',(0,))
The original version works on your OSX installation because you're
obviously using an old pyext version there, which doesn't recognize the
refined syntax
and lastly,
._send('gemwin',1) will generate [float 1( which is just ok.
>
> Something else i am searching for is how do i exchange numarrays
> between pd and python.
You have two possibilites:
- via messages: if you are outputting a numarray through ._outlet or
._send the array gets converted into a list of elements
- via PD buffers: the pyext.Buffer class is a numarray that memory-maps
to a PD buffer: see buffer-*.pd examples
best greetings,
Thomas
More information about the Pd-list
mailing list