Start SuperDirt on a server other than default s

Hello,

I posted a question on Tidal forum :

But, I post it here also, since it specifically concerns the Quark SuperDirt.

The code below to start SuperDirt on the server by default s works well:

(
s.options.memSize_(2.pow(18));

s.waitForBoot {

	~dirt.free;
	~dirt = SuperDirt.new(2, s);
	~numberOfOrbits = 2;

	~dirt.loadSoundFiles();

	s.sync;
	~dirt.start(57120, 0!~numberOfOrbits);
};
)

And it generates the following correct node tree in the post window :

NODE TREE Group 0
   1 group
      2 group
         4 group
         1009 dirt_delay2
         1008 dirt_reverb2
         1007 dirt_leslie2
         1006 dirt_rms2
         1005 dirt_monitor2
         3 group
         1004 dirt_delay2
         1003 dirt_reverb2
         1002 dirt_leslie2
         1001 dirt_rms2
         1000 dirt_monitor2
   1010 volumeAmpControl2

However when I try to change the server with the following code :

(
~serverT = Server(\LocalT, NetAddr("127.0.0.1", 57115));
~serverT.options.memSize_(2.pow(18));

~serverT.waitForBoot {

	~dirt.free;
	~dirt = SuperDirt.new(2, ~serverT);
	~numberOfOrbits = 2;

	~dirt.loadSoundFiles();

	~serverT.sync;
	~dirt.start(57120, 0!~numberOfOrbits);
	~serverTWindow = ~serverT.makeWindow;
};
)

There is a problem in the node tree, where effect synths are no longer loaded :

NODE TREE Group 0
   1 group
      2 group
         4 group
         3 group

And, if I change the port from 57115 to 57110, I have several errors :

FAILURE IN SERVER /s_new Node 3 not found

Does someone know how could I launch Superdirt without errors on a specific server other than s ?

Many thanks,

Christophe

It’s a bug in SuperDirt.

Effects are created by:

			globalEffects.reverseDo { |x|
				x.play(group, outBus, dryBus, globalEffectBus, orbitIndex)
			}

… where group should be the target.

However group is only a node ID and not a Group() object specifying a server. (In Synth *new, the server is determined from target.asTarget.server – but if the given target is an integer, as it is in SuperDirt, then asTarget always goes to the default server.)

So there was an intention to support alternate servers, but accidental non-support of it by group = server.nextPermNodeID; in the Dirt class.

hjh

1 Like

Many thanks, James.
I will post an issue on Github.