Re: [Csnd-dev] is this also a new-style UDO issue?

joachim heintz <[email protected]> Sat, 27 Sep 2025 18:01:27 +0900
Newsgroups gmane.comp.audio.csound.devel
Message-ID <[email protected]>
yes i noticed this, too, and here again the version from my last email:

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

On 27/09/2025 16:17, vlz wrote:
> b is an i-time boolean, so you should use prints not printks. B is k-time instead.
> 
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
> 
>> On 27 Sep 2025, at 02:13, joachim heintz <[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