_____ _____ ___ __ _ _____ __ __ __ ____ ____
/ \\_ \\ \/ / |/ \| | | | \_ \/ \
| Y Y \/ /_ \> <| | Y Y \ | |_| |/ /_ \ Y \
|__|_| (___ /__/\__\__|__|_| /__|____/__(___ /__| /
\/ \/ \/ \/ \/
Maximilian is a cross-platform and multi-target audio synthesis and signal processing library. It was written in C++ and provides bindings to Javascript. It's compatible with native implementations for MacOS, Windows, Linux and iOS systems, as well as client-side browser-based applications. Maximilian is self-contained, and compiles without dependencies. The main features are:
- sample playback, recording and looping
- support for WAV and OGG files.
- a selection of oscillators and filters
- enveloping
- multichannel mixing for 1, 2, 4 and 8 channel setups
- controller mapping functions
- effects including delay, distortion, chorus, flanging
- granular synthesis, including time and pitch stretching
- atom synthesis
- real-time music information retrieval functions: spectrum analysis, spectral features, octave analysis, Bark scale analysis, and MFCCs
- example projects for Windows and MacOS, susing command line and OpenFrameworks environments
- example projects for Firefox and Chromium-based browsers using the Web Audio API ScriptProcessorNode (deprecated!)
- example projects for Chromium-based browsers using the Web Audio API AudioWorklet (e.g. Chrome, Brave, Edge, Opera, Vivaldi)
- will run on embedded systems (e.g. ESP32, Pi Pico)
Examples demonstrating different features can be found in the maximilian_examples folder. Each example is in a subfolder, and can be built as follows using cmake:
cd [example folder]
mkdir build
cd build
cmake ..
make
./maximilian
A transpiled javascript version of the library is included in this repository, for both Script Processor Nodes and AudioWorklets. Try this out at (https://mimicproject.com/guides/maximJS).
To run this on your on site, locally, or on GitHub Pages, check out this repo.
You can run the examples using the 'maximilianTest' XCode 3 project provided.
This is in the maximilianTestWindowsVS2010 folder. You will need to install the DirectX SDK, so that the program can use DirectSound.
g++ -Wall -D__MACOSX_CORE__ -o maximilian main.cpp RtAudio.cpp player.cpp maximilian.cpp -framework CoreAudio -framework CoreFoundation -lpthread
For M1 Mac OS
g++ -Wall -D__MACOSX_CORE__ -o maximilian main.cpp RtAudio.cpp player.cpp maximilian.cpp -framework CoreAudio -framework CoreServices -framework AudioToolbox -framework AudioUnit -framework Accelerate -lpthread
./maximilian
With OSS:
g++ -Wall -D__LINUX_OSS__ -o maximilian main.cpp RtAudio.cpp player.cpp maximilian.cpp -lpthread
With ALSA:
g++ -Wall -D__LINUX_ALSA__ -o maximilian main.cpp RtAudio.cpp player.cpp maximilian.cpp -lasound -lpthread
With Jack:
g++ -Wall -D__UNIX_JACK__ -o maximilian main.cpp RtAudio.cpp player.cpp maximilian.cpp
pkg-config --cflags --libs jack
-lpthread
then:
./maximilian
Maximilian works well with the OpenFrameworks C++ creative coding toolkit (http://www.openframeworks.cc).
In the ofxMaxim directory you will find examples to run in Windows, OSX and iOS, including FFT analysis and granular synthesis.
You can install the ofxMaxim addon by copying the ofxMaxim/ofxMaxim folder into your openframeworks addons directory.
Important: when using Maximilian on OSX, link against the Accelerate framework.