Re: [Csnd-dev] is this also a new-style UDO issue?
joachim heintz <[email protected]> Sat, 27 Sep 2025 13:25:56 +0900
| Newsgroups | gmane.comp.audio.csound.devel |
|---|---|
| Message-ID | <[email protected]> |
yes, and thanks to your reply i now realize that i used the wrong
boolean type.
it should be B, not b, because it is k-rate.
but still i don't understand why this code returns "False":
opcode one3(arrr:k[]):(B)
ans:B init true
for el in arrr do
if el != 1 then
ans = false
kgoto end
endif
od
end: xout(ans)
endop
instr 1
a:k[] = [1,1,1]
if one3(a) then
printks("True\n",0)
else
printks("False\n",0)
endif
turnoff
endin
it also returns "False" when i set in the UDO:
ans:B = true
am i doing one the usual silly mistakes?
On 27/09/2025 11:26, Dave Seidel wrote:
> I would only use init with a k-var, so using = seems correct to me.
>
> On Fri, Sep 26, 2025 at 9:13 PM joachim heintz <[email protected]
> <mailto:[email protected]>> wrote:
>
> it seems to be more related to the init opcode --- either not working
> properly for booleans, or used in a wrong way?
> this version with assignment works:
>
> opcode one3(arrr:k[]):(b)
> ans:b = true
> xout(ans)
> endop
>
> instr 1
> a:k[] = [1,1,1]
> if one3(a) then
> printks("True\n",0)
> else
> printks("False\n",0)
> endif
> turnoff
> endin
>
>
> On 27/09/2025 09:51, joachim heintz wrote:
> > opcode one3(arrr:k[]):(b)
> > ans:b init true
> > //here is of course other code
> > xout(ans)
> > endop
> >
> > instr 1
> > a:k[] = [1,1,1]
> > if one3(a) then
> > printks("True\n",0)
> > else
> > printks("False\n",0)
> > endif
> > turnoff
> > endin
> >
> > it should print "True" but it prints "False".
> > it works when i write
> > if true then
> > ...
> >
> > by the way: how can i print the boolean value?
> >
> > joachim
>