**GEN** Routines: Line/Exponential Segment Generators

## GEN25, GEN27

**f** # time size 25 x1 y1 x2 y2 x3 . . .
**f** # time size 27 x1 y1 x2 y2 x3 . . .

### Description

These subroutines are used to construct functions from segments of exponential curves (**GEN25)** or straight lines (**GEN27**) in breakpoint fashion.

### Initialization

*size * – number of points in the table. Must be a power of 2 or power-of-2 plus 1 (see **f statement**).

*x1, x2, x3,* etc. – locations in table at which to attain the following y value. Must be in increasing order. If the last value is less than size, then the rest will be set to zero. Should not be negative but can be zero.

*y1, y2, y3,*, etc. – Breakpoint values attained at the location specified by the preceding x value. For **GEN25** these must be non-zero and must be alike in sign. No such restrictions exist for **GEN27**.

### Note

If p4 is positive, functions are post-normalized (rescaled to a maximum absolute value of 1 after generation). A negative p4 will cause rescaling to be skipped.

### Example

**f** 1 0 257 27 0 0 100 1 200 -1 256 0

This describes a function which begins at 0, rises to 1 at the 100th table location, falls to -1, by the 200th location, and returns to 0 by the end of the table. The interpolation is linear.

### Author

John ffitch

University of Bath/Codemist Ltd.

Bath, UK

New in Csound version 3.49

**GEN** Routines: Line/Exponential Segment Generators