Hi list,
I have encountered a strange behaviour with multiple outlets in pyext
in combination with 'print' commands from within the Python code.
First, however, I'd like to thank Thomas Grill (and whoever else might
be involved) for this wonderful extension to pd - it's really a
flashback to those days when Pyrite became available for MAX. And much
more!
now to illustrate the problem here's the pd as well as the py code:
sequence.pd:
#N canvas 0 0 454 304 12;
#X obj 168 131 print >>>;
#X obj 125 155 print >>;
#X obj 83 103 pyext sequence test;
#X msg 125 74 bang;
#X connect 2 1 1 0;
#X connect 2 2 0 0;
#X connect 3 0 2 1;
sequence.py:
try:
import pyext
except:
print "ERROR"
class test(pyext._class):
_inlets=3
_outlets=3
def bang_1(self):
print "pyext entered ----------------------------"
print "something else"
self._outlet(2,'output2')
self._outlet(3,'outlet3')
The problem is that sometimes when [bang] is clicked the outlet 3
doesn't fire. One of the following clicks however will actually
"retrieve" that lost message, i.e. outlet 3 fires twice.
Sometimes one has to click a 100 times on bang before it happens,
sometimes one has to click very fast, sometimes the "clicking rhythm"
has to be changed, sometimes though it happens right on the first click
after the patch is loaded.
Removing the second print command results in far less dropouts, but
they still happen. More prints make it worse. I am not sure wether it
happens with less outlets.
Of course, I have gotten rid of all print commands for the moment, but
I'd be still curious to know wether this is a known problem and if
there might be a fix.
Or, maybe, you can't reproduce it, like with my strange
crashing-on-floats-bug I reported a while ago.... (which still persists
btw)
Thanks,
Sukandar