## GEN07

GEN07 — Constructs functions from segments of straight lines.

## Description

Constructs functions from segments of straight lines.

## Syntax

`f  #    time    size   7   a   n1   b   n2   c  ...`

## Initialization

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

a, b, c, etc. -- ordinate values, in odd-numbered pfields p5, p7, p9, . . .

n1, n2, etc. -- length of segment (no. of storage locations), in even-numbered pfields. Cannot be negative, but a zero is meaningful for specifying discontinuous waveforms (e.g. in the example below). The sum n1 + n2 + .... will normally equal size for fully specified functions. If the sum is smaller, the function locations not included will be set to zero; if the sum is greater, only the first size locations will be stored.

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. Discrete-point linear interpolation implies an increase or decrease along a segment by equal differences between adjacent locations; exponential interpolation implies that the progression is by equal ratio. In both forms the interpolation from a to b is such as to assume that the value b will be attained in the n + 1th location. For discontinuous functions, and for the segment encompassing the end location, this value will not actually be reached, although it may eventually appear as a result of final scaling.

## Examples

Here is a simple example of the GEN07 routine. It uses the file gen07.csd. It will create a single-cycle sawtooth whose discontinuity is mid-way in the stored function. Here is its diagram:

Diagram of the waveform generated by GEN07.

Example 556. A simple example of the GEN07 routine.

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
; Audio out   Audio in
; For Non-realtime ouput leave only the line below:
; -o gen07.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
kamp = 30000
kcps = 440
ifn = 1

; Play the sine wave stored in Table #1.
a1 oscil kamp, kcps, ifn
out a1
endin

</CsInstruments>
<CsScore>

; Table #1: a sawtooth wave (using GEN07).
f 1 0 256 7 0 128 1 0 -1 128 0

; Play Instrument #1 for 2 seconds.
i 1 0 2
e

</CsScore>
</CsoundSynthesizer>
```