Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] strange string behaviour

joachim heintz <[email protected]> Sun, 14 Sep 2025 10:32:54 +0900
Newsgroups gmane.comp.audio.csound.devel
Message-ID <[email protected]>
thank you!
it is confusing to me that sprintfk and strcatk not only run at k-time 
but also at i-time.
but i see now that the problem is in
Snew = ""
which tells csound to run also at i-rate.
it works when i change to
Snew = strcpyk("")


On 14/09/2025 09:15, Victor Lazzarini wrote:
> There is no issue, the printout is what I would have expected.
> 
> Snew runs only at i-time, sprintfk/strcatk run at i-time and perf-time, printf only at perf-time.
> 
> i-time:
> Snew >>>> ""
> Sline >>>> "1\n"
> Snew >>>> "1\n"
> 
> p-time:
> Sline >>>> "1\n1\n"
> Snew >>>> "1\n1\n1\n"
> Sline =
> 1
> 1
> Snew =
> 1
> 1
> 1
> turnoff
> 
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
> 
>> On 14 Sep 2025, at 01:01, joachim heintz <[email protected]> wrote:
>>
>> yes but there is only one cycle because of the turnoff.
>> so why is it repeating the string?
>>
>> this code gets the same result although it clearly should only run one cycle:
>>   Snew = ""
>>   if timeinstk() == 1 then
>>     Sline = sprintfk("%s%d\n",Snew,1)
>>     Snew = strcatk(Snew,Sline)
>>     printf("Sline = \n%s\n",1,Sline)
>>     printf("Snew = \n%s\n",1,Snew)
>>   endif
>>
>> i tried several versions and it has something to do with the line
>>   Snew = ""
>>
>> i will try to get closer and then file an issue.
>>
>>> On 13/09/2025 23:35, Victor Lazzarini wrote:
>>> is printf running at perf time? the string opcodes are "k"
>>> Prof. Victor Lazzarini
>>> Maynooth University
>>> Ireland
>>>>> On 13 Sep 2025, at 15:11, joachim heintz <[email protected]> wrote:
>>>>
>>>> due to strange problems with an old csd i came to this:
>>>>
>>>> instr 1
>>>>   Snew = ""
>>>>   Sline = sprintfk("%s%d\n",Snew,1)
>>>>   Snew = strcatk(Snew,Sline)
>>>>   printf("Sline = \n%s\n",1,Sline)
>>>>   printf("Snew = \n%s\n",1,Snew)
>>>>   turnoff
>>>> endin
>>>> schedule(1,0,1)
>>>>
>>>> i expect Sline to be 1 and Snew also.  but as printout shows:
>>>> Sline =
>>>> 1
>>>> 1
>>>> Snew =
>>>> 1
>>>> 1
>>>> 1
>>>>
>>>> am i doing something silly, or what is happening here?