<- C I ->

F STATEMENT (or FUNCTION TABLE STATEMENT)

     f  p1  p2  p3  p4 ...   
This causes a GEN subroutine to place values in a stored function table for use by instruments.

PFIELDS

     p1   Table number (from 1 to 200) by which the stored function will be known
.         A negative number requests that the table be destroyed.   
     p2   Action time of function generation (or destruction) in beats. 
     p3   Size of function table (i.e.  number of points)
          Must be a power of 2, or a power-of-2 plus 1 (see below).
          Maximum table size is 16777216 (2**24) points. 
     p4   Number of the GEN routine to be called (see GEN ROUTINES).
          A negative value will cause rescaling to be omitted. 
     p5   |
     p6   |   Parameters whose meaning is determined by the particular GEN routine.
     .    |
     .    |

SPECIAL CONSIDERATIONS

Function tables are arrays of floating-point values. Arrays can be of any length in powers of 2; space allocation always provides for 2**n points plus an additional guard point. The guard point value, used during interpolated lookup, can be automatically set to reflect the table's purpose: If size is an exact power of 2, the guard point will be a copy of the first point; this is appropriate for interpolated wrap-around lookup as in oscili, etc., and should even be used for non-interpolating oscil for safe consistency. If size is set to 2**n + 1, the guard point value automatically extends the contour of table values; this is appropriate for single-scan functions such in envlpx, oscil1, oscil1i, etc.

Table space is allocated in primary memory, along with instrument data space. The maximum table number has a soft limit of 200; this can be extended if required.

An existing function table can be removed by an f statement containing a negative p1 and an appropriate action time. A function table can also be removed by the generation of another table with the same p1. Functions are not automatically erased at the end of a score section.

p2 action time is treated in the same way as in i statements with respect to sorting and modification by t statements. If an f statement and an i statement have the same p2, the sorter gives the f statement precedence so that the function table will be available during note initialization.

An f 0 statement (zero p1, positive p2) may be used to create an action time with no associated action. Such time markers are useful for padding out a score section (see s statement).

<- C I ->
Prepared from the MIT Media Lab Csound Manual, PJN, Nov 1994.