JUCE spatial audio support?

I asked this in the Tracktion open source thread but thought it could use its own top-level discussion.

I am working on a gestural audiovisual live looper named Holofunk that has aspirations to someday work on HoloLens and run in a full spatial audio mode like the new Ambeo app for Magic Leap.

In order to do this I need spatial audio support in my audio library. I don’t want to use Unity’s audio engine as this experience requires the lowest possible end-to-end recording latency (it’s a live looper intended for live performance). But of course Unity’s audio engine already has built-in support for sound spatialization.

What would be pretty amazing would be if Juce could support spatial audio, by adding the ability to refer to HRTFs, assign locations to sound emitters, etc.

Is this anything on the JUCE roadmap? Or is spatial audio something that JUCE plans to leave entirely up to Unity? I really, really don’t want any C# or managed code in my audio hot path and might wind up doing everything as a Unity native audio plugin running JUCE, but I don’t yet understand how that would interoperate with low-latency recording through JUCE, or how Unity native audio plugins interact with Unity’s spatial audio support.

Thanks for any clue-stick-whacking you may wish to provide :slight_smile:

You can interoperate JUCE with other sanely designed 3rd party libraries. Sane basically means you send/receive floating point buffers into the library for processing. Many will work that way but some will want you to use their whole audio graph stack etc and that doesn’t necessarily play well together with JUCE based code.

JUCE itself doesn’t currently have any spatialization processing.

Hi there,
I am the main developer of the open-source IEM Plug-in Suite [1], mainly for the use with Ambisonics. It also features the state-of-the-art binaural decoding of Ambisonics to headphones (not the old virtual loudspeaker approach).

I am happy to share some code/algorithms for something like an Ambisonic module. I also have defined a JSON configuration file ‘standard’, which currently is also used by the SPARTA [1] plug-in suite. I was thinking of opening that license way more, so that even commercial products could use it.

However, the code might not be the best, as I started developing with C++ like 1.5 years ago, but it has improved! :wink:

So maybe, there’s something useful in there.

[1] https://plugins.iem.at
[2] http://research.spa.aalto.fi/projects/sparta_vsts/

Hey Rob,

since you mentioned our Magic Leap app: Feel free to contact us to be part of our Augmented Audio Developers program: