Tracktion Engine issues with Xcode 13.4

I downloaded the latest Tracktion Engine sources from Github. I created an ‘Audio’ project using Projucer and added the Tracktion Engine module (Projucer then added a couple of other modules including Tracktion Graph). I did nothing to the project except change the C++ version from 14 to 17 since there are various C++ 17 things in the Tracktion Engine which produce many warnings in Xcode.

When I try to build it I get two errors:

  1. In the MelodyneNode::MelodynePlayhead class, Xcode complains about getCurrentPosition(): “Only virtual member functions can be marked ‘override’”. I know I can turn off such errors, but I think it’s related to the second error. If I remove the ‘override’ keyword I just get the second error.

  2. Xcode errors with "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__memory/unique_ptr.h:728:32: Allocating an object of abstract class type ‘tracktion_engine::MelodyneNode::MelodynePlayhead’.

I noticed that juce::AudioPlayhead::getCurrentPosition() is deprecated. The header says to use getPosition() which is a virtual method. So I wondered if that’s causing the abstract class error above. But if I try to modify the MelodynePlayhead class and add getPosition() with an override it also complains.

Any help would be appreciated!

It sounds like Tracktion is still using JUCE 6, and a quick glance at the github repo seems to support this, since JUCE appears pinned to a commit back in April.

Thanks for the reply. So you’re thinking I’d need to revert back to JUCE 6.1.6?

I’m not questioning you since I’m quite new to JUCE, but it looks to me like the Xcode errors are in Tracktion rather than JUCE—the MelodynePlayhead override issue and the abstract class allocation issue. Since that class wouldn’t be changed going to an earlier version of JUCE, why would that help?

Someone better versed in Tracktion will have to answer, but I’m pretty sure that it should ideally be build against the particular commit they have set in the submodule to be without problems.

You can set the TRACKTION_JUCE7=1 module flag to use JUCE 7 with Tracktion Engine (from the develop branch).

Excellent, thanks! That worked.