ftslice

ftslice — Copy a slice from an f-table to another f-table at performance

Description

Plugin opcode in emugens.

The ftslice opcode takes an f-table and copies a slice to a second f-table (similar to tab2array, but between tables). This action is done at performance (every cycle), so that it can be placed inside a k-time if clause / loop / etc. For an init-only version, see ftslicei

Syntax

ftslice ifnsource, ifndest [, kstart, kend, kstep ]
ftslice kfnsource, kfndest [, kstart, kend, kstep ]

Initialization

ifnsource -- The table number to copy data from

ifndest -- The table number to copy data to

Performance

kstart -- The index to start copying from. Defaults to 0

kend -- The end index to stop copying. This is NOT inclusive. 0 means copy to the end of the table. Defaults to end of table

kstep -- How many elements to skip. Defaults to 1

Examples

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

Example 405. Example of the ftslice opcode.

<CsoundSynthesizer>
<CsOptions>
</CsOptions>
<CsInstruments>

; Example file ftslice

/*

ftslice: 

Copy slice from source table to destination table

Syntax:

ftslice ifnsource, ifndest, kstart=0, kend=0, kstep=1

ifnsource: source table
ifndest: destination table
kstart: the index to start copying from
kend: the end index to stop copying. This is NOT inclusive. 0=end of table
kstep: how many elements to skip

See also: tablecopy, tableicopy, tab2array
*/

instr 1
  ifn   ftgentmp 0, 0, -13, -2,  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
  idest ftgentmp 0, 0, -11, -2,  0   ; empty table of size 11

  ; copy only even elements
  ftslice ifn, idest, 0, 0, 2
  ftprint idest

  ; copy too many elements - only the elements which fit in the dest table
  ; are copyed

  ftslice ifn, idest
  ftprint idest  

  turnoff
endin


</CsInstruments>
<CsScore>
i 1 0   0.1

</CsScore>
</CsoundSynthesizer>


See also

Read/Write Operations

Credits

By: Eduardo Moguillansky 2018

New plugin in version 6.12