BUILD: Building tests (and later, plugins) is now an option

It is now explicitly trigged by a command line argument.
Required Cmake variables are declared in the main CmakeLists.txt file,
and may be empty.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
BUILD: Removed MSVC specific warnings about checked iterators

Msvc offers various iterators checks when using stl algorithms.
These are not used here and cause various useless warnings.
They are removed here.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
Common: Moved C standard include to the top of the file

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
TESTS/COMMON: Moved min/max allowed key notes declaration

These declarations are going from tests to common files in order
to be used in the main synthesizer code.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
GENERATORS: Created a generator factory based on generated signal form

An enumeration with all available waveforms has been created,
and may be submitted to the factory in order to instantiate the proper
signal generator object.
It will allow to select which algorithm is actually being used for
each waveform.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
GENERATORS: Making the generator interface base classs virtual

This reinforce the fact that this class is made to be derived.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
GENERATORS: Minor comment fixes

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
TESTS: Moved static variable declaration into implementation file

Prevents multiply defined symbol.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
TESTS: Fixed too restrictive assert in random generator

In the ranged random generator, the min may be equal to the max.
It leads to a constant random output and is semantically correct.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
TESTS: Fixed includes

Some of them were unnecessary, others were out of order.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
SYNTHESIZER: Added a VCO

This unit wraps a generator and can be used in the synthesizer.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
SYNTHESIZER: Added a Mixer

This unit manages multiple VCOs and can be used in the synthesizer.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
SYNTHESIZER: Added a Synthesizer and various utilities for it

This is the main object, the only interface between the user
and the synthesis control.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
TESTS: Moved midi note-to-frequency from tests to synthesizer code

It may be used internally in the synthesizer itself, hence this move.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
TESTS: added the first synthesizer test

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
PLUGIN: Added all plugin folders, with their Cmake files

This should allow to at least compile a VST plugin on Windows.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
PLUGIN: Added all plugin base source code

This should allow to at least compile a very simple working VST synth.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>
GENERATORS: Minor style fix.

Signed-off-by: Gama <misept.dieseneuf@gmail.com>