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, . . . These must be nonzero and must be alike in sign.
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 a simple example of the GEN05 routine. It uses the files gen05.orc and gen05.sco. It will create a nice percussive amplitude envelope. Here is its diagram:
Diagram of the waveform generated by GEN05.
Example 1. A simple example of the GEN05 routine.
/* gen05.orc */
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrument #1.
instr 1
; Create an index over the length of our entire note.
kcps init 1/p3
kndx phasor kcps
; Read Table #1 with our index.
ifn = 1
ixmode = 1
kamp table kndx, ifn, ixmode
; Create a sine wave, use the Table #1 values to control
; the amplitude. This creates a nice percussive sound.
a1 oscil kamp*30000, 440, 2
out a1
endin
/* gen05.orc */
/* gen05.sco */
; Table #1: a percussive envelope (using GEN05).
f 1 0 64 5 1 2 120 60 1 1 0.001 1
; Table #2, a sine wave.
f 2 0 16384 10 1
; Play Instrument #1 for 2 seconds.
i 1 0 2
e
/* gen05.sco */