Phaseshaping Osc Algorithms

  • Select requires a UGen input for the index.
  • An index such as linExp > 0.5 is a UGen if linExp is a UGen.
  • In a SynthDef, arguments are automatically promoted to UGens (outputs of a Control). So one might have expected argument linExp → promoted to UGen → comparison op → UGen result → Select would be fine.
  • But an *ar method of a pseudo-UGen class does not promote arguments to UGens. If you pass a fixed number for linExp, it will do e.g. 0 > 0.5 and produce false and break Select.

But Maths2 could detect the Boolean comparison results and prune branches that will never be used (which would be more efficient than simply wrapping numbers in UGens).

hjh