Tracktion Engine Update?

I know that a significant update for Tracktion Engine has been in the works for some time now.

What is the ETA for this update?

What are the major changes?

Breaking changes?

Thank you!

Yes, the update is to change the audio playback engine. I’ve been working on it for nearly six months. It’s probably been the most difficult thing I’ve ever worked on.
It’s been in public beta builds of Waveform for about a month but I’m still ironing out the last few bugs.

Difficult to say when it will become the only engine in use but you can use it today in your apps by using the tracktion_graph branch and enabling the ENABLE_EXPERIMENTAL_TRACKTION_GRAPH flag.
I’m definitely hoping it will be the only engine in W12 which we normally release in early Feb so I’d say definitely by then but hopefully before.

On the feature level very little. Under the hood PDC will work correctly in all situations as long as you don’t insert a cycle and CPU load should be improved (this is difficult to quantify though as Edit configuration makes a big difference to how much CPU is spent on the Tracktion side of things, how much is spent inside plugins and how parallelisable processing can be).

Hopefully this should be a fairly seamless change but as I mentioned above you can test by switching to the tracktion_graph branch.

Is there something specific you’re hoping for or a change you’re waiting for?

We’ve needed to do this for a long time to build the groundwork for new features in the future but this won’t be a flashy “now you can do this” update I’m afraid…

1 Like

You have answered my questions. I mainly wanted to know if I will need to make any significant modifications to the DAW I am working on. And it sounds like there may be no changes needed, which is good news.

I will try out the tracktion_graph branch and see how it goes. I will let you know.

Thank you!

Good news! Everything looks good except for the tracktion_graph branch not having the new overloads for te::loadEditFromFile() and te::createEmptyEdit(). I cherry picked them into my copy of tracktion_graph branch and everything compiled and ran just fine.

I will do some more testing tonight in my studio. But, for now, it looks good!

Thank you!

My additional testing in my studio went smoothly. So, at least for my DAW, the tracktion_graph branch appears to be working as expected.

Thank you for your hard work!


Well, I spoke too soon! When I read back through your post above, I noticed that I also needed to set ENABLE_EXPERIMENTAL_TRACKTION_GRAPH to true in order to actually compile with the new graph.

Now, when I compile, I get link errors;

include_tracktion_engine_playback.obj : error LNK2001: unresolved external symbol "public: int __cdecl tracktion_graph::LockFreeMultiThreadedNodePlayer::process(struct tracktion_graph::Node::ProcessContext const &)"

Please advise?

I just figured out that tracktion_graph must be added as an additional module in ProJucer, in addition to setting ENABLE_EXPERIMENTAL_TRACKTION_GRAPH to true.

So, everything is fine now. And the testing is still positive. So, far everything works as expected.

Thank you.

I want to learn more about the new Graph modules, in particular the Node class. The documentation is very helpful, and there are a lot of files also inside modules/tracktion_graph/tracktion_graph/ for me to study. My question is: what about the files in modules/tracktion_engine/playback/audionodes/, ie. AudioNode? Do I need to study these as well, or will they be replaced by the new files on the Tracktion Graph branch?

I have been simply using the tracktion_graph module as a replacement for the legacy code. I have not delved any deeper into it yet.

Perhaps @dave96, who is the author of tracktion_graph, can offer some insight.

You may have new possibilities for your unique situation because the new tracktion_graph splits off the graph capabilities as a separate module. Therefore, there may be entry points not accessible before.

I hope it works out for you. Good luck!

Dave is currently on holiday for the next 2 weeks. However the classes in audionodes will be replaced by nodes in the playback/graph folder.