On Dec 23, 2009, at 5:19 PM, Brecht De Rooms wrote:
Hi,
I'm a student in charge of creating a SuperCollider program to work
together with Percussa AudioCubes.
However I am having some problems with frequent crashing and I
wonder if SuperCollider just has
some issues with windows XP or not.
Crashes:
these AudioCubes continuously send information to a server
application from Percussa. This application sends
information to localhost:57120.
I tried to catch the messages with the following code:
r = OSCresponderNode(nil, '/audiocubes', {arg time, resp,
msg; [resp, time, msg].postln }).add;
This works, then when I start up a second window and run:
r.remove
The program sometimes perfectly stops the OSCresponder and in
the other cases it just freezes.
I think there's a problem when sclang is processing something (such
as an OSCresponder's callback) and another interactive command
(r.remove) is submitted. This could be exacerbated by the fact that
text output in the Python front-end used in the Windows version is
extremely slow compared to other clients. If Percussa is sending a
large volume of messages, each of which is printed out, it could gum
up the works.
Note that SwingOSC (GUI front-end) uses OSCresponders to receive
updates from GUI widgets, and this can be fairly high traffic. This
is quite stable. I really think your scenario is a bad interaction
between the slow printing in Python and the volume of messages
received. For testing, you might try storing messages in a rotating
buffer and printing them out afterward.
x = Array.newClear(100); // keep the last 100 messages
i = 0;
r = OSCresponderNode(nil, '/audiocubes', { |time, resp, msg|
x.wrapPut(i, msg);
i = i + 1;
}).add;
// run for awhile
r.remove;
(i .. i+99).do { |j| x.wrapAt(j).postln }; // well, that could still
flood the post queue but anyway...
I started working with r.removeWhenDone() to be able to work
properly.
For debugging I tired the DebugNetAddr and ran this code:
Server.default = s = Server.new('local-debug',
DebugNetAddr("localhost", 57110));
DebugNetAddr will not work in windows without some modification. It
tries to open a new document window, into which the OSC messages will
be written. There's currently an outstanding bug in Windows where
opening a text window causes the application to crash.
http://sourceforge.net/tracker/?func=detail&aid=2490331&group_id=54622&atid=474248
<http://sourceforge.net/tracker/?func=detail&aid=2490331&group_id=54622&atid=474248>
Try changing its makeDocument method to this:
makeDocument {
doc = nil; // active = false
}
------------------------------------------------------------------------
Also,
when I try to run code from tutorials it happens frequently that I
just copy the code
literally from the tutorial site and it has syntax errors in it.
Examples? There are a number of tutorials sites out there, which may
or may not be up to date. (I think I remember some posting on the
list a while back where somebody had copied some supercollider v2
code and tried to run it in sc3, with no success of course.)
I would kindly ask for your advice, is SC stable enough to use it
for creating complicated programs?
It's less mature in Windows than in other platforms. Martin is right
that it's much more stable now than it used to be. Stable usage
doesn't require getting a Mac, though. It runs very cleanly in Linux
also - a fine alternative for PC hardware.
hjh
: H. James Harkins
: jamshark70@xxxxxxxxxxxxxxxxx <mailto:jamshark70@xxxxxxxxxxxxxxxxx>
: http://www.dewdrop-world.net
.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:
"Come said the Muse,
Sing me a song no poet has yet chanted,
Sing me the universal." -- Whitman