For my MSc thesis I developed an algorithm for up-mixing stereophonic audio to an Ambisonic format. The process involves performing a blind source separation operation on the audio using multilevel thresholding. An estimate of the azimuth of each extracted audio source is then used to place the source into an ambisonic sound field.

A recording of a presentation I did on this work can be viewed here.

Originally, the algorithm was developed using MatLab but I have recently ported this process to C++ and built VST/AU plugins via the JUCE framework. I’ve also added a reverb extraction operation prior to the source extraction.

A big thank you to my sister Hazel for providing GUI images. Check out her portfolio here:

I’ve added built versions of this plugin to this page for download. (Note: If the link won’t download automatically then right click and press ‘Save Link As…’)

Windows: (588 downloads) (64-bit)

Mac: (432 downloads) (MacOS 10.9+, Universal Binary)

You can also click here to go to the source code.

If you are downloading and using this plugin please leave some feedback! (I’m also interested to know what projects people are using it for!)

18 thoughts on “Stereo To Ambisonic Upmix Plugin

  1. Richard.hocks says:

    The DMG image on OS10.9 sais that it can’t be mounted ., might try it later this week on OS 10.13 ..
    interested in testing it ., I use offer B format recordings and Hoa elements in film background tracks ..
    I was wondering and love to experiment with using an stereo reverb return upmix it to 3rd order Ambisonics and downmix it back through Flux revolution to Atmos or use Space panner to downmix it to Atmos .. need to see first if it actually works and if it sounds good 🙂

    • Haydon Cardew says:

      Hi Richard, thank you for the interest!
      I imagine this could be due to permission issues, if you try right clicking on the .dmg and selecting open this may help. Unfortunately I don’t have a machine on OS10.9 to test.
      I’d be happy to email you directly a version of the installer (bypassing the .dmg)

  2. Hello there! First of all congratulations on your thesis and for developing this algorithm. I was planning to use it in a dance club with an 8.1 system using reaper for converting the stereo channels from the DJ to ambisonics and then distributing the soundfield with Spat Revolution by Flux. Unfortunately I found out that the latency from the DJ cue to convert to HOA is extremely high (haven’t measured it but I guess more than 50 ms. Do you have any idea how I can overcome this problem?

    Thank you in advanced.


    • Haydon Cardew says:

      Hello Vangelis,
      Sorry for the late reply. Let me look into this and get back to you, I’m assuming that you’re doing a live performance and can’t render audio offline?

      • Hello and thank you for your answer!

        Yes unfortunately we are talking about live performance, so yes latency is an issue.

        • Haydon Cardew says:

          So looking into this more (and re-reading your question) it looks like the latency isn’t from the plugin? But from your setup going from your DJ software to Reaper?
          I haven’t yet found a good way to measure the latency of my plugin in the ‘real world’ but looking at how it works I expect it to be ~18ms (would that still be too much for you?)
          Have you remove my plugin does the latency issue go away? If not, how are you routing your DJ software to Reaper?

  3. Hello Haydon,
    thank you for your substantial contribution on this topic and for sharing it!
    I’m trying to test your plug-in (Windows version) for binaural rendering for headphones. Although it properly installs in the VST3 folder , it doesn’t show up in my host software (Plogue Bidule P64), and when I try to load it in my stand-alone VST host (Blue Cat Audio PatchWork) I get the following error message:
    Could not load “StereoToAmbi”. Please check that this is a compatible 64-bit VST3 plug-in.
    Am I doing something wrong?
    In any case, thank you for this piece of work!

    • Hi, thanks for checking out my plugin!
      Sorry to hear you’re having this issue. I’ve never used ‘Bidule’ but having been interested I’ve just checked their website and found this message “Windows: newly scanned VST3s do not appear in the list
      NOTE: You WILL need to force a rescan” (
      If this doesn’t fix it please let me know and I’ll download the trial version and try debugging

      • Hi, thank you very much for your prompt reply!
        I knew about the requirement to rescan, hence I did that ten times or so to be on the safe side 😉
        Luckily, by chance I stumbled across a hint described for a different plug-in, and that does the trick:
        the latest Microsoft Visual C++ Redistributables need to be installed.
        Now, your plug-in works and first results sound very promising!
        Again, thank you for sharing and supporting!

  4. Hello!
    Was trying to install de windows version, but it only installs an “uninstal” executable.
    Any help?
    Thank you

  5. Hello!
    Just got it working on Windows 10. It could be an anti-virus working (win 8).

    I really like the plugin, especially the phase extraction component. But I was a little lost with all the available channels.
    I’m trying to use a simple quad speaker system, using only with 2 inputs, and having 4 processed outputs. It would be L, R, rL, rR only.
    Any idea?
    Thank you!

    • Haydon Cardew says:

      Great to hear you have got it working. How familiar with Ambisonics are you? My plugin will encode stereo (2 channels) to 3rd order Ambisonic (16 channels). The missing link for you will be an ambisonic decoder suited to your quad setup. Assuming your setup is a standard arrangement there should be a decoder plugin out there which will do the job (decoding 16ch down to your 4ch arrangement)
      By not saving parameters, do you mean when you open and close the interface? (I don’t have Plogue Bidule so haven’t been able to test on it. If it’s free I will look into this)

  6. Interesting, I could not isolate L and R from the 16ch, only R on the second output.
    Yes, when closing the DAW and open in again, the plugin starts with default parameters.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>