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
>