GEN17

GEN17 — Creates a step function from given x-y pairs.

Description

This subroutine creates a step function from given x-y pairs.

Syntax

f # time size 17 x1 a x2 b x3 c  ...

Initialization

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] 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).

Examples

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 1076. 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:

f 2 0 128 -17 0 10 32 20 64 30 96 40 - a step function with 4 equal levels, each 32 locations wide except the last which extends its value to the end of the table

f 2 0 128 -17 0 10 32 20 64 30 96 40 - a step function with 4 equal levels, each 32 locations wide except the last which extends its value to the end of the table

See Also

GEN02