/error message not working for supernova

Hello everyone,

I have noticed that the /error server message does not seem to be working with supernova, while it does for scsynth.

In scsynth, as expected, I am getting 9 “node not found” errors on the first 10.do loop, and none on the second one. In supernova, I still get 10 errors even in the second loop, showing that the /error command is not actually affecting the server. Are there workarounds for this? Is it a known issue?

a = { SinOsc.ar }.play

//9 error messages (only first one went through, as expected)
10.do { a.free };

//Suppress error posting
s.makeBundle(s.latency, nil, [[ "/error", 0 ]]);

//No error messages here for scsynth.
//supernova still has errors
10.do { a.free };

No, and yes.

Tim B. was, as I recall, rather vehemently opposed to suppression of error messages, the idea being, if you’ve sent a command that can’t be completed, then this is Something Wrong and you Must Be Told.

I think it’s waiting for someone to implement the error command in supernova.

hjh

Thanks for the answer!

I do agree with the principle, but for more advanced use cases I believe it is a nice feature to have. I have some complex SynthDefs that, according to internal logic, can either free themselves or be freed from the outside. I would rather avoid to have my console flooded with messages when using these definitions with fast-pacing patterns.

Furthermore, I do think that it makes sense to provide the same interface for both servers, and letting the advanced users (this flag is not even turned on by default, for obvious reasons) whether to use them or not.

I will set up a PR to implement the feature in supernova, I believe it will be quite an easy task.

Aha, maybe a misunderstanding, in fact I don’t agree with his conclusion at all. My view is:

  • If you’re setting a parameter and the synth isn’t there, then you do want to be warned about this because the desired final state of the operation is different from the actual state: desired final state = synth is playing with the new value; actual state = synth isn’t found.

  • If you’re releasing a synth, then many users will not want a warning because the desired final state is the same as the actual state (both = synth is gone).

IMO it’s necessary to be able to turn off errors temporarily for release messages because the language cannot get 100% on-time information about node status. I have a class (Voicer) that tries very hard to avoid sending unnecessary release messages, but it still happens occasionally because n_end messages coming back from the server are always received a fraction of a ms later. This is where Tim’s point breaks down. You can’t expect the user to do releases 100% formally correctly if the state information is not perfectly correct and on time.

I’d be very happy if you could add it!

hjh

1 Like

Yes, no worries I did catch that :slight_smile: . We both agree that this is arguably a valid feature, especially since scsynth provides it already.

I have opened a PR to fix this for at least /error, 0 and /error, 1. I haven’t got around implementing it for the local bundles, as supernova treats OSC bundles a little bit differently.

Regardless, here’s the PR: supernova: use the `/error` messages to turn on / off the console printing by vitreo12 · Pull Request #5820 · supercollider/supercollider · GitHub