GEN07 — Constructs functions from segments of straight lines.
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 | |
---|---|
|
Here is an example of the GEN07 routine. It uses the files gen07.csd.
Example 1101. An example of the GEN07 routine.
<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 gen07.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ;use GEN07 to alter frequency ifn = p4 ;use different GEN07 tables kcps init 10/p3 ;index ftable 10 times over the duration of entire note kndx phasor kcps ixmode = 1 ;normalize index data kfrq tablei kndx, ifn, ixmode kfrq = kfrq*1000 ;scale asig poscil .8, 1220+kfrq, 1 ;add to frequency outs asig, asig endin </CsInstruments> <CsScore> f 1 0 8192 10 1 ;sine wave f 2 0 1024 7 0 512 1 0 -1 512 0 ;sawtooth up and down f 3 0 1024 7 1 512 1 0 -1 512 -1 ;square f 4 0 1024 7 1 1024 -1 ;saw down i 1 0 2 2 i 1 + 2 3 i 1 + 1 4 e </CsScore> </CsoundSynthesizer>
These are the diagrams of the waveforms of the GEN07 routines, as used in the example: