setrow — Sets a given row of a 2-dimensional array from a vector.


Sets a given row of a 2-dimensional array. The output is an 2-d array with the contents of the requested row set to values of the input array (1-d; if 2-d the first row of the input array is used).


kout[] setrowkin[],krow


kout[] -- output array containing the set row. It will be created if it does not exist.

kin[] -- input array.

krow -- row to be set.


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

Example 834. Example of the setrow opcode.

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

-d -o dac
;ksmps needs to be an integer div of hopsize
ksmps = 64

instr 1

 ihopsize = 256   ; hopsize
 ifftsize = 1024  ; FFT size
 iolaps = ifftsize/ihopsize ; overlaps
 ibw = sr/ifftsize ; bin bandwidth
 kcnt init 0    ; counting vars
 krow init 0

 kOla[] init ifftsize ; overlap-add buffer
 kIn[] init ifftsize  ; input buffer
 kSw[] init ifftsize
 kOut[][] init iolaps, ifftsize ; output buffers

 a1 diskin2 "fox.wav",1,0,1 ; audio input
 ks  expon  100, p3, 1000
 asw vco2  k(a1), ks

 /* every hopsize samples */
 if kcnt == ihopsize then
   /* window and take FFT */
   kWin[] window kIn,krow*ihopsize
   kSpec[] rfft kWin
   kWin window kSw,krow*ihopsize
   kSpec2[] rfft kWin
   kProd[] cmplxprod kSpec, kSpec2

   /* IFFT + window */
   kRow[] rifft kProd
   kWin window kRow, krow*ihopsize
   /* place it on out buffer */
   kOut setrow kWin, krow

   /* zero the ola buffer */
   kOla = 0
   /* overlap-add */
   ki = 0
   until ki == iolaps do
     kRow getrow kOut, ki
     kOla = kOla + kRow
     ki += 1

  /* update counters */
  krow = (krow+1)%iolaps
  kcnt = 0

 /* shift audio in/out of buffers */
 kIn shiftin a1
 kSw shiftin asw
 a2 shiftout kOla
    out a2/iolaps

 /* increment counter */
 kcnt += ksmps


i1 0 10

See Also

Vectorial opcodes array opcodes


Author: Victor Lazzarini
NUI Maynooth

New in version 6.04