*******************************
Main Group 01: Simple Synthesis
*******************************        


Sub Id  Contents

01      Basic Instrument
    1   variable waveform & envelope
    1B  polyphonic, piano 
    2A  constant waveform, reedy 
    2B  constant waveform, envelope by                           

 
        ENVLPX, plucked 
    2C  constant waveform, polyphonic
        choral reedy 
    3   as 1, envelope experiments 
    4   LINEN envelope
    5   ENVLPX envelope

10      LFO on Amplitude
    1   variable waveform & envelope

11      LFO and RANDI on Amplitude
    1   variable waveform & envelope, flute 

12      RANDI on Amplitude
    1   variable waveform & envelope

40      LFO on Frequency
    1   variable waveform, envelope & pitch contour

41      LFO on Frequency, RANDI Replaces Envelope
    1   noise band with variable center frequency

42      LFO on Frequency, Vibrato Effect 
    1   sinus wave, constant LINEN, variable vibrato width 
        and rate


Overview


Simple Synthesis is probably didactically one of the most
important main groups in the catalogue. It contains basic
building blocks of digital sound synthesis. Different
waveforms, different envelopes, modulation of amplitude or
frequency by low frequency oscillators, chorus effect are the
protagonists in the first act of the ACCCI. Whenever
possible, we have added a historic touch by employing early
examples taken from Risset's Introductory Catalogue.

The literature by De Poli, Dodge, Mathews and Moore contains
valuable general introductions on digital sound synthesis,
functioning of digital oscillators, hard- and software issues. 

------------------------------------------------------- next

Suggested Reading

De Poli, G. 1983.
"A Tutorial on Digital Sound Synthesis Techniques."
Computer Music Journal 7(4).
Reprinted in C.Roads, ed. 1989. The Music Machine. 
MIT Press, pp. 429-448.

Dodge, C., and T.A. Jerse 1985.
Computer Music: Synthesis, Composition, and Performance.
Schirmer Books, pp. 1-104.

Mathews, M.V. 1969.
The Technology of Computer Music. 
MIT Press, pp. 1-42, 134-138.

Moore, F.R. 1990.
Elements of Computer Music.
Prentice-Hall, pp. 150-185.

Samson, P. 1978.
"A General-Purpose Digital Synthesizer."
Journal of the Audio Engineering Society 28(3):106-113.


------------------------------------------------------------ next

01_01_1
additional parameters: if1, if2


The basic instrument to synthesize pitched sounds consists of a
periodic waveform and an amplitude envelope. In SWSS this is
realized in the most general way by two oscillators: the envelope
is generated by setting one oscillator's frequency to 1/idur.
This way the oscillator will simply scan a given function table
once per note, independent of the note duration.  The periodic
waveform is generated according to the GEN function table which
has been assigned to the second oscillator.  GEN 10 is utilized
for complex waves with equal strength harmonics.  GEN 09 serves
to generate complex wavetables, where strengths and ratios of the
individual components are free. GEN 05 or 07 generate exponential
and linear function tables containing discontinuities. These
functions are also successful in serving as waveforms, but
foldover may lead to unwanted quantities of noise in the output.

The instrument demonstrates a number of different waveforms:
complex waves with between one and eleven harmonics, complex
waves with weighted partials, and a number of linear waveforms
(foldover components are negligible at this frequency). The
linear waveforms are followed by a number of linear and
exponential envelopes.  During this display, the wave is held
constant: linear waveform f42. 

In the f statements that generate the exponential tables, a
maximum value of 10000 had at first lead to a value of .0001 at
the extremes of the table (after rescaling). This very low value
of .0001 resulted in noisy cutoffs. A max value of 1024 (2**10)
is better. See also discussion of values for iatdec, instruments
01_01_2B and 01_01_5.

Some linear time functions and a few wave spectra are shown in
the figure to the right.

(flowchart, envelopes)
(.orc and .sco files)

------------------------------------------------------------ next

01_01_1B
additional parameters: if1, if2

This run plays the "Manhattan blues on tape M1485" with a sound
reminiscent of an electric piano.

(score)

The design is a subtle variation of 01_01_1, with both envelope
and wave controllable on a per note level. Note that the tempo
statement alters the meaning of durations in the score file. The
envelope varies with duration and the harmonic richness with
pitch. This means that we distinguish four kind of notes:

1) brief and low (<.2 sec, <250 Hz)
The function f31 will give a sharp attack. While the first two
decay fragments approximate an exponential shape, the third tries
to imitate the effect of a damper. The waveform has ten
harmonics.

2) brief and high (<.2 sec, >250 Hz) 
The same envelope f31, but now coupled with a waveform with only
seven harmonics.

3) long and low (>.2 sec, <250Hz)

