01 | Basic Instruments | 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 |
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.
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.
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.
Orcestra and Score
WAV and mp3 outputs.
01_01_1B
additional parameters: if1, if2
This score run plays the Manhattan blues on tape M1485 with a sound reminiscent of an electric piano.
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)
Orcestra and Score
WAV and mp3 outputs.
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)
Orcestra and Score
WAV and mp3 outputs.
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)
Orcestra and Score
WAV and mp3 outputs.
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)
Orcestra and Score
WAV and mp3 outputs.
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)
Orcestra and Score
WAV and mp3 outputs.
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.
Orcestra and Score
WAV and mp3 outputs.
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:
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 decayExamples:
iatdec = .01 ends at 1/100th of the max amplitude iatss = 2 exponentially strives to a point iamp*2
Orcestra and Score
WAV and mp3 outputs.
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.
Orcestra and Score
WAV and mp3 outputs.
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 concrŠte. 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)
Orcestra and Score
WAV and mp3 outputs.
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.
Orcestra and Score
WAV and mp3 outputs.
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)
Orcestra and Score
WAV and mp3 outputs.
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)
Orcestra and Score
WAV and mp3 outputs.
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.
Orcestra and Score
WAV and mp3 outputs.