vrandi
Prev | Orchestra Opcodes and Operators | Next

## 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 bmscan, adsynt, etc.

Note: bmscan not yet available on Canonical Csound

## Examples

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

Example 947. 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

vrandh, randi

## Credits

Written by Gabriel Maldonado.

New in Csound 5 (Previously available only on CsoundAV)

Prev | Up | Next
vrandh | Home | vstaudio, vstaudiog