randh — Generates random numbers and holds them for a period of time.
ares randh xamp, xcps [, iseed] [, isize] [, ioffset]
kres randh kamp, kcps [, iseed] [, isize] [, ioffset]
iseed (optional, default=0.5) -- seed value for the recursive pseudo-random formula. A value between 0 and +1 will produce an initial output of kamp * iseed. A negative value will cause seed re-initialization to be skipped. A value greater than 1 will seed from system time, this is the best option to generate a different random sequence for each run.
isize (optional, default=0) -- if zero, a 16 bit number is generated. If non-zero, a 31-bit random number is generated. Default is 0.
ioffset (optional, default=0) -- a base value added to the random result. New in Csound version 4.03.
kamp, xamp -- range over which random numbers are distributed.
kcps, xcps -- the frequency which new random numbers are generated.
The internal pseudo-random formula produces values which are uniformly distributed over the range -kamp to +kamp. rand will thus generate uniform white noise with an R.M.S value of kamp / root 2.
The remaining units produce band-limited noise: the kcps and xcps parameters permit the user to specify that new random numbers are to be generated at a rate less than the sampling or control frequencies. randh will hold each new number for the period of the specified cycle.
Here is an example of the randh opcode. Play randh.csd
Example 876. Example of the randh opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o randh.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ;same values every time krnd randh 100, 10 printk2 krnd ; look aout oscili 0.8, 440+krnd, 1 ; & listen outs aout, aout endin instr 2 ;different values every time krnd randh 100, 10, 10 ; seed from system clock printk2 krnd ; look aout oscili 0.8, 440+krnd, 1 ; & listen outs aout, aout endin </CsInstruments> <CsScore> f 1 0 16384 10 1 ;sine wave. i 1 0 1 i 2 2 1 e </CsScore> </CsoundSynthesizer>
The example will produce the following output:
i1 50.00000 i1 50.00305 i1 97.68677 i1 -44.25354 i1 -61.56006 i1 -75.91248 i1 67.57202 i1 12.83875 i1 5.39551 i1 -95.18738 WARNING: Seeding from current time 684387922 i2 -13.81226 i2 -16.49475 i2 69.51904 i2 35.04944 i2 47.47925 i2 63.25378 i2 -59.61914 i2 50.93079 i2 -6.46362 i2 5.89294