Ndef as a fx chain: i'm stuck

for that I think you could use the inEnvir technique without having to create a new role

Ndef(\test).play

~f = { ~ctrl.ar(1); Silent.ar  };

Ndef(\test).put(0, \filter -> ~f.inEnvir( (ctrl:\a)  ))
Ndef(\test).put(1, \filter -> ~f.inEnvir( (ctrl:\b)  )) 

Ndef(\test).controlNames