Exponential envelope f51 teams up with a 10 harmonics wave. The
envelope minimum of 2(**-6)=1/64 produces 6/10 of "reverberation
time" (time for the level to drop to 60 db). The durations of the
longer notes range typically  from .4 to .8 sec. Compared to a
real piano (1s at 2000 Hz, up to 10s at 200 Hz), the
reverberation times are somewhat shorter here. On the other hand,
the discrepancy is lessened by the fact that the initial decay
rate in a real piano is higher.

4) long and high (>.2 sec, >250 Hz)

The last option is covered by the exponential envelope f51 and a
7 harmonics wave. (Risset 1969: #301)
                             
(illustration 2 different types of envelopes)

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_01_2A
additional parameter: if2


This design features a constant waveform with 10 weighted
harmonics. The envelope is variable and demonstrates well how the
sole influence of the amplitude envelope can influence the sound
quality and the perceived timbre. The envelope functions f31 and
f32 insure long attacks and decays ( > 50 msec ) and legato
transitions between successive notes.

01_01_2A is the translation of a part of Risset's "Reedy and
Plucked Tones, Choral Effect": only the reedy tones appear. The
same Britannic folk melody is repeated, but each time with a
different envelope. The leading tone is a bit lower than in the
equally tempered system. (Risset 1969: #250)

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_01_2B
additional parameters: idec


Envelope generator ENVLPX and a 10 harmonics wave synthesize
plucked notes. The exponential f51 merely provides the rise
shape. The time of this rise is kept short (10 msec), while the
decay time is the sole free variable. Setting iatss=1 keeps the
amplitude stable during the steady state period of the envelope,
and iatdec controls the attenuation rate during decay time. For
iatdec, the value of 0.01 is ideal. An excessively small value
(say 0.0001) is likely to produce an audible cutoff.

As a matter of fact, the envelopes in this example do not have a
steady state period, because the variable idec is set to values
that exceed the duration of the notes. In this case the decay
period starts directly after the end of the rise period.

A comparison of this instrument with the previous one shows that
the plucked sound quality solely stems from the characteristic
pluck envelope: a short exponential rise and a long exponential
decay. (Risset 1969: #250)

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_01_2C
additional parameters: if2


These are some reedy tones embellished by a choral effect. The
impression of several players is achieved by small differences in
frequency and time: up to several percent in frequency and up to
0.8 sec in time. 

For a more general use in orchestras, simple software routines
can generate the additional voices from one melody (formerly PLF
routines in Music 5). (Risset 1969: #250)

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_01_3
additional parameters: if1, if2

 
This instrument is derived from Risset's 'Linear and Exponential
Decay Experiments'. The object of the comparison here are two
types of decay and four different durations: middle (2 sec), long
(4 sec), short (1 sec) and shorter (.5 sec). 

Linear decay seems to occur slowly at first and then suddenly
disappears; exponential decay is more even and gives a resonance
impression.

To avoid cutoff during exponential decay, one has to ensure that
the amplitude controlling function decays to a final value not
smaller than the inverse of the maximum amplitude. When the
absolute amplitude becomes smaller than 1, the sound is lost in
the quantizing noise.  For instance, if the maximum amplitude is
8000, one should have a function decaying to 2(**-13)=1/8192. 
(Risset 1969: #300)


(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_01_4
additional parameters: if1, irise, idec


LINEN OSCIL implementation of the basic synthesis instrument. The
waveform is variable, but in this particular example only a sinus
wave is played.

We tested a couple of rise and decay values for LINEN. The last
setting of irise/idec sounds like a string tone.

(flowchart)
(.orc and .sco files)

----------------------------------------------------------- next

01_01_5
additional parameters: if1, irise, idec, if2, iatss, iatdec


In this variation of 01_01_2B all input arguments of ENVLPX are
directed from within the score file. This allows an exploration
of the functioning of this somewhat more complex unit generator
of the Csound language. 

In particular, the variables iatss and iatdec are new. Both
specify normalized target values: final amplitude values are
obtained by multiplication with the iamp variable.


Here are some results:

iatss:   = 1      steady state period remains steady
         > 1      growth during steady state
         < 1      small decrease (.9) works well

iatdec:  = .01    ideal
         = .1/.2  compared for two durations:
                  idur=2 sec better than idur=4 sec.
         > 1      amplitude grows louder during decay


Examples: 

   iatdec = .01   ends at 1/100th of the max amplitude
   iatss = 2      exponentially strives to a point iamp*2

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_10_1
additional parameters: if1, if2, ifq3


An LFO embellishes the design of the basic instrument by adding a
loudness vibrato to the tones. 

The amplitude of the LFO is directly set to the value of iamp.
This can be rendered more flexible by inserting an adder between
the LFO and the envelope.

The frequencies of an LFO are by definition restricted to the
subaudio range (0-20 Hz). Since the vibrato rate is duration
independent here, the rate is directly specified by the value of
ifq3. 

The duration dependence (or not) of certain control functions
addresses a fairly complicated, but common problem encountered in
sound synthesis. Recently P.Desain and H.Honing have proposed
some interesting solutions that could be implemented in Csound.
Score file generating software for instruments that make
extensive use of vibrato could well take advantage of their
method. (Desain et al.: 1992)

The multiplier just before OUT serves to scale the signal. In
general this is the way to adjust a signal's overall amplitude to
a desired level: the multiplier is the volume button. 

The first section displays 3 different waveforms: fundamental
solo, 4 and 6 weighted harmonics.

The second section plays a sinus waveform with five different
amplitude envelopes.

In the third section, the LFO's frequency is varied from 1 to 5
Hz.

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_11_1
additional parameters: if1, if2, ifq3, iperc, ifqr


This instrument enables us to add a percentage of random
variation and a vibrato to the amplitude value.
 
Here we show how three different percentages of amplitude
increase the roughness of the tone. The experiment is repeated at
a higher random UG frequency. This increases the noise. Due to
the design of this instrument, the percentage added to the
amplitude in the final output signal is half of the demanded
value: i.e. 25% output where 50% is specified in the score.

The instrument appears in Risset's flute-like passage #100 which
is actually produced by two instruments glued together in the
manner of musique concrte. In his comment to the first part of
this twin design, Risset remarks that the contribution of RANDI
to the overall sound is negligible. The second part of #100 is
reproduced as 01_40_1 and the complete flute-like instrument is
classified as 80_01_1. (Risset 1969: #100)

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_12_1
additional parameters: if1, if2, iperc, ifqr


This instrument permits to add a noise band to a pitched sound
with variable envelope and waveform. The basic instrument is
modified to include a RANDI unit generator. The variable iperc is
a percentage of iamp and varies from 1% to 300%. The effect of
roughness/noise introduced by RANDI is clearly perceived in this
design, in contrast to instrument 01_11_1, where the LFO had
complicated the soundscape.

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_40_1
additional parameters: if1, if2, if3, iamp2, irate


Three oscillators are connected in a manner such as to form a
basic instrument with LFO control of pitch. 

The LFO function is variable and a few linear functions exemplify
how the pitch parameter can be managed in a continuous fashion.
The instrument gives one opportunities for any pitch envelopes
that one can imagine. These contours are scanned at the rate of
the LFO, which is irate times per note. In this design, irate is
duration dependent. Since it is an LFO, frequencies =< 20 Hz are
required. Above that limit begins the domain of FM.

For f32 and f33, the instrument 01_40_1 coincides with part 2 of
#100, see also 1_11_1.

One function leaves the frequency unmodified, while the other
function furnishes a frequency rise from 90% to 100%. This type
of design enables us to model subtle glissandos and to drive them
from within the score file by defining the pitch time function
for each note.

Next we display two other linear functions steering frequency.
F37 and f40 are selected from #511 (Glissandi with constant
frequency differences). Risset applied very long note durations
to this instrument. Also, the composer lets the glissandoing
sounds enter with ca. 1 sec delay from each other. This way the
tones follow the same pitch envelope, the pitch of the first tone
is ahead of the pitch of the second while their frequency
difference remains constant. We did not repeat the chase.

F38 descends two octaves, f39 ca. a sixth. (Risset 1969: #100,
Risset 1969: #511)

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_41_1
additional parameters: ifqr, iamp1, irate


In this instrument we find a RANDI unit generator at the place
usually occupied by the envelope. The center frequency of the
noise band generated by RANDI varies with the pitch of the wave
oscillator. 

The pitch control function works exactly as in instrument
01_40_1; except that irate is now duration independent. Function
table f33 is scanned at a rate of 3 Hz for 6.5 seconds, repeating
a frequency descent of two octaves. We want to leave it for
further experimentation to the reader to find out more about the
glissando of a pitched noise band. The sounds unpleasantly remind
us of certain noise pollutions.

The bad cutoffs can be eliminated by supplying an envelope.
(Risset 1969: #511) 

(flowchart)
(.orc and .sco files)

------------------------------------------------------------ next

01_42_1
additional parameters: ifc, iwidth, irate, ifm


This instrument permits us to add a frequency vibrato to a sound.
All notes have a duration of one second. In this special case the
vibrato rate is neither duration dependent, nor duration
independent. 

The vibrato width is limited to subaudio frequencies. This run
shows a quick experimentation with two sets of three notes each.
The variable iwidth takes the values 8, 16 and 24 in turn. In the
first set the rate of the vibrato is 5 Hz, in the second set it
is 2 Hz.

The use of an adder in the instrument allows to switch off the
vibrato by setting iwidth to 0.

(flowchart)
(.orc and .sco files)

