Modular audio synthesis |
Modular audio synthesis principles [Professional] [Composition Pro] The principle of audio synthesis is to create a sound
artificially. In the case of a software synthesizer, the
computation of the sound is done by software. The audio signal is
computed and sent to the sound card so that you can hear it. There are several methods to synthesize a sound and you can
virtually create any sound. You can try to synthesize existing
sounds, to modify them or just create new, unexpected sounds
completely freely. It opens the door to sound creativity, in the
same way than music composition opens the door to music
creativity. The word modular means that the synthesizer can be
built with construction blocks. You assemble elementary blocks,
each one with a precise function, to create any combination you
can imagine. To master this concept, you should know two things.
The first is how you can combine elementary modules into more
complex structures. And the second is a description of the role
of each elementary module, so that you understand when and where
to use them. Only then can you start combining them and
constructing a sound with some insight of what you want and how
to create it. So let us start with how to combine different
modules. This part of the library contains several prepared
synthesizers. As you can see, they are organized as a
structured hierarchy of virtual instruments and folders. This is a simple structure, composed of three basic
modules. They are connected together by virtual cables. A module may have outputs and/or inputs. An input is
represented as a small green square To play the notes coming from the score and to send the
audio signal to the sound card, this virtual synthesizer must
be able to receive and send signals outside of itself. This
is why a module must also contain input and output ports. An
output port is displayed as We will now learn how to add a module, a port and how to
connect them together. Do not pay much attention for the moment
to the meaning of the different modules. You should just
understand how to connect them together. The rest of the lesson
will go into much more detail about each and every module. Adding a module or a port is done with a right-click of
the mouse in the background of the window. A list of menu
items appear. The position of the created module is at the
location on which you right-click with the mouse, so you
should first move the mouse where you want the module to
appear. As an exercise, we will construct a synthesizer with two
modules, one input port and one output port. Then we will
connect them together. You can select which MIDI parameter you want to influence
the sound creation. We will here need the note item,
which is almost at the bottom of the list (use the vertical
scroll bar). Select it and click on OK. The MIDI
input port is displayed, also showing the name of the
parameter it represents (Note): The Note MIDI parameter is used any time you want
the sound to be in tune with the notes played on the keyboard
or from the measures of a score. This is the most common
case. But you would not need it for instance for natural
noises as thunder, wind, special effects,... as this would
not make sense playing a melody with such sounds. Notice that you can move a port by clicking in its main
square (here yellow) and moving the mouse. Release the mouse
button when you want to fix its position. You can also move a module inside the window, by clicking
in its background (but NOT in the gray or yellow sliders) and
moving it. The graphic position of modules and ports will not
affect the sound itself. The idea is that when you combine
several modules, you may want to organize them graphically to
have a clearer idea of how they are connected. Do this now to connect the Note port to the Note
input of the module. You should now have: When you move a module inside the window, all connected
ports will move with it. But you can still move the port
independently. You are now able to add and connect modules and ports. Here is
a set of operations you will need while assembling modules
together. Generators [Professional] [Composition Pro] The generator modules are used to create a sound. This sound
may be a basic wave form or a sampled sound. Most generators may
be modulated by another signal. This means that the sound it
generates will be influenced by an input signal, coming for
instance from another generator. In this section, we will examine
all generator modules. You should have read the first section of
this lesson, so that you know how to add, remove and connect
modules in a virtual instrument. Note generator Create a new virtual synthesizer. In its editing window,
add a MIDI input port (with Note parameter), an
output port and a Note generator from the background
menu. Connect them together so that you will have: If you play some notes, you will hear a pure sine wave. It
is the purest sound that you can hear, as it only have one
frequency and no harmonic (an harmonic is a multiple of the
original frequency of a sound). Any physical instrument will
emit harmonics with its main frequency, and these harmonics,
as well as their evolution in time, give it its unique sound
color, also called the timbre. A sine wave is pure, but not
very interesting, as it color is very poor. It is however
used to create more complex sounds. You may also hear a "click" sound effect when
you start or release the note. This is because the sound is
switched on and off with an abrupt transition. We will see in
the later in this lesson how to smooth this by using
enveloppes and amplitude modulators. The module displays five parameters that can be modified. The minimal value is displayed as a dark gray band,
but any other value is colored in yellow proportionally. Play a few notes and change these parameters at the
same time. You will hear their effects on the sound. When you double-click in the background
of the module (not in a dark or yellow parameter area), the
following dialog appears: The upper slider is used to detune the frequency slightly.
It is most usefull when you use two or more generators and
that you want to create a slow beat between them. The other
three sliders are used to create a volume level that depends
on the note pitch (or from the note position on a piano
keyboard). You can for instance create a sound signal that is
louder in the lower part of the keyboard and that is
progressively damped when the note pitch is higher. For this
example, you can move the sliders this way: The bottom slider is used to position the central point of
the graph on the keyboard. 60 is the equivalent of the C3
note, the note below the staff in the G key. Try playing
notes on a keyboard and hear their difference in volume. We will now see how one module can modulate another
module. The left note generator is called the modulator
as it will influence the other generator. We say that the
other generator is modulated by the first generator. Now you can play a note and start increasing slowly the
level of the HF Modulation parameter of the second
module (the one to the right here above). You will hear the
sound quality change. As a general rule, the more you
modulate a sound the richer its timbre will become, meaning
that there are more and more harmonics present at the output.
It can be easily overdone, producing a sound that becomes
aggressive. It all depends on the effect you want that sound
to achieve. Now you can also modify the frequency multiplier/divider
of the modulator. Any parameter change that you do on the modulator
will influence the timbre of the modulated
generator. You can change both wave forms and frequency
parameters. If you use the keyboard amplitude dialog seen
above, you can create a modulation that depends on the
keyboard range. One current use is to increase the modulator
amplitude in the lower part of the keyboard and decrease it
as the sound gets higher. The modulation inputs of the modulator are not connected,
so changing these modulation values will have no effect. With only two generators, you can already explore a lot of
parameter combinations to create original sounds. This is
however only the beginning... You should take some time to
explore various values for these parameters. The more you
understand how simple modules work, the better you will
master more complex structures, as these basic principles
apply for any combination of modules. Free generator A free generator generates one specific central frequency,
whathever note is playing. It is more used to create special
effects. Playing a note on the keyboard gives you one fixed
frequency. You can adjust the frequency with the Basic
frequency and Fine tune paramters. You can
modulate it with an input signal and change its basic wave
form. Low frequency generator This generator is the same as the Free generator,
except that its frequency range is different. It is more
intended to generate slow modulating signal. Add a Low
frequency generator and connect it as follows: This module defines the period rather than the frequency.
The period is expressed in milliseconds (1000 milliseconds is
1 second). The default value is a cycle of one second, which
is the time to go through one full wave form. Play a note and increase slightly the modulation level of
the free generator. You will notice the central frequency
starting to fluctuate at the rhythm of the low frequency
generator. You can change the basic period and wave form of
the low frequency generator, as well as the central
frequency, modulation level and wave form of the free
generator. Take some time to explore combinations of these
parameters. White noise generator This module generates what is called a white noise.
As the sun light contains in itself all the colors of the
rainbow, the white noise contains any possible frequency of
sound. Used alone, it is quite monotonous. It is often used
in combination with filters and other generators, to
introduce a random component in a sound. This module has two outputs for stereo. You can adjust
its output level. Play a note and you will hear it. Envelopes [Professional] [Composition Pro] An envelope is a relatively slow signal (compared to the speed
of variation of an audible sound) that is intended to modulate
another module. This modulation can influence frequency,
amplitude or any other input of a module. Pizzicato offers two
envelope generators. Envelope An envelope is a one time signal. Its shape is displayed
on top of the module. The following parameters are used to
modify the shape of the envelope. Set the Modulation of the free generator to 100
%. The output of the envelope modulates the free generator
frequency. Now try to modify the various envelope parameters,
for instance: While changing the various parameters, play some notes and
hear the envelope influence on the pitch that is generated. You can see that the Velocity input of the
envelope has been connected to the velocity MIDI
parameter. This will link the envelope output signal to the
velocity of the note. Hitting the keyboard faster will
produce an envelope with a higher amplitude. Free envelope A free envelope shape can be drawn with the mouse.
Double-click the free envelope module (in its blue
background) and you will see the following window: You can freely draw with the pen tool or draw lines with
the line tool that you see in the upper part of the window.
The duration of the envelope is divided by 3 vertical bold
lines, the last one being blue. The last quarter is in fact
the part of the envelope that happens after the note is
released. You can draw in the two sections. When you play a note on the keyboard, the first three
quarter of this envelope creates a signal at the output of
the free envelope generator. At that point, if the note is
still being held, the envelope keeps the value at the blue
vertical line up to the time when you release the note. Then
the last section of the envelope is generated. Try to design an envelope with a free shape, as for
instance: When you close this window, the free envelope module
displays the shape of the envelope: Two parameters may be specified: the attack duration
and the release duration. Both are expressed in
milliseconds and represent the duration of the first and
second sections of the free envelope. You can modify these
value and play some notes on the keyboard. You can call the
envelope shape window and modify it and then listen again to
the resulting sound. Modulators and other operators [Professional] [Composition Pro] The following modules take one or more inputs and process them
to create one or more output. They do not generate signals but
are used to process and combine existing signals. They are
building blocks to create more sophisticated virtual instruments. The Amplitude Modulator An amplitude modulator is used to apply an envelope to a
signal. If the amplitude of a sine wave is suddenly increased
from zero to maximum volume and if it is ended suddenly by
setting the signal to zero, you will hear the note starting
and ending with a "click" noise, which is not very
natural. You can use an envelope to reshape the sine wave
amplitude so that the sound appears and disappear smoothly. If you play a note, you will hear that the
"click" is no more present, as it was in the
example given previously for the note generator. An amplitude modulator has a modulation input. The input
signal will act as a volume controller. This influence may be
adjusted by the Modulation parameter. You can also adjust the input and output values of the
module. The first parameter is the number of inputs, from 1
to 16. You can try to modify the parameters of the envelope, to
hear the impact of the shape of the envelope. The Delay A delay is a module that will only delay the signal by
some specified duration. It can be used as an echo. The
module is displayed as: The Delay value may be adjusted from 0 to 1000 ms
(= 1 second). The Delay amplitude is the level of the ouput
signal that has been delayed. The Direct amplitude is the level of the input
signal that is transmitted directly to the output, not being
delayed. This is used so that the module can not only delay
the signal, but also transmits the original signal itself. The Loop amplitude is the level of the delayed
signal that is sent back to the input again. This creates a
multiple echo, as the first delayed signal will go back into
the input, be delayed again and get to the output, then again
fed back into the input, each time with a lower amplitude.
You should not reach too close to 100 %, as the signal will
then stay in the loop forever. The Modulation input may be any slow signal, for
instance from an envelope or a low frequency generator. It
will modulate (modify) the delay value around the fixed
value. This influence may be adjusted by the corresponding
slider. By using a slow sine wave in a low frequency
generator and by setting the delay very short, you can create
a phaser effect. By increasing the modulation level, you can
create a vibrato on any non-vibrato instrument. The Operator An operator is a mathematical function displayed as: It will take two inputs to create one output. You can
select the type of operation by clicking on the Type of
operation parameter area and you can have a choice
between Addition, Subtraction, Multiplication
and Absolute value. The two input signals are
combined with the selected mathematical operation and the
result is available on the output. The Sampler This sampler is sometimes called the Sample and hold
module. It is displayed this way: The purpose is to sample (= take the value of) an input
signal and to transfer it to the output and hold it there,
even when the input signal continues to vary. This transfer
is done each time that another signal (the threshold) reaches
a certain level. This threshold level may be adjusted. By
creating for instance the following setup, you have a random
frequency generator: The Amplifier An amplifier is used to mix several inputs together and to
amplify or attenuate the resulting signal. It may have from 1
to 16 inputs: Each input as well as the output, have an independent
volume control. The Multi Delay This module is similar the single delay module, but it can
generate a series of delays. It is an experimental module. The Number of echoes can be defined. The First delay specifies the shortest delay that
will be used. The Delays range establishes the range within
which the other delays will be distributed. For instance, if
the first delay is 100 ms and the range is 200 with a total
delay of 3, the 3 delays will be respectively 100, 200, 300
ms. The amplitude of the various delayed signals may
be scaled from First delay amplitude to Last
delay amplitude. A Random delay factor may be added. This will
vary the above calculated delays in a random way. The global echo signal level may be adjusted by the Echo
level parameter. The Feedback level defines how many of the output
signal is sent back to the input, to create a looping echo. Filters [Professional] [Composition Pro] A filter is a module that will amplify or attenuate some
frequencies of the input signal more than others, resulting in a
signal that has a different timbre or tone quality. It is used to
modify an existing sound in very different ways. The way it will
be changed depends of the frequency response curve of that
filter. Pizzicato has a powerful filter design tool. A white noise is applied at the input and is filtered. A
low frequency generator can modulate the filter. A filter has
three parameters: The Gain is the general volume level of the input
signal to the output signal. The Frequency is the reference frequency of the
filter response. The Modulation level is how the frequency of the
filter will be modulated by the modulation input signal. You can try to play a note and modify the frequency
parameter. Then increase progressively the modulation level
and hear how it influences the sound. This dialog provides three methods to design a filter.
Some aspects of this dialog require a solid mathematical
background to really understand how this works. We will
however not go into such details. If you really want to
understand everything about filters, you will be able to find
out a lot of information about digital filters and signal
processing on the Internet. However, this is not needed to
use this dialog in a practical way. The first thing you have to know about this dialog is the
frequency response curve. It is displayed in the upper part
of the dialog. The horizontal axis represents the frequencies
(low pitch to the left, high pitch to the right). You could
also see it as a piano keyboard. If a signal (voice, music,
any sound) is transmitted through a filter, the various
component frequencies of that sound will be transmitted
according to the amplitudes shown on the graph. The vertical
scale represents how the signal will be amplified. A zero
value (if the check box Amplitude in dB is active)
means that the level will stay the same. A positive value
means it will be amplified and a negative value means it will
be attenuated. If you disable the Amplitude in dB
check box, the amplitude will be expressed as a multiplying
factor, 1.00 meaning same level, less than 1.00 being
attenuation and more than 1.00 being amplification. Two sliders (vertical and horizontal next to the graph)
may be used to zoom both scales in and out. This graph really represents the specification or the
identity card of the filter, as it defines the way
frequencies will be treated. The first way to use this dialog is to select one of the
predefined filters in the Filter type frame. You
have 6 simple different filters defined. A High pass
filter is a filter that will let the higher frequencies
go through it and will attenuate lower frequencies. A Low
pass filter does the opposite, by letting the lower
frequencies go through it and attenuating the higher
frequencies. The Order of a filter is how much steep
the curve will be (or the contrast between the high and low
frequency amplitudes). This is defined relative to the
frequency that you can specify in the same frame. The gain
may also be adjusted. You will notice that when you select a type of filter, the
'a' and 'b' coefficients area change their values. These
coefficients are in fact the mathematical equation of the
filter curve. The second method to specify a filter is indeed
to fix these parameters, if you find a filter equation from
some other source. You can enter the coefficients freely if
you select the "---" filter type. These
coefficients are related to the following equation: y[n] = b0 . x[n] + b1 . x[n-1] + ... + bM .
x[n-M] - a1 . y[n-1] - a2 . y[n-2] - ... - aN . y[n-N] where y[n] is the output signal sample value at time n
and x[n] the input signal sample value. Basically, this
equation gives the resulting sample output at any time,
computed according to the input and to the previous input and
output samples ([n-1] being sample before the current one,
[n-2] the one before that one, etc.). You can specify the values of that equation into the
dialog. The first two upper text boxes specify how much a and
b coefficients you use. Then you can click one value on the
list and edit its value to the right of it. You can set b0 as
an independent value. The third way to design a filter (that will also result in
determining these coefficients, but in a more intuitive way)
is the design by Bode's diagram, as displayed in the lower
right part of the dialog. Check the Use Bode's diagram
box. This is a mathematical representation of the frequency
response of a filter. Again, a full explanation of this
representation would go much beyond the scope of this manual.
Here is what you should know about it to create a filter. Here is an example of the kind of diagram you can design: As such a filter can have many poles and zeros, there is
no more "one frequency" to specify. A filter
designed with the Bode's diagram will have its external
frequency parameter replaced by an evolutive parameter that
will enable an external signal (envelope, low frequency
generator) to move the poles and zeros inside the diagram.
Here is how to define this behaviour. This is an advanced
function, for users who really want to create some
interesting sounds. Once you have designed a filter, you can save its parameter to
disk if you to load them back into another filter module later.
To do that, use the Save filter... and Load
filter... buttons. They will call the standard file
save/open dialog boxes so that you can give/select a name for
your filter. Audio samples reader [Professional] [Composition Pro] In contrast to the generator modules that create a sound using
a simple wave form, the following modules create sound by reading
an existing audio WAV file. It can be a single file, played at a
given frequency, or a set of files that represent a series of
notes recorded on a real instrument. The audio and sample readers
are described here. The Audio Reader This module generates a sound signal by reading a specific
WAV file. The following parameters may be adjusted. Try to select an audio file and play some notes. Try to
modify the various parameters to hear their effects. You will
find wave file examples in the DataEN / Libraries / Music
libraries / Audio / Samples, but you can of course use
any of your own wave files. The Sample Reader This module is used as a simple sample player. You can
define a series of WAV files each containing one single
sample and assign it to a keyboard area. We will create here
a simple example. The module receive the note pitch, the
note velocity and can also be modulated, for instance to
create a vibrato. The modulation can be adjusted and the
output volume also. Two ouputs are available, for stereo
sample playback. By default, no zone is defined. We will add one keyboard
zone and assign it to a specific audio sample. If you now click in the blue area of the keyboard, you
will hear the sound of a cymbal. This is a sample that does
not require to loop, as the sound is a percussive effect and
has been recorded from start to end as a wave file. Other
instruments may require what is called a loop. For
instance, if a flute player plays a note, it can be held
quite a long time. There is no need to record a 20 seconds
long note as the size of a sound library would be very high.
So we register for instance a 3 seconds note from a real
flute player and we define two points in time where the loop
start and ends. In the middle of the dialog, you can define the first and
last sample of the audio file that can be used, as well as
the start and end point of the loop. If the loop points are
both set to zero, Pizzicato will not loop. Here is how it works. When Pizzicato plays a note, the
duration of the note is not yet defined. Pizzicato starts
playing the section of the file from the beginning to the
start of the loop. Until you hold down the note on the
keyboard, it will then loop through the start/end section of
the loop. When you release the note, Pizzicato continue
reading the file up to the end. So the flute note can be held
for a longer time than the original sample file. The Create... button is used to create a new
sample file. You can give a name to the corresponding new
audio file, which will be empty. The Edit audio file... calls the Pizzicato audio
editor window so that you can record the audio sample you
want to use. If you define a loop before calling this dialog,
you will see two vertical red lines in the audio file editor.
They represent the sample start and end points. You can move
them or manipulate them with the right-click menu items.
Adjusting the loop of a sound is a very precise activity. To
sound naturally, the loop points must be choosen very
carefully, otherwise the sound playback will create an
artificial beat that is particularly disturbing and not
natural. It may require some work to find the exact points
that render the sound natural. The original frequency is modified by Pizzicato to match
the note you play on the keyboard. To give Pizzicato its
reference, you can specify which frequency corresponds to the
original sample file. You can specify the frequency directly
or by clicking the Note... button to select the
original note on a keyboard. This reference will be used to
modify the audio file playback speed so that the correct note
is heard. If you check the Do not modify frequency
box, Pizzicato will not change the original frequency at all
and play it at its original speed. This is mainly useful for
percussive effects. The New note button is used to add a single note
zone, placed to the right of the last note. It is an easy way
to create a percussion map by adding a note and then
specifying the sample files, one after the other. With the Delete button, the current keyboard zone
is simply deleted. You can click on the Sort button to sort the
keyboard zones in note/velocity order. If you want to see a practical example of this dialog, you
can explore the Conductor view library into Music
libraries / Virtual instruments / Sampled Sounds and
double-click the Percussive effects instrument. Then
double-click the sample reader and you will see a series of
percussion instruments, each one of them assigned to a sample
file. The Sample Reader/Editor This module is similar to the above
module, but it has more parameters to define how the sound
will be played back. It can be created by importing a
SoundFont file and choosing the Editable Sampler
option in the import dialog box. You can of course also
create this module as a new module and fill in all the sample
files, loop points and parameters. The Papelmedia
library included with Pizzicato is available in that form. This dialog is very similar to the sample reader dialog.
Here is a description of the additional parameters. The Original MIDI note is the MIDI value of the
note as it was recorded in the sample file. The Frequency correction is a corrective
multiplying factor used to play the note. It can compensate
for a tuning error, for a different original sampling rate
than the one used by Pizzicato, or any other difference. The MIDI scale influences the way half tones are
interpreted. A value of 100 means that half tones are
standard. This value is thus expressed in hundredth of a
normal half tone. If you set it to 0, there will be no
difference in frequencies when playing several notes, as
these notes will be separated by 0 hundredth of an half tone.
This parameter can be useful for percussion instruments or
effects, where the frequency difference between consecutive
notes must be reduced or cancelled. The seven Envelop parameters are used to define
an amplitude envelope to the sound. Delay is
measured from the key being pushed to the moment the envelope
will start to increase. Attack is the duration to
reach the peak of the envelope. Hold 1 is the
duration during which the peak is held. Decay 1 is
the time to decrease the level down to the first decay level
and Decay 2 is the time to decrease the level of the
signal to zero when you release the key. Hold level 1
is the peak level (1.0 is the unit value) and Hold level
2 is the level reached after the first decay duration. The Pan value is 0 if the sound is central in the
stereophonic space. A value of -500 sets it completely to the
left and a value of +500 sets it completely to the right. Any
intermediate value is possible to position the sound in
stereo. The Bank and Instrument numbers are only
specified for information. They represent the bank and patch
information normally sent in MIDI to select that sound. These parameters are defined for each keyboard zone.
Sampling a full instrument in quality may require a lot of
work, but with this module, you can create a very natural
playback of a lot of recorded instruments. SoundFont reader This module is created only when you import an external
SoundFont file. You can not edit its parameters, except the
filtering parameter. This last parameter may influence the
final aspect of the sound in good or bad, so it is left to
the user to modify. Tips and advices [Professional] [Composition Pro] You will find here a few advanced tips and advices that you
can use while designing a virtual synthesizer. Drag and drop from the library You will find predefined envelopes, generators and filters
in the library. You can use them as building blocks while
designing a synthesizer. The memory combinations This is an advanced experimentation
tool. The idea is that when you create a synthesizer with
several components in it, you may want to test various
parameter combinations to find the one that are the most
interesting. You may want for instance to try 3 or 4
different envelopes, various levels of modulations, various
frequency values for a filter,... For each sub-module, you
can specify one or more memories. Let us use a practical
example. Create the following setup: An small orange square is visible in
the upper right corner of every module. When you left-click
on it, the memory combination menu appears. Let us say that
you want to hear all combinations of these modules for a set
of values of the HF modulation of the second generator and
the frequency divider of the first generator. Here is how to
prepare this. With that menu, you can also replace
a state in memory, remove a memory, remove all memories,
recall a memory or edit the memory content as a text list
(for each line, you can see the parameter values as a series
of numbers that you can change). When at least one module contains at
least two memory states, you will see the upper part of the
window display a number of combinations: The grayed text box displays the total number of
combinations that may be created by combining all the
memories of the sub-modules. If you select several values for
several parameters, this number can increase very much. You
can now test these various combinations by clicking the
"-" and "+" buttons or directly filling
in the number of the combination you want to test. The
sub-modules will be set to their memory values and you can
play a note to hear how that combination sounds like. Apply an effect to a staff You can create a virtual instrument
module that have one input and one output (or two inputs and
two outputs) and drag that module in front of a staff in a
music score. This is a special case as this module will then
process the sound signal coming from the virtual instruments
of that staff. This can be used for instance for filtering,
echoes or any other special effect. This module will be
visible when the reference marks tool is enabled.
on the left side of the
module and an ouput as a small red square
on the right side of the
module. You can connect an output to many inputs, but only
one output may be connected to a given input.
and represents an external
connection to the outside of this virtual synthesizer,
through which the signal resulting from the synthesizer will
be sent. An input port is displayed as
and represents a signal
coming from the outside of this virtual synthesizer. A MIDI
input port is displayed as
and represents the
influence of any MIDI parameter on the synthesizer. It can be
the MIDI pitch of the note (which will determine the
frequency of the note), the velocity, the volume, any MIDI
controller, the pitch bend,... You may want these signals to
influence the creation of the sound.