3.13.0-dev mystery

I use an RPi4 as a headless server running scscynth and driving an 8 channel DAC. The client is a Mac running the IDE. I had not used the system for some time, so I decided to go through the update, upgrade, dist-upgrade steps and then rebuild jackd and SC3 in non-gui mode.

The mystery is that when I drive this new 3.13.0-dev installation from an older Mac (10.11) running the 3.12.2 “legacy” distro, it works just fine, or to paraphrase the middle-aged Beatles fan in “Help”, “the same as it was before it was”. However, when I try to run it from a newer Mac (10.15) with the “normal” 3.12.2 distro, or from an even newer Mac ( 12.3, M1/Rosetta2) running the same distro I get a flood of error messages.

Here is how I start up the RPi4:

$ jackd -P75 -dalsa -dhw:2 -r44100 -p1024 -n3 -o8 -P &
$ sclang initServer16.scd

where initServer16.scd is:

o = Server.local.options;

o.numOutputBusChannels = 8;

o.numOutputBusChannels.postln;

s.options.bindAddress = "10.0.1.16";

s.boot;

And here is how I connect from the Mac:

Server.default = s = Server.remote("rpi", NetAddr("10.0.1.16", 57110));

And here is what appears in the Mac post:

ERROR: Message 'protocol' not understood.
RECEIVER:
   nil
ARGS:
PATH: /Users/Robert/Common/SuperCollider/jSpace.scd
CALL STACK:
	DoesNotUnderstandError:reportError
		arg this = <instance of DoesNotUnderstandError>
	Nil:handleError
		arg this = nil
		arg error = <instance of DoesNotUnderstandError>
	Thread:handleError
		arg this = <instance of Thread>
		arg error = <instance of DoesNotUnderstandError>
	Object:throw
		arg this = <instance of DoesNotUnderstandError>
	Object:doesNotUnderstand
		arg this = nil
		arg selector = 'protocol'
		arg args = [*0]
	Meta_Server:remote
		arg this = <instance of Meta_Server>
		arg name = "rpi"
		arg addr = <instance of NetAddr>
		arg options = nil
		arg clientID = nil
		var result = <instance of Server>
	< closed FunctionDef >  (no arguments or variables)
	Interpreter:interpretPrintCmdLine
		arg this = <instance of Interpreter>
		var res = nil
		var func = <instance of Function>
		var code = "Server.default = s = Server...."
		var doc = nil
		var ideClass = <instance of Meta_ScIDE>
	Process:interpretPrintCmdLine
		arg this = <instance of Main>
^^ ERROR: Message 'protocol' not understood.
RECEIVER: nil

Please note that this is my first post here, and I apologize in advance if the formatting does not turn out correctly.

Correction: the older Mac which can communicate with 3.13.0-dev is not, in fact, running the legacy 3.12.2, but rather 3.11.2

1 Like

Hello @robertkb
Server.remote unfortunately got broken somewhere in 3.12.x. It is fixed in the current develop build and the fix will be present in the 3.13 release (no ETA at this point).

As a workaround I think you can initialized the remote server as follows:

Server.default = s = Server.new("rpi", NetAddr("10.0.1.16", 57110));
Server.default.startAliveThread; // assuming the protocol is UDP; for TCP this would require s.addr.tryConnectTCP({s.startAliveThread}) or something like that
1 Like

Thank you, @MarcinP, this workaround does indeed work!