OpenMini is a modern C++ implementation of a Minimoog-like digital synthesizer. It rely on the SoundTailor library which provide a simple, cross-platform yet efficient implementation of state of the art low-aliasing audio synthesis algorithms.
As its main goal is education, information sharing and (hopefully) inspiring other people to hack and spread audio synthesis tools and art, it is licensed under GPLv3 license. It basically means that every one can use, copy and modify it with the sole condition that the source code must be made public.
OpenMini is organized in two parts as follows:
- A "synthesizer" part, which is the actual synthesizer boilerplate - managing synthesis algorithms parameterization, user input and so on.
- An "implementation" part, relying heavily on the open source JUCE framework, wraps the latter synthesizer into an actual audio plugin that can easily be used in various audio editor. For now only VST is available, RTAS should follow. Lastly, a standalone version is available using the same code as the plugin but without any dependencies to the proprietary Steinberg's VST SDK.
All of this code is heavily tested using the Google Test Framework. It is documented following Doxygen convention, and strictly follows Google style - cpplint script is included for this purpose. All the code is standard C++: no OS-specific headers.
Note that OpenMini is under continuous integration, building under Linux (using gcc and Clang) at each push with Travis CI. The Windows build is continuously tested as well.
OpenMini build system is Cmake.
Its most basic use would be, from the root directory openmini/ :
mkdir build && cd build
cmake ..
cmake --build .
This only build the library - nothing else. You can also build OpenMini tests and implementations as explained below.
Tests are using the Google Test Framework. To retrieve the library files in order to build tests, the following must be done from the root folder:
git submodule init
git submodule update
Once this is done, you only have to set the flag OPENMINI_HAS_GTEST to ON (caps matters) when invoking cmake:
cmake -DOPENMINI_HAS_GTEST=ON ../
"Implementation" means here the plugins as well as a standalone version of OpenMini. Both are made using the JUCE framework, referenced as a git submodule.
To retrieve the JUCE files in order to build implementation, the following must be done from the root folder:
git submodule init
git submodule update
JUCE requires a few additional dependencies:
sudo apt-get -y install libfreetype6-dev
sudo apt-get -y install libx11-dev
sudo apt-get -y install libxinerama-dev
sudo apt-get -y install libxcursor-dev
sudo apt-get -y install mesa-common-dev
sudo apt-get -y install libasound2-dev
sudo apt-get -y install freeglut3-dev
sudo apt-get -y install libxcomposite-dev
Once all of this is done, you only have to set the flag OPENMINI_HAS_JUCE to ON (caps matters) when invoking cmake:
cmake -DOPENMINI_HAS_JUCE=ON ../
Eventually, if you wish to build the VST plugin, you will have to get the (proprietary) Steinberg VST SDK and set the environment variable VST_ROOT to its location. Then set the flag OPENMINI_HAS_VST to ON (caps matters) when invoking cmake.
OpenMini is under GPLv3.
See the COPYING file for the full license text.