From the original SynthMaker forum (2004–2014), with its members’ names and dates.
fritzman ·
Hi foilks,
I want an if statement like
if (x>1) then x=1;
I think I saw something like that from Stefan in a distortion somewhere but couldn't find it again.
I tried it like this
a= a(a>1.0) & 1.0;
but that doesn't work. What wrong with this?
Thanx a lot in advance.
Best wishes, FRitz
stefan ·
if(x>1) then x=1; would translate to:
x = (x <= 1 & x); // let x = x if it's below 1, otherwise let x = 0
x = x + (x > 1 & 1) // let x = x + 1 if it's above 1, otherwise x = x + 0;
These two could then be brought together like this:
x = (x <= 1 & x) + (x > 1 & 1);
The first half of the expression will evaluate to x if x <= 1, otherwise it will evaluate to 0.
The second half of the expression will evaluate to 1 if x > 1, otherwise it will evaluate to 0.
Adding the result of these two together will result in letting x be x if it's below 1 and letting x be 1 if x is above 1.
Am I being clear here?
fritzman ·
Thanx Stefan,
yes, that's clear to me. Me some more math some day ... 🙂
And thanx for the fast answer!
All the best, FRitz
oddson ·
😮 Ohhh! Now I get it. The syntax is:
(boolean) & if_true_expression
and this resolves to zero if false and this expression can be used within a more complex expression.
From the docs page I thought the whole right-hand-side was required in the syntax
and that this was all that was allowed on the RHS.
I don't know why I jumped to such an 'odd' conclusion. Thanx Stephan for the answer and thanx Fritzman for continuing to ask questions I didn't know I needed to know.
😉
Wrote something here? To have a post removed or your name hidden, write to [email protected].