Why do Effects not play when started after dry signal?

Hello everyone, thanks for answering my previous question.
Another beginner-ish question i suppose.
I’m trying to build an effect synth and decided bus 10 will be my effect bus for this instance. Now apparently it does matter whether i start the effect before my actual dry signal or if i start my dry signal first and then the effect. It does only work if i start the effect first and the dry signal afterwards.

How can i start my effect after the dry signal and still make it work?

I hope it becomes clear what I mean, I’ve also presented this in the code below.

Thank you very much!!

(
SynthDef(\reverb_effect,{
	var sig = In.ar(\in.kr(0));
	sig = FreeVerb.ar(sig);
	Out.ar(\out.kr(0),sig);
}).add;
SynthDef(\test_sound,{
	Out.ar(\out.kr(0),SinOsc.kr(1,0,0.5,0.5)*SinOsc.ar(440!2,0,0.5))
}).add;
)
//Starting effect first, works
a = Synth(\reverb_effect,[\in,10,\out,0])
b = Synth(\test_sound,[\out,10])
a.free;b.free;
//Starting effect second, doesn't work, but I want this to work in a similar fashion
b = Synth(\test_sound,[\out,10])
a = Synth(\reverb_effect,[\in,10,\out,0])
a.free;b.free;
//why?

Quite common question – Order of execution | SuperCollider 3.11.1 Help

hjh

2 Likes

Thank you very much for this!
For anyone else, quick solution for this is to replace the third last line with:
a = Synth.after(b,\reverb_effect,[\in,10,\out,0];