[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sc-users] Notes and observations from a large SC project




On 28 Jul 2009, at 21:33, scott wrote:


1. Debugging!
Debugging in SC is difficult at best - lots of people have made this observation. If I had to guess, I would say roughly 50% of our time on the project was spent debugging code and fixing problems. With some basic debugging tools - an interactive debugger and simple inspection of objects running on the server, this time could have been cut down by a factor of five or ten. That's a lot of time - period. I would say, for me, this is the #1 priority for SC right now - far outweighing any additional UI functionality, new UGens, etc etc.

Can you be more specific about what you'd like server side? Some things are already in place, like trace and dumpTree.

2. Server execution order is tough to manage
Most of our problems on the server side came from execution order problems. Some particular instrument of ours might require 5 or 6 synthdefs, the creation of buffers, busses, groups, and nodes inside those groups, setting/mapping values for those synths/groups. These things must be initialized in an exact order in order for them to work correctly, and it can be maddening to figure out exactly where things are going wrong. We got very good at solving these problems by the end, but even then there was a lot of black magic involved (i.e. make this synth, wait two seconds, make this other one, wait one second, set parameters on both). There are partial ways to solve these problems (Server.sync, completion actions, sticking things in a routine), but I would venture to say that SC is missing a simple, paradigmatic, guaranteed way of handling this. I would love to hear from folks about ways they handle this, and weigh in on what could be done about making it easier.

There are simple paradigmatic ways of getting things done. But are you concerned with node order or asynchronous actions?

The first can be dealt with with targets and add actions. Groups can also be helpful. If you're really concerned wrap things in a bundle to guarantee order. e.g. s.bind({thing1; thing2; ...});

The latter can be dealt with using sync as you said. Perhaps it's that it's not clear which things are asynchronous?

5. Server crashes
There are still a few easy, guaranteed ways to crash the server. We experienced users know what they are, and avoid them. But, for my own part, I've never actually written a bug or attempted to fix any of these (probably simple) things.

Please file bug reports. These should be fixed.


7. Node.trace rocks
Wow, I can't believe I never knew about this before. If it could display it's data in a slightly more parse-able format, it would be even better.

You mean you'd like to parse the reply in code?

Best,

S.