Score Functions

In order to create a portamento or glide in Csound, you must first familiarize yourself with some of the score functions. The four functions to know are '+', '.', 'ppx' and 'nnx'. The '+' adds the previous p-field 2 and previous p-field 3. The '.' carries the previous value from the same p-field. 'ppx' grabs a previous p-field value. 'nnx' grabs a value from one of the next p-fields.

In figure 3.1, we have an example score using the score commands. The score commands point to other locations in the score and takes those values stored in these locations. Figure 3.2 show the results from the score commands.

figure 3.1

figure 3.2


Portamento

Every time a new note is triggered in this Csound portamento instrument, an envelope is used to slide from the previous pitch and previous amplitude to the new pitch and amplitude. The ppx command grabs values from the previous pitch and amplitude. The rise time is detemined by itime(p8).

figure 3.3

301.orc
instr 1
idur = p3
iamp = p4
ipamp = p5
ipch = cpspch(p6)
ippch = cpspch(p7)
itime = p8
kenv1 linseg ipamp, itime, iamp, idur - itime, iamp
kenv2 linseg ippch, itime, iamp, idur - itime, ipch
aosc1 oscil lenv1, kenv2, 1, -1
out aosc1
endin

301.sco
f1 0 2 2 1 -1
i1 0 1 10000 0 7.04 7.04 1
i1 + . . pp4 7.11 pp6 .
i1 + .1666 . pp4 8.04 pp6 .
i1 + . . pp4 7.01 pp6 .
i1 + . . pp4 7.09 pp6 .
i1 + . . pp4 8.04 pp6 .05
i1 + . . pp4 8.01 pp6 .
i1 + . . pp4 7.09 pp6 .
i1 + . . pp4 8.02 pp6 .
i1 + . . pp4 7.11 pp6 .
i1 + . . pp4 7.07 pp6 .
i1 + 1 . pp4 8.07 pp6 .
i1 + .5 . pp4 8.06 pp6 .
i1 + . . pp4 8.04 pp6 .


Glide

The glide works on the very same principles found in the portamento instrument. The difference is that the note glides into the next note before it is played instead of sliding from the last pitch to the new pitch. To do this, we use the 'nnx' command to read ahead to see what the next pitch and amplitude are.

figure 3.4

302.sco
instr
idur = p3
iamp = p4
inamp = p5
ipch = cpspch(p6)
inpch = cpspch(p7)
itime = p8
kenv1 linseg iamp, idur - itime, iamp, itime, inamp
kenv2 linseg ipch, idur - itime, ipch, itime, inpch
aosc1 oscil kenv1, kenv2, 1, -1
out aosc1
endin

302.sco
f1 0 2 2 1 -1
i1 0 1 0 np4 7.04 np6 .5
i1 + . . np4 7.11 np4 .1
i1 + .1666 . np4 8.04 np4 .05
i1 + . . np4 7.01 np4 .
i1 + . . np4 7.09 np4 .
i1 + . . np4 8.04 np4 .05
i1 + . . np4 8.01 np4 .
i1 + . . np4 7.09 np4 .
i1 + . . np4 8.02 np4 .
i1 + . . np4 7.11 np4 .
i1 + . . np4 7.07 np4 .
i1 + 1 . np4 8.07 np4 .05
i1 + .5 . np4 8.06 np4 .
i1 + . . 0 8.04 8.04 .