No sound if Engine run as plugin with Juce 7

@dave96 Engine is not outputting any sound if build as Plugin (AU, VST, Auv3/ios ) with Juce 7.
Issue can be reproduced by building EngineInPluginDemo with Juce 7 develop or juce7 branches and specifying TRACKTION_JUCE7=1

Don’t see any errors in the log. Playhead seems to work with juce 7 and shows correct bpm and position for the host.

Issue is not present with commit b0a8bc0ce2a9241c05f47c3a2b9b6b37e8f70513 (same as latest on tracktion_engine develop). Standalone app works without any issues as well.


Hi @dave96,

Can you please shine some light when are you planning to migrate tracktion_engine to use Juce 7 by default. Not just supporting Juce 7 by setting flag TRACKTION_JUCE7=1.

Can you also point me what can I do to troubleshoot this issue? Where to look in tracktion codebase. Which classes to debug?

Ok, it’s taken me a whole day with git bisect to track this down but I’ve finally found a fix here:

It might be worth pointing out to @reuk and maybe others that this break was introduced by this juce commit:

The problem is that we were calling audioDeviceIOCallback which has been fine up until this point but now silently does nothing as the base class implementation is empty. I’ve had to switch to using audioDeviceIOCallbackWithContext with a default context to get the callbacks to be called.
I’m not sure if this is the intended behaviour though, I would have thought this would be a louder breaking change or at least something in the Breaking-Changes doc about it.

I imagine anyone else with custom juce::AudioIODevices will also come across this problem.

As to your question about when JUCE 7 will be the default in the Engine, it really depends how quickly I can migrate the ~0.5m lines of our Waveform codebase to it. It’s a big job and there are all sorts of subtle changes I need to look in to such as the changes to threading, particularly on macOS, repainting on macOS and Windows and a bunch of other things that could potentially be problematic for our users.

Since we released Waveform Free last week, I’ve been trying to get to the backlog of forum posts about Tracktion Engine but it’s slow going as some issues (like this) can take several days.

TL;DR as quickly as I can with high confidence nothing is broken.

Thank you @dave96!
I will switch back to Juce 7.

This issue has confused a few people - sorry about that!

We’ve now removed the old callback function:

Although this is a breaking change, hopefully this will make it easier to update to JUCE 7 without introducing new bugs.

1 Like