nodal - C++ Audio Unit Generator library
The library has been successfully used for the following platforms:
- Mac OS
- Android (NDK)
For all these platforms, the library is able to be used online or as an audio file rendering tool.
The binary for the chosen platform are in the releases section. Please note that builds are not made for each commit, so for the latest updates it’s better to build from source.
Structure of the repository
The main GIT repo uses submodules to download other libraries for dinahmoe. This arrangement has been kept because it allows to keep the same directory structure as in Dinahmoe’s private projects. These repos, that can be used independently, are:
- dm-audioengine: the bare audioengine itself
- dm-audiomidi: classes to read-write audio files
- dm-utils: a collection of C++ utility classes, used by mostly all other libraries
- dm-cmake: a collection of CMake scripts
- dm-dsp: digital signal processing building blocks, used by the audio engine
- dm-log: a simple logging facility
After having cloned this repository, and cd’ed into the repo’s directory, update the submodules, issuing
git submodule init
git submodule update
This will download the dependencies mentioned above.
You must have cmake installed. From the main directory, you can issue the following commands in the terminal
mkdir build && cd build
cmake -DNODAL_INSTALL_PATH=../nodalCompiled ..
This will compile and build the static library, merging all the single libraries into one, libnodal.a. The library and the headers will be found at the install path.
The examples directory contains a few examples of using the library with Openframeworks, JUCE, PortAudio, and libsndfile for offline bounce.
The directory “Extras” contains instruments and effects built using the basic “vanilla” building blocks provided by the audio engine. It can be compared to the objects contained in the “Extended” version of pure data.
The interface to the librarier resembles the one of the WebAudio API. The AudioContext is the main class on which the user operates on: it holds the current status of the node graph,