Objects .wrap , .fold , .sin

Sometimes there are no Ugen equivalent of objects like .tanh , .distort, is there a reason for that ?
These objects all ave Ugen equivalents Clip.ar versus .clip , Sineshaper.ar versus versus .sin Wrap.ar versus .wrap etc…
Are the Ugen using the exact same object in their code ( processing ) ?


{SinOsc.ar(100,mul:4.5).sin!2}.play;//////.sin object

////////////////////////////////////////////////////////
{SineShaper.ar(SinOsc.ar(100,mul:4.5),-1,1)!2}.play;/////Ugen sine shaper
//////////////////////////////////////////////
{SinOsc.ar(100,mul:4.5).tanh!2}.play/////objecto no Ugen equivalent?
/////////////////////////
{SinOsc.ar(100,mul:4.5).fold(-0.5,0.5)!2}.play;///////////.fold object
///////////////////////////////
{Fold.ar(SinOsc.ar(100,mul:4.5),-0.5,0.5)!2}.play//////fold Ugen 
///////////////////////////////////////////
{Wrap.ar(SinOsc.ar(88,mul:2),-0.5,0.5)!2}.play///////////

///////////////////////////////////////////
{SinOsc.ar(88,mul:2).wrap(-0.5,0.5)!2}.play////////////wrap 
///////////////////////////////////////////


See UnaryOpUGen and BinaryOpUGen. E.g., tanh requires only one operand so you’ll find a UnaryOpUGen for it in your synth.

Clip, Wrap and Fold are three-value operators so they can’t be folded into BinaryOpUGen.

But really you don’t have to know these internals… It’s not bad to know them, but I’d say it’s low priority.

PS Synth:trace and SynthDef:dumpUGens are indispensable for investigating synth structure – you can see what’s really there instead of guessing.

hjh