urandom
Truly random opcodes with controllable range.
Plugin opcode in urandom.
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.
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.
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.
An example of the urandom opcode at a-rate. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac ;;;RT audio out
; For Non-realtime ouput leave only the line below:
; -o urandom.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
instr 1 ; Create random numbers at a-rate in the range -2 to 2
aur urandom -2, 2
afreq1 = aur * 500 + 100 ; Use the random numbers to choose a frequency.
afreq2 = aur * 500 + 200
a1 oscil .3, afreq1
a2 oscil .3, afreq2
outs a1, a2
endin
</CsInstruments>
<CsScore>
i 1 0 3
e
</CsScore>
</CsoundSynthesizer>
|
Here is an example of the urandom opcode at k-rate. It uses the file urandom_krate.csd.
An example of the urandom opcode at k-rate. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac ;;;RT audio out
; For Non-realtime ouput leave only the line below:
; -o urandom_krate.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
instr 1 ; Create random numbers at k-rate in the range -1 to 1 at krate
k1 urandom ; with a uniform distribution.
printks "k1=%f\\n", 0.1, k1
asig1 poscil.2, k1 * 500 + 100
asig2 poscil.2, k1 * 500 + 200
outs asig1, asig2
endin
</CsInstruments>
<CsScore>
i 1 0 3
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
See also
Random (Noise) Generators
Credits
Author: John ffitch
New in version 5.13