An open source, Minimoog-like digital synthesizer
OpenMini is a modern C++ implementation of a Minimoog-like digital synthesizer. It aims at showing 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 third parts as follows:
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 build the test, set the environment variable GTEST_ROOT to the directory where you put the GTest sources. On Linux, this can be done as follows:
sudo apt-get install libgtest-dev
export GTEST_ROOT=/usr/src/gtest
On Windows, this is done by going to Control Panel->System->Advanced system settings->Environment variables.
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. To build the implementations, set the environment variable JUCE_ROOT to the directory where you put the JUCE sources. On Linux, this can be done as follows~:
cd ~/
mkdir juce
cd juce
git clone --depth 1 git://github.com/julianstorer/JUCE.git
export JUCE_ROOT=~/juce/
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
Lastly, 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.
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 ../
Note that both these flags can be used simultaneously.
OpenMini is under GPLv3.
See the COPYING file for the full license text.