Csound Csound-dev Csound-tekno Search About

[Csnd] rnd(1) problem

Date2010-08-30 12:13
FromLouis Cohen
Subject[Csnd] rnd(1) problem
This is very unusual -- to come up with two problems in a row, but I  
think the rnd() function is not working. Try this:





instr 1	;test of rnd()
krand	=	rnd(1)
krand2	random 0,1
printk 2,krand
printk 2,krand2,5
endin


i 1 0 8888



It seems that rnd() is returning at most one or two values repeatedly.  
Fortunately, "random" seems to behave correctly.

best
Lou Cohen


Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 13:43
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: rnd(1) problem
Actually it is not what you think at all.  rnd(1) is being treated as an
irate function and so is only evaluated once.

#i0     rnd.i   1
krand   =.k     #i0


kone init 1
krand = rnd(kone)

and you get teh krat eversion

==John ff

> This is very unusual -- to come up with two problems in a row, but I
> think the rnd() function is not working. Try this:
>
> 
> 
> 
> 
> instr 1	;test of rnd()
> krand	=	rnd(1)
> krand2	random 0,1
> printk 2,krand
> printk 2,krand2,5
> endin
> 
> 
> i 1 0 8888
> 
> 
>
> It seems that rnd() is returning at most one or two values repeatedly.
> Fortunately, "random" seems to behave correctly.
>
> best
> Lou Cohen
>
>
> Send bugs reports to the Sourceforge bug tracker
>             https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
>
>
>
>




Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 14:08
FromLouis Cohen
Subject[Csnd] Re: rnd(1) problem
John,

Thanks for your answer.

Apparently there is something about i-rate processing in general that  
I don't get. I have been confused by this in the past, I think.

First, I regret that I do not know how to read:

> #i0     rnd.i   1
> krand   =.k     #i0

Perhaps you can point me to some explanation of this notation. And to  
some general description of i-rate processing.

Second, is it that the "1" inside of rnd(1) is considered to be an  
irate "variable"?

If so, how does the following get processed?

ktemp = 1

Is this executed only at i-time, NOT every k-cycle?

Third, what is the difference between

ktemp = 1

and

ktemp init 1

?


thanks for your patience.

-Lou


On Aug 30, 2010, at 8:43 AM, jpff@cs.bath.ac.uk wrote:

> Actually it is not what you think at all.  rnd(1) is being treated  
> as an
> irate function and so is only evaluated once.
>
> #i0     rnd.i   1
> krand   =.k     #i0
>
>
> kone init 1
> krand = rnd(kone)
>
> and you get teh krat eversion
>
> ==John ff
>
>> This is very unusual -- to come up with two problems in a row, but I
>> think the rnd() function is not working. Try this:
>>
>> 
>> 
>> 
>> 
>> instr 1	;test of rnd()
>> krand	=	rnd(1)
>> krand2	random 0,1
>> printk 2,krand
>> printk 2,krand2,5
>> endin
>> 
>> 
>> i 1 0 8888
>> 
>> 
>>
>> It seems that rnd() is returning at most one or two values  
>> repeatedly.
>> Fortunately, "random" seems to behave correctly.
>>
>> best
>> Lou Cohen
>>
>>
>> Send bugs reports to the Sourceforge bug tracker
>>            https://sourceforge.net/tracker/? 
>> group_id=81968&atid=564599
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
>> "unsubscribe
>> csound"
>>
>>
>>
>>
>
>
>
>
> Send bugs reports to the Sourceforge bug tracker
>            https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
> "unsubscribe csound"
>



Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 14:21
FromVictor Lazzarini
Subject[Csnd] Re: Re: rnd(1) problem
On 30 Aug 2010, at 14:08, Louis Cohen wrote:

> John,
>
> Thanks for your answer.
>
> Apparently there is something about i-rate processing in general  
> that I don't get. I have been confused by this in the past, I think.
>
> First, I regret that I do not know how to read:
>
>> #i0     rnd.i   1
>> krand   =.k     #i0

It is just how your code is parsed. First the opcode rnd.i is called,  
its answer is put into #i0 and that is assigned to krand.

> Perhaps you can point me to some explanation of this notation. And  
> to some general description of i-rate processing.

