lenarray
Prev | Orchestra Opcodes and Operators | Next

## lenarray

lenarray — Evaluates the size or shape length of an array.

## Description

Evaluates the size or number of dimensions of an array.

## Syntax

    ir lenarray karray[, iwhich]

    kr lenarray karray[, iwhich]

## Initialisation

karray -- The array that is being questioned. It can be of any dimension.

iwhich -- selects which dimension to evaluate the size. If zero or negative it selects the number of dimensions. It defaults to 1, as used in a vector.

## Performance

kr -- length of vector.

karray -- array to query.

If the dimension requested is larger than the actual array, or the array is not initialised the value -1 is returned.

## Examples

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

Example 454. Example of the lenarray opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

    <CsoundSynthesizer>
    <CsOptions>
    -n -m128 ;no sound output, reduced messages
    </CsOptions>
    <CsInstruments>
    ;example by joachim heintz
    sr = 44100
    ksmps = 32
    nchnls = 1
    0dbfs = 1

      instr 1 ;simple example
    kArr[]  fillarray 1, 2, 3, 4 ;fill array manually
            printks "Length of kArr = %d\n\n", 0, lenarray(kArr) ;print out its length
            turnoff ;only do this in the first k-cycle
      endin

      instr 2 ;random array length
    iNumEls random  1, 11 ;create random number between 1 and 10
    kArr[]  init    int(iNumEls) ;create array of this length
            printks "Random length of kArr = %d\n", 0, lenarray(kArr) ;print out
            turnoff
      endin

      instr 3 ;fill random array length with random elements
    iNumEls random  1, 11 ;create random number between 1 and 10
    kArr[]  init    int(iNumEls) ;create array of this length
            printks "Random length of kArr = %d\n", 0, lenarray(kArr) ;print out

    ;fill
    kIndx   =       0 ;initialize index
      until kIndx == lenarray(kArr) do
    kArr[kIndx] rnd31 10, 0 ;set element to random value -10...10
    kIndx   +=      1 ;increase index
      od

    ;print
    kIndx   =       0 ;initialize index
      until kIndx == lenarray(kArr) do
    printf("kArr[%d] = %f\n", kIndx+1, kIndx, kArr[kIndx])
    kIndx   +=      1 ;increase index
      od

            turnoff
      endin
    </CsInstruments>
    <CsScore>
    i 1 0 .1
    i 2 0 .1
    i 2 0 .1
    i 3 0 .1
    </CsScore>
    </CsoundSynthesizer>

## See Also

Vectorial opcodes

## Credits

Author: John ffitch
Codemist Ltd
2013

New in version 6.00

Extended to multi-dimensions in 6.04

Prev | Up | Next
ksmps | Home | lfo