Simple Instrument / Complex Score – 2001

The creation of Composition Zeta (section three).

(available here in .pdf format)

As published in the Csound Journal – Summer 2001



          Since its inception, an important technical challenge of digital synthesis and computer music composition has involved creating complex and interesting sound evolutions and textures with minimal programming. A basic approach, when composing with Csound, has been to create a set of complex instruments that could be performed by a relatively simple score. Recently, I decided to take a different approach and try to compose an entire composition with only one, very simple, instrument. This article will describe the outcome.

         First let us examine the instrument.

instr 1
idur        =           p3
iamp      =           p4
ifreq       =           p5
kpan      =           p6
imod1    =           p7
imod2    =           p8
ifn          =           p9

kenv1 linseg       ifreq *  imod1,   idur * .75,       ifreq *  imod2
kenv2 linseg      .001,            idur * .01,      6.5,            idur * .25,      5,            idur * .54,      5,  idur * .20,  .001 

a1 oscili             iamp * .925,     ifreq,             ifn
a4 oscili             iamp * .075,    a1 * (kenv2 * .005),            ifn

a2 butterbp       a1,             kenv1,            50
a3        =          (a2 + a4) * kenv2      

            outs     sqrt(kpan) * a3, (sqrt(1-kpan)) * a3 


           On its own, there is nothing earth shattering about this instrument. However, it gains a unique quality by the way it is treated in the score. 

instr     start       idur       iamp         ifreq         kpan     imod1     imod2       ifn 

i1          60         20       1000      150,000        0.5        0.01        50            1
i1          60         25          .                  30        0.5             0          2             .
i1     60.75         20       2500              10        0.5         0.01        20           3

           Notice the frequency parameter of a1, ifreq(p5). Any time the value of p5 is less than 40hz or above 20,000hz (the approximate audible range of the human ear) so is the base frequency of a1.  This serves two functions:
            1.) It is the modulator for the frequency parameter of a4 (plus an envelope which gives it a nice hard attack if the note is of short duration) thus potentially modulating the frequency of a4 on a sub or supra audio level.
            2.) For .75 of idur(p3), a1 is bandpass filtered over the frequency range of imod1 * ifreq to imod2 * ifreq with a pass bandwidth of 50hz. So depending on the function table selected for a1 ifn(p9) only the partials within the audible range of frequencies would be hearable as they pass through the moving 50hz band of the filter.

So, even though the value for ifreq in a1 can be sub or supra audio we hear both the audible partials that are present in the function table and those that are created by the frequency modulation of a4.

With an orchestra of only fourteen very simple lines of code a composition of over twelve minutes in length was realized. There are many ways this orchestra could have been expanded to make it more complicated and more versatile. However, when composing one has to know when enough is enough. In this instance any more could have made the instrument unwieldy. Any less would have been too limited for it to provide the diversity needed to keep the listener’s interest for the entire composition.

 The diversity of sound obtained from this simple instrument illustrates the power of the Csound score. The layering of sound events and their slight offset in time as well as the various waveforms of the function tables are key to achieving the many textures. In the following section of the score, start times are offset by .05 seconds and the durations are 7 seconds. This adds depth and texture to this evolving set of sounds. Notice also the different frequencies of each event adding a density of timbre to the overall sound as well.

f1   0   131073   10   1   0.9   0.8   0.7   0.6   0.5   0.4   0.3   0.2   0.1   1   0   1 
f2   0   131073   10   1   0.5   1       1       1       1       1     1       1     1   1   1   1   1   1   1
f3   0   131073   12   20 
f4   0           65     8     0   16   0   0.1   1   15.9   1   15.9   0   0.1   0   16   0       
f5   0           65     8     0   16   0     16   1     16   0      16   0                                
f6   0   131073   19   0.5    1  270    1                                                                  

instr     start        idur      iamp         ifreq        kpan     imod1     imod2       ifn

 i1      424            7       1000         300         0.5         1            100         4         
 i1      424.05       .               .          280           1         1              10         4         
 i1      424.1         .               .          270           0         1              10         4          
 i1      424.15       .               .          310        0.9         1              10         4          
 i1      424.2         .               .          320        0.1         1              10         4         
 i1      424.25       .               .          250        0.5         1              10         4
 i1      424.3         .               .          280        0.4         1              10         4
 i1      424.35       .               .          275        0.6         1              10         4

           While composing a complex score it is easy to become overwhelmed by a lengthy bit of code. This score is over 2700 lines long. I find it very useful to employ a powerful spreadsheet program (such as MS Excel) for streamlining and organizing the production of such a score. There are many good reasons for this, here are a just a few:

  • A spreadsheet enables data manipulation not only on the horizontal plane, which all text editors do, but also on the vertical plane. This is extremely helpful when it is necessary to copy and paste more than one section of a given p field.
  • A formula can be inserted into any cell of a spreadsheet to perform a myriad of data manipulations. Transposition of values is an extremely valuable use of this tool. Through the linking of cells what is done to one cell or group of cells can effect the value of another.
  • Extensive search and sort functions make it easy to get to wherever you need to be in the score quickly and easily.
  • Excel offers extensive graphing functions that enable one to create a graph of a range of cells. The values of the cells can then be altered by simply dragging a node on the graph. This works well for quick editing and tweaking of a score or as a general compositional approach.
  • Advanced dragging functions allow for options such as copying a cell or group of cells or advancing their values by a predetermined value or sequence by simply dragging the corner of the selected cells.

Here is the complete .sco and .orc for Composition Zeta (section three), one section of a larger work. (Warning! Even on a fast computer, compile times are lengthy.) Listen for the diversity of sound and texture. Did one simple instrument "carry" the entire composition? Drop me an e-mail and let me know what you think. 

There is much to be said in favor of simple instruments and complex scores. One does not have to be an expert with code, math, digital synthesis or even Csound to create interesting compositions utilizing Csound. With a little imagination, creativity, and unconventional thinking, a simple instrument can yield amazing results.

Thank you for your attention.

Comments are closed.