Tracktion Engine now Open Source!

Looks like it can’t find the VST2 headers. You either need to disable VST2 hosting or add the headers to your search path.

WOW! I cannot wait to dive into this.

Thank you Dave and Jules!

This will put a future project idea of mine on a much more near-future schedule.

Very refreshing to see all this work revealed. We will all learn a vast amount of new knowledge about audio/MIDI playback/recording, JUCE, and C++.

Thank you so much!

Wow, this is impressive! Thanks for sharing, Dave!

A couple things:

  • The link to the Readme doesn’t seem to work for me. (both in this post and on the traction website)
  • The git clone instruction on the readme didn’t work for me. Maybe due to the git@github part? Changing it to “git clone --recurse-submodules https://github.com/Tracktion/tracktion_engine.git” did work.

From a quick glance I’m getting the impression that this is geared for people starting out with a new audio application, where Tracktion Engine would be the platform for not just processing audio but also project file management, undo/redo and so forth. Is that a correct take on it? If so, are there any plans to modularize some of those external features out of it leaving a more generic interface to just the audio model and processing? I appreciate that’s much easier said than done but I’m curious none-the-less.

As someone who has spent a lot of time over the past 7 years building his own app and audio engine I can attest to how much effort, skill and talent has gone into building this, and how much value this offers. Congrats to you and Jules and any others involved in getting it released!

Cheers!

1 Like

@Graeme The tracktion engine is a Document Object Model. So it’s like a Browser with API, it’s up to you how to use it.

This is so fantastic, I was just looking for something like this these last 2 weeks and why I was back on this forum, I love synchronicity.

Thanks TeotiGraphix. Yes it does appear to be very flexible and my question about modularity might be misplaced. I just asked because I spotted some things in the code regarding undo management and file management which got me wondering about the scope of the engine.

1 Like

@dave96 Where is the “official” developer support forum to ask fluffy questions about implementation? Github Issues? Or is there a forum?

The ProjectManager is optional. You may want to use it if you plan to export projects that can be opened in Tracktion Waveform. If you are building a product for iOS / Android it may be a selling feature that your users can then open their projects in a desktop DAW.

The UndoManager in the Edit is currently required.

Using the SelectionManager isn’t required unless you want to use the control surface code.

I am planning on doing a example app that shows how to use the engine without an audio device, so that you can integrate it into a plugin for example.

3 Likes

Great Stuff, no question. Of course it will be nice when all the compiler warnings are cleaned up (I always build with “Treat Warnings as Errors” enabled).

The potential here, boggles the mind!

Thanks G-Mon, that’s good to hear, and an interesting note on the Waveform compatibility. I’ll take some time to get to know the system better and see where things line up then. And I’ll look forward to checking out your example app too. thanks!

Yes sorry about the warnings we do too usually. There’s some things that don’t seem possible with the PIP approach and -Werror seems like one of them so our CI didn’t catch the warnings.
I’m cleaning them up now.

As it’s a JUCE module you can use the JUCE forum for discussion. Maybe put it in the “Useful tools and Components” forum?

As @FigBug said, the Project stuff is optional, I have a much better plan for that coming so at the moment I’d advise to stick to Edit only. It has support for in-memory ValueTrees (so no files) and relative file paths (check some of the example projects for how this works).

Undo management is baked in to the model handling but this is such a common use case it’s definitely nice that we handle it internally, it largely comes for free with the ValueTree usage anyway. If you don’t need it or want the memory overhead, pass 0 in as the undo history to the Edit constructor.


There is actually quite a bit you could use outside of the object model classes, all the AudioNode and AudioRenderContext stuff can be used independently. We use this approach for some thing in Waveform that need custom rendering.

Ok cool. Sounds like there’s some options for integration points. I’ll check out the AudioNode and AudioRenderContext classes, and thanks for the tips on the project and undo stuff. I appreciate your point on the usefulness of having the undo baked in. I probably just need to spend more time lining up where things sit in comparison to my own design. It’s very interesting seeing where they line up and where they differ. Anyway, thanks again for the info!

wow, this is pretty amazing

Thanks, I’ve updated all this now.

Maybe not the right place to ask, but since it’s just a small thing…Is the AudioClipBase::setIsReversed supposed to work consistently when toggling the state? I can only make it reverse the clip but can’t toggle it back to cause forward playback. (I tried doing this in the PitchAndTimeDemo.)

https://github.com/Xenakios/tracktion_engine/commit/22c9d43e34ee250d1e2663942ae0d6ff5c8289c2

great stuff!

How much support for multichannel/surround audio is in the engine?

I think this should work, I’ll check when I have a min after ADC.

There isn’t really any multi-channel support at the moment but I do have a plan for how we’ll add it. It’s not too difficult, just time consuming. As it’s not really something we’re targeting for Waveform soon, it’s low priority but if there is a big demand from the Engine users it will certainly make its way up the list!

One of the main difficult things to add will be how to upscale/downscale channels and add multi-channel panners etc. There’s a large number of ways of doing this so we might have to make this user-definable.