urandom

urandom — truly random opcodes with controllable range.

Description

Truly random opcodes with controllable range. These units are for Unix-like systems only and use /dev/urandom to construct Csound random values

Syntax

ax urandom [imin, imax]
ix urandom [imin, imax]
kx urandom [imin, imax]

Initialization

ix -- i-rate output value.

imin -- minimum value of range; defaults to -1.

imax -- maximum value of range; defaults to +1.

[Note] Notes

The algorithm produces 2^64 different possible values which are scaled to fit the range requested. The randomness comes form the usual Linux/OSX /dev/urandom method, and there is no guarantee that it will be truly random, but there is a good chance. It does not show any cycles.

Performance

ax -- a-rate output value.

kx -- k-rate output value.

Examples

Here is an example of the urandom opcode at a-rate. It uses the file urandom.csd.

Example 961. An example of the urandom opcode at a-rate.

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
; Audio out   Audio in
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o rnd31.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
  ; Create random numbers at a-rate in the range -2 to 2
  aur urandom  -2, 2

  ; Use the random numbers to choose a frequency.
  afreq = aur * 500 + 100

  a1 oscil 30000, afreq, 1
  out a1
endin


</CsInstruments>
<CsScore>

; Table #1, a sine wave.
f 1 0 16384 10 1

; Play Instrument #1 for one second.
i 1 0 1
e


</CsScore>
</CsoundSynthesizer>


Here is an example of the urandom opcode at k-rate. It uses the file urandom_krate.csd.

Example 962. An example of the urandom opcode at k-rate.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o rnd31_krate.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
  ; Create random numbers at k-rate in the range -1 to 1 
  ; with a uniform distribution.
  k1 urandom
        
  printks "k1=%f\\n", 0.1, k1
endin


</CsInstruments>
<CsScore>

; Play Instrument #1 for one second.
i 1 0 1
e


</CsScore>
</CsoundSynthesizer>


Its output should include lines like this:

k1=0.229850
k1=-0.077047
k1=-0.199339
k1=-0.620577
k1=-0.119447
k1=-0.596258
k1=0.525800
k1=-0.171583
k1=-0.017196
k1=-0.974613
k1=-0.036276
      

Credits

Author: John ffitch

New in version 5.13