HOA Technical Notes - B-Format Rotation

Once you have a B-Format audio stream, it's possible to manipulate it in various ways. For instance, you can rotate it using matrix multiplication. This moves all material in the soundfield.

Conventions

This page includes second order rotation matrices for FuMa-encoded B-Format for each of the three axes (X, Y and Z) given a rotation angle. It's possible to form other rotations by combining these. These are left-hand-side matrices (and so should be applied as out[t]=matrix*in[t]).

These rotations are sometimes known as "rotate" (Z), "tilt" (X) and "tumble" (Y) in the Ambisonic literature, or "yaw" (Z), "pitch" (Y) and "roll" (X).

For first order rotation, just use the top left corner four-by-four matrix. For higher order rotations, we recommend converting to N3D and rotating using that format.

For rotations at up to third order, you can use the TOA Rotation plugin from the TOA Core VST plugin library.

X Axis Rotation ("Roll")

This rotates around the X (front/back) axis. This is sometimes known as "tilt" in the Ambisonic literature.

W In X InY InZ In R InS InT InU InV In
W Out 1 000 00000
X Out 0 100 00000
Y Out 0 0cos(a)-sin(a) 00000
Z Out 0 0sin(a)cos(a) 00000
R Out 0 000 (3/4)cos(2a)+(1/4)0(3/4)sin(2a)(3/8)cos(2a)-(3/8)0
S Out 0 000 0cos(a)00sin(a)
T Out 0 000 -sin(2a)0cos(2a)-(1/2)sin(2a)0
U Out 0 000 (1/2)cos(2a)-(1/2)0(1/2)sin(2a)(1/4)cos(2a)+(3/4)0
V Out 0 000 0-sin(a)00cos(a)

Y Axis Rotation ("Pitch")

This rotates around the Y (left/right) axis. This is sometimes known as "tumble" in the Ambisonic literature.

W In X InY InZ In R InS InT InU InV In
W Out 1 000 00000
X Out 0 cos(a)0-sin(a) 00000
Y Out 0 010 00000
Z Out 0 sin(a)0cos(a) 00000
R Out 0 000 (3/4)cos(2a)+(1/4)(3/4)sin(2a)0(3/8)-(3/8)cos(2a)0
S Out 0 000 -sin(2a)cos(2a)0(1/2)sin(2a)0
T Out 0 000 00cos(a)0sin(a)
U Out 0 000 (1/2)-(1/2)cos(2a)-(1/2)sin(2a)0(1/4)cos(2a)+(3/4)0
V Out 0 000 00-sin(a)0cos(a)

Z Axis Rotation ("Yaw")

This rotates around the Z (up/down) axis, i.e. horizontally. This is sometimes known as "rotate" in the Ambisonic literature.

W In X InY InZ In R InS InT InU InV In
W Out 1 000 00000
X Out 0 cos(a)-sin(a)0 00000
Y Out 0 sin(a)cos(a)0 00000
Z Out 0 001 00000
R Out 0 000 10000
S Out 0 000 0cos(a)-sin(a)00
T Out 0 000 0sin(a)cos(a)00
U Out 0 000 000cos(2a)-sin(2a)
V Out 0 000 000sin(2a)cos(2a)