tablecopy
Prev | Orchestra Opcodes and Operators | Next

## tablecopy

tablecopy — Simple, fast table copy opcode.

## Description

Simple, fast table copy opcode.

## Syntax

    tablecopy kdft, ksft

## Performance

kdft -- Destination function table.

ksft -- Number of source function table.

tablecopy -- Simple, fast table copy opcode. Takes the table length from the destination table, and reads from the start of the source table. For speed reasons, does not check the source length - just copies regardless - in “wrap” mode. This may read through the source table several times. A source table with length 1 will cause all values in the destination table to be written to its value.

tablecopy cannot read or write the guardpoint. To read it use table, with ndx = the table length. Likewise use table write to write it.

To write the guardpoint to the value in location 0, use tablegpw.

This is primarily to change function tables quickly in a real-time situation.

## Examples

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

Example 1070. Example of the tablecopy 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
    -odac    ;;;realtime audio out
    ;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o tablecopy.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr  = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1
    ;after an example from Jonathan Murphy

    gilen = 7
    gilist  ftgen 1, 0, gilen + 1, -2, 2, 3, 4, 5, 6, 7	;only 6 elements, so 1 is doubled
    gitmp   ftgen 2, 0, gilen + 1, -2, 0			;empty table
    gkmax   init gilen

    seed 0							;each time different

    instr 1

    ktrig metro 3						;trigger values
    krnd  random 0, gkmax

    if (ktrig == 1) then
      kval    table  krnd, gilist
              tablew 0, krnd, gilist
      kread   = 0
      kwrite  = 0
    start:
      knew    table kread, gilist
    if (knew != 0) then
              tablew knew, kwrite, gitmp
      kwrite    =  kwrite + 1
    endif
      kread   = kread + 1
    if (kread <= gilen) kgoto start
              tablecopy gilist, gitmp			;fill with zeroes
      gkmax   = gkmax - 1
    endif

    printk2 kval

    if (gkmax < 0) then
              event "i", 2, 0, 1/kr				;when ready, then stop
    endif

    asig vco2 .5, 40*kval					;sound generation
    outs asig, asig

    endin

    instr 2

    exitnow

    endin
    </CsInstruments>
    <CsScore>
    i1 0 5
    e
    </CsScore>
    </CsoundSynthesizer>

Its output should include a lines like these:

    i1     5.00000
    i1     3.00000
    i1     2.00000
    i1     4.00000
    i1     7.00000
    i1     6.00000
    i1     7.00000

## See also

Read/Write Operations

## Credits

Author: Robin Whittle
Australia
May 1997

New in version 3.47

Prev | Up | Next
table3 | Home | tablefilter