I’ve found that the UHJ decoder(s?) in ATK distinguish subtly between front and back, and it requires less precision in choosing the kernel for the listener’s specific head and ear shape.
As for reducing computational complexity: 3D ambisonic B-format has 4 channels: “whole” (W, analogous to the Mid in Mid-Side format) and X, Y, Z channels for the deviation from W at left, front and above respectively. If you’re not using up/down, then the Z channel will always be 0. So the ambisonic panner doesn’t have to calculate it – see PanB2, which should be faster than a full rotational matrix.
Decoding the 3D signal using HRTF or UHJ is then:
- Convolve W against W kernels (L and R).
- Convolve X against X kernels.
- Convolve Y against Y kernels.
- And Z…
- Mix the 4 stereo signals.
If Z is 0, then its convolution will be 0. So you can skip it and do 6 convolutions instead of 8. You could steal the logic from ATK and just drop Z.
(Also, in Ambisonics, you can mix the B-format signals directly and decode the mix – convolution is expensive – it will save a lot of CPU time to do 6 convolutions on the mixdown rather than 6 x n sources.)
hjh