i-rate happens only once at the initialisation pass, before performance.

>
> Second, is it that the "1" inside of rnd(1) is considered to be an  
> irate "variable"?

It is not a variable, but a constant. Since these do not change, the  
rnd function that is selected is the rnd.i and not rnd.k.


> If so, how does the following get processed?
>
> ktemp = 1
>
> Is this executed only at i-time, NOT every k-cycle?

Not at i-time but at perf-time every k-cycle.
To have it executed at i-time use

ktemp init 1


> Third, what is the difference between
>
> ktemp = 1
>
> and
>
> ktemp init 1
>
> ?
>
>
> thanks for your patience.
>
> -Lou
>
>
> On Aug 30, 2010, at 8:43 AM, jpff@cs.bath.ac.uk wrote:
>
>> Actually it is not what you think at all.  rnd(1) is being treated  
>> as an
>> irate function and so is only evaluated once.
>>
>> #i0     rnd.i   1
>> krand   =.k     #i0
>>
>>
>> kone init 1
>> krand = rnd(kone)
>>
>> and you get teh krat eversion
>>
>> ==John ff
>>
>>> This is very unusual -- to come up with two problems in a row, but I
>>> think the rnd() function is not working. Try this:
>>>
>>> 
>>> 
>>> 
>>> 
>>> instr 1	;test of rnd()
>>> krand	=	rnd(1)
>>> krand2	random 0,1
>>> printk 2,krand
>>> printk 2,krand2,5
>>> endin
>>> 
>>> 
>>> i 1 0 8888
>>> 
>>> 
>>>
>>> It seems that rnd() is returning at most one or two values  
>>> repeatedly.
>>> Fortunately, "random" seems to behave correctly.
>>>
>>> best
>>> Lou Cohen
>>>
>>>
>>> Send bugs reports to the Sourceforge bug tracker
>>>           https://sourceforge.net/tracker/? 
>>> group_id=81968&atid=564599
>>> Discussions of bugs and features can be posted here
>>> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
>>> "unsubscribe
>>> csound"
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>> Send bugs reports to the Sourceforge bug tracker
>>           https://sourceforge.net/tracker/?group_id=81968&atid=564599
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
>> "unsubscribe csound"
>>
>
>
>
> Send bugs reports to the Sourceforge bug tracker
>           https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
> "unsubscribe csound"
>



Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 14:38
FromLouis Cohen
Subject[Csnd] Re: Re: Re: rnd(1) problem
I think your answer below helps me to pinpoint what's really  
confusing. You wrote:

On Aug 30, 2010, at 9:21 AM, Victor Lazzarini wrote:

>> If so, how does the following get processed?
>>
>> ktemp = 1
>>
>> Is this executed only at i-time, NOT every k-cycle?
>
> Not at i-time but at perf-time every k-cycle.


If ktemp = 1 is executed at every k-cycle, then why isn't

ktemp = rnd(1) also executed at every k-cycle?

-Lou




Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 15:23
FromVictor Lazzarini
Subject[Csnd] Re: Re: Re: Re: rnd(1) problem
Because the code turns out be equivalent to

i1 = rnd(1)
ktemp = i1

On 30 Aug 2010, at 14:38, Louis Cohen wrote:

> I think your answer below helps me to pinpoint what's really  
> confusing. You wrote:
>
> On Aug 30, 2010, at 9:21 AM, Victor Lazzarini wrote:
>
>>> If so, how does the following get processed?
>>>
>>> ktemp = 1
>>>
>>> Is this executed only at i-time, NOT every k-cycle?
>>
>> Not at i-time but at perf-time every k-cycle.
>
>
> If ktemp = 1 is executed at every k-cycle, then why isn't
>
> ktemp = rnd(1) also executed at every k-cycle?
>
> -Lou
>
>
>
>
> Send bugs reports to the Sourceforge bug tracker
>           https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body  
> "unsubscribe csound"
>



Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 15:34
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: Re: Re: Re: Re: rnd(1) problem
> Because the code turns out be equivalent to
>
> i1 = rnd(1)
> ktemp = i1
>

