GEN17 — Creates a step function from given x-y pairs.
size -- number of points in the table. Must be a power of 2 or a power-of-2 plus 1 (see f statement). The normal value is power-of-2 plus 1.
x1, x2, x3, etc. -- x-ordinate values, in ascending order, 0 first.
a, b, c, etc. -- y-values at those x-ordinates, held until the next x-ordinate.
Note | |
---|---|
This subroutine creates a step function of x-y pairs whose y-values are held to the right. The right-most y-value is then held to the end of the table. The function is useful for mapping one set of data values onto another, such as MIDI note numbers onto sampled sound ftable numbers ( see loscil). |
f 1 0 128 -17 0 1 12 2 24 3 36 4 48 5 60 6 72 7 84 8
This describes a step function with 8 successively increasing levels, each 12 locations wide except the last which extends its value to the end of the table. Rescaling is inhibited. Indexing into this table with a MIDI note-number would retrieve a different value every octave up to the eighth, above which the value returned would remain the same.
Here is a complete example of the GEN17 routine. It uses the files gen17.csd.
Example 1111. An example of the GEN17 routine.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac -M0 -+rtmidi=virtual ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o gen17.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 inote cpsmidi iveloc ampmidi .5 ictl midictrl 5 ;move slider of controller 5 to change ftable itab table ictl, 2 aout poscil iveloc, inote, itab outs aout, aout endin </CsInstruments> <CsScore> f 1 0 8193 10 1 f 2 0 128 -17 0 10 32 20 64 30 96 40 ;inhibit rescaling f 10 0 16384 10 1 ; Sine f 20 0 16384 10 1 0.5 0.3 0.25 0.2 0.167 0.14 0.125 .111; Sawtooth f 30 0 16384 10 1 0 0.3 0 0.2 0 0.14 0 .111; Square f 40 0 16384 10 1 1 1 1 0.7 0.5 0.3 0.1 ; Pulse f 0 30 ;run for 30 seconds e </CsScore> </CsoundSynthesizer>
This is the diagram of the waveform of the GEN17 routine, as used in the example: