Open Source Tracktion Engine Codebase
Tracktion Engine
Over the past 5 years we’ve been refactoring our DAW engine to make it more modular, composable, customizable and simpler to use for a wide range of audio applications. Our aim is to take care of all the difficult and time consuming aspects of developing audio apps so you can focus on building great features and user interfaces people will love.
Engine Overview
Tracktion Engine defines a high level document object model for time based, sequenced audio applications and provides an API to create, modify and play these back. Create an Engine object, our arrangement object, called an Edit, add some elements to it such as audio files, MIDI and plugins, then play it back or render it to an audio file.
Tracktion Engine is provided in JUCE module format making it incredibly quick and easy to setup and start creating projects. We’ve included a bunch of examples and accompanying tutorials along with scripts to build them so you can get up and running with the minimum of fuss. More information can be found in the repository’s README.
Powerful Features
Over 15 years of development has gone in to making and testing an engine capable of almost any modern DAW task and some innovative features unique to us. Using modern C++ we’ve distilled a vast range of functionality in to just 115,000 lines of code. Some of the headline features include:
- A wide range of supported platforms (Windows, macOS, Linux, Raspberry Pi, iOS and Android).
- Tempo, key and time-signature curve.
- Fast audio file playback via memory mapping.
- Audio editing including time-stretching and pitch shifting MIDI with quantisation, groove, MPE and pattern generation.
- Built-in and external plugin support for all the major formats.
- Parameter adjustments with automation curves or algorithmic modifiers Modular plugin patching.
- Racks Recording with punch, overdub and loop modes along with comp editing.
- External control surface support.
- Fully customizable rendering of arrangements.
Check out the GitHub repository to get started.