Or another way of thinking about it, the expressions are considered bottom
up -- from the innermost part to the outermost.  At each stage it seeks
the least work (i-rate prefered to k-rate).  In the case of
ktemp = 1
there is only a simple expression, and we want a k-rate argument
in ktemp = (1+2)
the 1+2 will be unwrapped yo
#i0 add.ii 1,2
ktemp =.k #i0


> On 30 Aug 2010, at 14:38, Louis Cohen wrote:
>
>> I think your answer below helps me to pinpoint what's really
>> confusing. You wrote:
>>
>> On Aug 30, 2010, at 9:21 AM, Victor Lazzarini wrote:
>>
>>>> If so, how does the following get processed?
>>>>
>>>> ktemp = 1
>>>>
>>>> Is this executed only at i-time, NOT every k-cycle?
>>>
>>> Not at i-time but at perf-time every k-cycle.
>>
>>
>> If ktemp = 1 is executed at every k-cycle, then why isn't
>>
>> ktemp = rnd(1) also executed at every k-cycle?
>>
>> -Lou
>>
>>
>>
>>
>> Send bugs reports to the Sourceforge bug tracker
>>           https://sourceforge.net/tracker/?group_id=81968&atid=564599
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body
>> "unsubscribe csound"
>>
>
>
>
> Send bugs reports to the Sourceforge bug tracker
>             https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
> csound"
>
>
>
>




Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 15:38
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: rnd(1) problem
ps

It i sof course perfectly possible that the semantic nalysis was top doen,
; ie =.k wants a k-argument so drive (1+2) as add.kk

Csound takes th ebottom up approach as it leads to faster code -- in my
exampe 1+2 is only evaluated at init time.

Th eprice is this confusion, which surfaces from time to time.

Perhaps the manul adoes not mak ethis semantics clear?

==John




Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 15:44
Fromjpff@cs.bath.ac.uk
Subject[Csnd] Re: Re: rnd(1) problem
oss:

Somehopw this seems like

http://xkcd.com/221/

which my colleage and ex-studnet has on his door -- creases us up every tome




Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 16:17
FromLouis Cohen
Subject[Csnd] Re: Re: rnd(1) problem
John,

Your explanations are helpful, thanks.

Regarding help from the manual, I can find almost nothing in the  
manual about i-rate processing. There's a fair amount of discussion  
about the difference between a-rate, k-rate, there's a small amount  
regarding f-rate and w-rate, but i-rate, which gets mentioned  
frequently enough, is rarely explained.

The section of the manual entitled "Types, Constants and Variables:   
Syntax of the Orchestra" is a good example. The various rates are  
referred to, but not clarified (especially not i-rate.) The nature of  
k-rate and a-rate variables is described, but exactly what happens to  
these variables at execution time is not clear, at least not to me --  
I have a working model in my head which usually is sufficient.  
Obviously I fell into some sort of trap in the case of rnd(1)!

Note that in the manual section I mentioned there are not any links  
that actually lead to explanations elsewhere.

I looked at the Csound book and found much the same: k-rate and a-rate  
get some discussion, but not i-rate.

-Lou


On Aug 30, 2010, at 10:38 AM, jpff@cs.bath.ac.uk wrote:

> Th eprice is this confusion, which surfaces from time to time.
>
> Perhaps the manul adoes not mak ethis semantics clear?



Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"

Date2010-08-30 20:46
FromEric Luckerbau
Subject[Csnd] Re: Re: rnd(1) problem
I can only second this. It took me a long time to find out that you can
actually let code getting executed at i-time. (For example a loop loading
files to ftables.) Before that I thought i-rate is only for assigning
variables that don't get changed later.

Also I didn't know until today what z-rate is (which the compiler sometimes
mentioned in an error message), found out just because of that remark by
John.

Date2010-08-30 22:11
FromOeyvind Brandtsegg
Subject[Csnd] Re: Re: Re: rnd(1) problem
hum hum ;-)

2010/8/30  :
> oss:
>
> Somehopw this seems like
>
> http://xkcd.com/221/
>
> which my colleage and ex-studnet has on his door -- creases us up every tome
>
>
>
>
> Send bugs reports to the Sourceforge bug tracker
>            https://sourceforge.net/tracker/?group_id=81968&atid=564599
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>


Send bugs reports to the Sourceforge bug tracker
            https://sourceforge.net/tracker/?group_id=81968&atid=564599
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"