ptablei
Prev | Orchestra Opcodes and Operators | Next

## ptablei

ptablei — Accesses table values by direct indexing with linear interpolation.

## Description

Accesses table values by direct indexing with linear interpolation.

## Syntax

    ares ptablei andx, ifn [, ixmode] [, ixoff] [, iwrap]

    ires ptablei indx, ifn [, ixmode] [, ixoff] [, iwrap]

    kres ptablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]

## Initialization

ifn -- function table number. The table need not be a power of 2 long.

ixmode (optional) -- index data mode. The default value is 0.

- 0 = raw index

- 1 = normalized (0 to 1)

ixoff (optional) -- amount by which index is to be offset. For a table with origin at center, use tablesize/2 (raw) or .5 (normalized). The default value is 0.

iwrap (optional) -- wraparound index flag. The default value is 0.

- 0 = nowrap (index < 0 treated as index=0; index > tablesize sticks at index=size)

- 1 = wraparound.

## Performance

ptablei is a interpolating unit in which the fractional part of index is used to interpolate between adjacent table entries. The smoothness gained by interpolation is at some small cost in execution time (see also oscili, etc.), but the interpolating and non-interpolating units are otherwise interchangeable.

## Examples

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

Example 617. Example of the ptablei 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 tablei.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1

    seed 0	;generate new values every time the instr is played

    instr 1

    ifn = p4
    isize = p5
    ithresh = 0.5

    itemp ftgen ifn, 0, isize, 21, 2

    iwrite_value = 0
    i_index = 0

    loop_start:
        iread_value ptablei i_index, ifn

        if iread_value > ithresh then
             iwrite_value = 1
        else
             iwrite_value = -1
        endif
    ptableiw iwrite_value, i_index, ifn
    loop_lt i_index, 1, isize, loop_start
        turnoff

    endin

    instr 2

    ifn = p4
    isize = ftlen(ifn)
    prints "Index\tValue\n"

    i_index = 0
    loop_start:
        ivalue tablei i_index, ifn
        prints "%d:\t%f\n", i_index, ivalue

      loop_lt i_index, 1, isize, loop_start		;read table 1 with our index

    aout oscili .5, 100, ifn			;use table to play the polypulse
         outs   aout, aout

    endin
    </CsInstruments>
    <CsScore>
    i 1 0 1 100 16
    i 2 0 2 100
    e
    </CsScore>
    </CsoundSynthesizer>

## See Also

table, tablei, table3, ptable, ptable3, oscil1, oscil1i, osciln

More information on this opcode: http://www.csounds.com/journal/issue12/genInstruments.html , written by Jacob Joaquin

## Credits

Author: John ffitch
Jan 2012

New in Csound version 5.16

Prev | Up | Next
ptable | Home | ptable3