cSounds.com - tutorials - An Instrument Design TOOTorial Toot 6: GENs" The first character in a score statement is an opcode, determining an action request; the remaining data consists of numeric parameter fields (p-fields) to be used by that action. So far we have been dealing with two different opcodes in our score: f and i. i statements, or note statements, invoke the p1 instrument at time p2 and turn it off after p3 seconds; all remaining p-fields are passed to the instrument.
On the other hand, f statements, or lines with an opcode of f, invoke function-drawing subroutines called GENS. In Csound there are currently twenty-three GEN routines which fill wavetables in a variety of ways. For example, GEN01 transfers data from a soundfile; GEN07 allows you to construct functions from segments of straight lines; and GEN10, which we've been using in our scores so far, generates composite waveforms made up of a weighted sum of simple sinusoids. We have named the function "f1," invoked it at time 0, defined it to contain 512 points, and instructed GEN10 to fill that wavetable with a single sinusoid whose amplitude is 1. GEN10 can in fact be used to approximate a variety of other waveforms, as illustrated by the following:
|
|
f1 0 2048 10 1 ; Sine f2 0 2048 10 1 0.5 0.3 0.25 0.2 0.167 0.14 0.125 .111 ; Sawtooth f3 0 2048 10 1 0 0.3 0 0.2 0 0.14 0 .111 ; Square f4 0 2048 10 1 1 1 1 0.7 0.5 0.3 0.1 ; Pulse For the opcode f, the first four p-fields are interpreted as follows:
|
In the instrument and score below, we have added three additional functions to the score, and modified the orchestra so that the instrument can call them via p11.
|
|