rewbs / sd-parseq

Parameter sequencer for Stable Diffusion

Home Page:https://sd-parseq.web.app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Precedence bug with if expressions

rewbs opened this issue · comments

if true 10 else 5/2 evaluates as (if true 10 else 5)/2, instead of if true 10 else (5/2) .

yes! I finally worked this out with an issue i've been having for a while with conditional statements:

the offending statement:
if (f-info_match_prev("scene")<4) 0.9 else 0.55 - pulse(p=3b,a=0.075,pw=2)
image

the fix:
if (f-info_match_prev("scene")<4) 0.9 else (0.55 - pulse(p=3b,a=0.075,pw=2))
image

Easy workaround (enclose your blocks in parentheses).

I think correct behaviour should be that IF you did want a dangling operation at the end (i.e. it applies regardless of truth/falsity), you'd enclose the entire conditional statement in parentheses

e.g.
(if (f-info_match_prev("scene")<4) 0.9 else 0.55) - pulse(p=3b,a=0.075,pw=2)