This page describes the basic principles and has
suggestions
about how to make instruments that sound like they must have been made with professional equipment. This applies to ZynAddSubFX
or to any synthesizer (even if you wrote it yourself with a few
lines
of code). All the ideas from ZynAddSubFX come from the principles outlined below.
1) The Bandwidth of each harmonic
I am not referring to samplerate, I am talking about the frequency "spread" of each harmonic. This is the most important principle of making instruments that sound good. Unfortunately there is very little documentation about it (I have seen it very briefly described in an old book, I searched on the net about this, but I didn't find anymore - maybe you'll help me?).
Often it is believed that the pitched sounds(like piano,organ,choir,etc.) for a single note have a frequency, it's actually harmonics and nothing more. Many people try to synthesize a sound using an exact frequency+harmonics and observe that the result sounds too "artificial". They might try to modify the harmonic content, add a vibratto, tremollo, but even that doesn't sounds "warm" enough. The reason is that the natural sounds don't produce an exact periodic; their sounds are quasi-periodic. Please notice that not all quasi-periodic sounds are "warm" or pleasant.
The difference between a periodic wave and a quasi-periodic wave
This is a graphical representation of a note with
exact frequency (bandwidth of each harmonic is too narrow; the sound is
periodic). Below this is the spectrum.
This is a graph of a quasiperiodic sound, below is the spectrum (the
bandwidths are exaggerated).
Click here to listen to a sample of
periodic wave folowed by a quasi-periodic one.
A very important thing about the bandwidth is that
it has to be increased if you'll increase the harmonic's frequency.
If the fundamental frequency is 440 Hz and the bandwidth is 10
Hz (that means that the frequencies are spread from 435 to 445 Hz),
the
bandwith of the second harmonics (880Hz) must be 20 Hz. A simple formula to
compute the bandwidth of each harmonic if you know the bandwidth of the
fundamental frequency is BWn=n*bw1
; n
is the order of the harmonic, bw1 is the bandwidth of fundamental
frequency
and BWn is the bandwidth of the n'th harmonic. If you do not increase
the bandwith according the frequency, the resulting instrument
will (usually) sound too 'artificial' or 'ugly'.
There are at least three methods of making good sounds
with the above considerations:
a) by adding slightly
detuned
sounds (in ZynAddSubFX it is called ADsynth). The idea is not
new:
it has been used for thousands of years in choirs and ensembles. That's why
the choirs sounds so beautiful.
b) by generating white
noise,
substrating all harmonics with band-pass filters and adding the results
(in ZynAddSubFX it is called SUBsynth)
c) by "drawing" the above graph
that represents the frequency amplitudes on a large array, put random
phases and do a single IFFT for the whole sample
2) The randomness of the sound
The main reason why the digital synthesis sound
too "cold" is because the same recorded sample is played over and over
on each keypress. There is no difference between a note played the first
time
and second time. Exceptions may be the filtering and some effects, but
these are not enough. In natural or analogue instruments this doesn't
happen
because it is impossible to reproduce exactely the same condidtions for
each note. To make a warm instrument you have to make sure that it sounds
slightly different each time. In ZynAddSubFX you can do this:
a) In ADsynth, set the "Randomness" function from
Oscillator Editor to a value different than 0 or change the LFO's start
phase to the leftmost value
b) In SUBsynth, all notes already has randomness
because the starting sound is white noise
c) In PADSynth, I start the sample from random
positions on each keystroke
3) Decrease the amplitude of higher harmonics on low
velocity notes
All natural notes have this property, because on
low velocity notes there is not enough energy to spread to higher
harmonics.
On artificial synthesis you can do this by using a lowpass filter that
lowers the cutoff frequency on notes with low velocities or, if you use
FM, by lowering the modulator index.
4) The spectrum should be almost the same
according
to the frequencies and not to harmonics
This means that, for example, the higher the
pitch is, the smaller the number of harmonics it will contain. This happens in a
natural instrument because of the resonance.
In this case there are many instruments that don't obey this, but
sound quite good (example: synth organ).
If you record the C-2 note from a piano and you play it at a very
high speed (8 times), the result will not sound like the C-5 key from the
piano. The pitch is C-5, but the timbre is very different. This is
because
the harmonic content is preserved (I mean the n-th harmonic will have
the
same amplitude in both cases) and not the spectrum (eg. the
amplitudes
of the harmonics around 1000 Hz are too different from one case to
another).
In artificial synthesis you can use filters to add
resonance or FM synthesis that varies the index according to the
frequency.
In ZynAddSubFX you can add the resonance:
a) In ADsynth, use the Resonance, a high harmonics
sound content and filters or FM.
b) In SUBsynth, you can add some harmonics
and use the Global Filter