- Notifications
You must be signed in to change notification settings - Fork64
Easy and efficient audio synthesis in C++
License
TonicAudio/Tonic
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 processorsTriangleWave tone1 = TriangleWave();SineWave tone2 = SineWave();SineWave vibrato = SineWave().freq(10);SineWave tremolo = SineWave().freq(1);//that you can combine using intuitive operatorsGenerator combinedSignal = (tone1 + tone2) * tremolo;//and plug in to one anotherfloat 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 exampleshere
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.
SeeofxTonic for examples in openFrameworks.
If you are interested in contributing to Tonic, please visit ourWiki and read the guidelines.