Tonic alternatives and similar libraries
Based on the "Audio" category.
Alternatively, view Tonic alternatives based on common mentions on social networks and blogs.
-
r8brain-free-src
High-quality pro audio resampler / sample rate conversion C++ library. Very fast, for both audio resampling and time-series interpolation. -
algore
Tasty C++ class wrappers and mixer implementation for OpenAL built on Chris Robinson's ALURE library. Comes with some crunky LinkedList and ListItem classes which you are welcome to use or change. Use with ALURE, OpenAL, libsndfile / libFLAC etc. Provides a simple and effective programmer interface to easily deal with the ALURE libraries and implements ALURE on Windows and Linux. Effectively uses both the one-off and streaming capabilities of OpenAL/ALURE and via libsndfile libflac et al supports a wide variety of sound file formats. -
Vorbis
Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format. [BSD] -
FMOD
An easy to use crossplatform audio engine and audio content creation tool for games. [Free for non-commercial/Commercial]
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Tonic or a related project?
README
Tonic
Fast and easy audio synthesis in C++.
Prefer coding to patching? Love clean syntax? Care about performance? That's how we feel too, and why we made Tonic.
//Tonic is a collection of signal generators and processors
TriangleWave tone1 = TriangleWave();
SineWave tone2 = SineWave();
SineWave vibrato = SineWave().freq(10);
SineWave tremolo = SineWave().freq(1);
//that you can combine using intuitive operators
Generator combinedSignal = (tone1 + tone2) * tremolo;
//and plug in to one another
float baseFreq = 200;
tone1.freq(baseFreq + vibrato * 10);
tone2.freq(baseFreq * 2 + vibrato * 20);
Here look. With Tonic you can create an awesome synthesizer with just a couple lines of code.
ControlXYSpeed speed = ControlXYSpeed().x(addParameter("x")).y(addParameter("y"));
outputGen = RectWave().freq(100).pwm( 0.1 + (SineWave().freq(0.1) + 1) * 0.1) * SineWave().freq(1) >> LPF12().cutoff(100 + 600 * speed);
This code creates a rectangle wave oscillator, modulates the timbre of that oscillator by a sine wave, adds some slow tremelo, and sends it through a filter. On top of all that, it maps mouse speed to the cutoff frequency.
You can browse more synth examples here
Example Projects
Tonic comes with several example projects, found in the "examples" directory. We plan to add more demo projects for Windows and Linux in the future.
- Several example synth patches in
Demo Synths
- Standalone example using RTAudio for building a non-interactive synth patch that runs from the command line
- iOS example for making synths on your iPhone/iPad.
See ofxTonic for examples in openFrameworks.
Development
If you are interested in contributing to Tonic, please visit our Wiki and read the guidelines.