vrandi

vrandi — Generate a sort of 'vectorial band-limited noise'

Description

Generate a sort of 'vectorial band-limited noise'

Syntax

vrandi  ifn,  krange, kcps, ielements [, idstoffset] [, iseed] \
      [, isize] [, ioffset]

Initialization

ifn - number of the table where the vectorial signal will be generated

ielements - number of elements to process

idstoffset - (optional, default=0) -- index offset for the destination table

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.

Performance

krange - range of random elements (from -krange to krange)

kcps - rate of generated elements in cycles per seconds

This opcode is similar to randi, but operates on vectors instead of with scalar values.

Though argument isize defaults to 0, thus using a 16-bit random number generator, using the newer 31-bit algorithm is recommended, as this will produce a random sequence with a longer period (more random numbers before the sequence starts repeating).

The output is a vector contained in ifn (that must be previously allocated).

All these operators are designed to be used together with other opcodes that operate with vector such as adsynt, etc.

Examples

Here is an example of the vrandi opcode. It uses the file vrandi.csd.

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

sr=44100
ksmps=128
nchnls=2

;Example by Andres Cabrera

gitab ftgen 0, 0, 16, -7, 0, 128, 0

instr 1
  krange init p4
  kcps init p5
  ioffset init p6
  ;       table   krange  kcps  ielements   idstoffset  iseed  isize ioffset
  vrandi  gitab,  krange, kcps,     3,         3,         2,   1,    ioffset

  kfreq1 table 3, gitab
  kfreq2 table 4, gitab
  kfreq3 table 5, gitab

  ;Change the frequency of three oscillators according to the random values
  aosc1 oscili 4000, kfreq1, 1
  aosc2 oscili 2000, kfreq2, 1
  aosc3 oscili 4000, kfreq3, 1

  outs aosc1+aosc2, aosc3+aosc2
endin

</CsInstruments>
<CsScore>

f 1 0 2048 10 1

;             krange  kcps    ioffset
i 1 0 	5	100	1	300
i 1 5 	5	5	1	400
i 1 10 	5	100	2	1000
i 1 15 	5	400	4	1000
i 1 20 	5	1000	8	2000
i 1 20 	5	300	32	350
  
e

</CsScore>
</CsoundSynthesizer> 


See also

Vectorial Random Signal Generators

Credits

Written by Gabriel Maldonado.

New in Csound 5 (Previously available only on CsoundAV)