Modular VST environment for building synthesizers and audio processors.
Find latest builds using the below AppVeyor badge
VOSIMSynth is a fully modular audio synthesizer with a focus on speed, audio quality, and ease of use.
VOSIMSynth's UI strives to make the common use case simple (and default) while allowing flexibility to those who want to delve into the details.
For example, by default, an envelope's attack phase is triggered by a MIDI noteOn event, and their release phase by a MIDI noteOff event. However, an arbitrary signal can be hooked up to the envelope's "gate" input in order to override that behavior. The envelope will automatically detect rising and falling edges of the gate signal in order to trigger an attack and release phases. This allows envelopes to be triggered and released by LFO's, MIDI CC values, other envelopes, or any other signal you feel like using.
The VOSIMLib directory contains the core code for the real-time audio thread. It creates and maintains the signal flow graph and contains all of the DSP code for each unit. It has no dependency on the VOSIMSynth directory, so it may be compiled independently and used in other projects to quickly create processing graphs that may be edited during run-time.
The VOSIMSynth directory contains the application/VST code, including the GUI.
Due to a small chunk of platform-specific GUI code, VOSIMSynth is only compatible with Windows, at least for the moment. The rest of the code has been written with platform independence in mind, and porting to other environments is planned.
Most of the dependencies are included in the repository. Be sure to grab all the submodules, either by cloning the repo recursively, or running:
git submodule update --init --recursive
The dependencies that you are responsible for (i.e. not included in the repo) are listed below.
VOSIMSynth depends on some components of the Boost library. Prior to running CMake, set the BOOST_ROOT
environment variable to the location where Boost lives, or simply run cmake-gui .
in the build directory and
configure the build options graphically.
VOSIMSynth requires some wavetables to be pre-generated before being built. These are massively oversampled windowed sinc filters that are used to perform interpolation, filtering, and resampling during runtime.
A python script will be executed automatically during the build phase in order to generate this data. You must have numpy and scipy installed in order to execute the script.
If you are having trouble installing these dependencies on Windows, check out Christoph Gohlke's awesome
collection of windows binaries. Download the appropriate versions
of NumPy and SciPy for your system, then install them with pip install <path_to_whl_file>
.
VOSIMSynth uses CMake to generate build scripts. It has been tested with Visual Studio 2015 and Visual Studio 2017.
For example, to generate the x86 project files for Visual Studio 2015 inside a folder named "_build32":
mkdir _build32
cd _build32
cmake .. -G "Visual Studio 14 2015"
To configure the build (e.g. to set up the directories your dependencies live in), run
cmake-gui .
You can also pre-configure the build using environment variables.
After successfully generating the project files, you may open the solution using Visual Studio and work normally, ignoring CMake ever existed,
Alternatively, build directly from the command line:
cmake --build . --config Release