Audio Playback Failure After JUCE 8 update

Short summary: After updating macOS, Xcode, JUCE, and tracktion_engine, my app no longer plays audio, and previous builds are also affected, though they worked fine before.

I encountered an unusual issue while developing my audio testing app using JUCE, tracktion_engine, gRPC, and OSC commands. After updating my MacBook Pro to macOS Sequoia, Xcode to 16.0, and JUCE/tracktion_engine to their latest versions, my app stopped playing audio. This issue also affected previous builds, which had worked without problems before.

I also run the app on a test Mac mini, which has not been updated (it’s still on macOS Ventura). The test machine showed the same issue—no audio playback from the app. Strangely, reverting to older builds (including JUCE 6-based ones) didn’t solve the problem, though these builds used to work. On the test machine, restoring from a Time Machine backup fixed the issue. However, I do not have any Time Machine backups available for my development MacBook Pro.

On my development machine, the problem persists across all builds, even though other audio apps like Apple Music and GarageBand work fine. JUCE’s AudioPlaybackDemo also runs normally, and even swapping my app’s code with the AudioPlaybackDemo code results in correct audio playback.

I’ve tried the following steps to troubleshoot and reset the issue:

  • Restarting the computer.
  • Deleting the following audio-related preference files:
    • /Library/Preferences/Audio/com.apple.audio.SystemSettings.plist
    • /Library/Preferences/Audio/com.apple.audio.DeviceSettings.plist
    • /Users/roman/Library/Preferences/com.apple.audio.AudioMIDISetup.plist
  • Resetting microphone permissions using:
    • tccutil reset Microphone

None of these steps has resolved the issue. There are no errors in the logs, and the app correctly loads audio files (displays thumbnails, transport buttons work), but no audio is played. I suspect there may be another hidden system setting or file causing this, but I’m unsure what to try next. How should I proceed with troubleshooting or cleaning the system?

Knowing that I can reset the issue with Time Machine, I did the following:

  1. Created a Time Machine backup (I used BackupLoupe.app in Turbo mode).
  2. “Infected” the machine with a new version of my app and confirmed that it broke the previous version too.
  3. Made another backup.
  4. Restored the backup from step 1.
  5. Used tmutil compare to check the differences between the backups from steps 1 and 3.
  6. Found another settings file used by tracktion_engine:~/Library/%MyAppName/Settings.xml

It looks like deleting this file fixes the issue. The app initializes a new settings file, which works with both new and old versions of the app.

The relevant code for this file can be found here:
tracktion_PropertyStorage.cpp

Did you diff those files?

Something that happened before (unrelated to JUCE 8) that a machine selected the HDMI output as audio device, which is the least likely to have speakers connected to.

In my app I use AudioDeviceSelectorComponent to select Audio devices, and “Test” output button plays the sound on a correct device.

The old settings file has many lines that are not included in the new file.





Currently, my app works fine on the first run when the settings file is created. Consecutive runs breaks the settings file. But at least I know now how to run the previous builds with no issues. Looks like the difference between no playback and the actual playback is in this change.