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 498. 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