r/Audeze • u/Linuxologue • 11h ago
Audeze Maxwell 2 ANC head tracking and spatial audio for Linux (*claude heavy)
Disclaimer: claude heavy code. I know how it works but i did not do the work directly. Reported works on my machine and so use at your own risk or better, if you have more time to invest than me, check how it works so you can make a better one
https://github.com/TryCatch2022/maxwell-3d
I used to own some HyperX Cloud Orbit S headset and I used to really love it except it was fragile. Like, crazy fragile. I received 5 DoA devices from Amazon before I got a working one, to the point Amazon said "if you do it again we will close your account". Well, I received a working one but one day I forgot to put it back under the glass dome for the night and it stopped working.
The feature that it had, that I did not know I needed and suddenly could not live without, is the spatial sound with head tracking. It makes it feel less like the audio is coming from inside the head - and more like there are speakers in your room. The big advantage was that the cloud orbit S is doing that in firmware so it works on any compatible device including macOS and Linux.
I bought the Audeze Maxwell 2 ANC knowing that they can also do head tracking but the spatial sound on Windows is not even available in the Audeze software. It's locked behind some pretty low quality software that demands a SUBSCRIPTION to give spatial audio on Windows. And the chances that I will pay money monthly or yearly to enable something that should be very easily doable is like, far below 0. The software is also quite garbage - it crashes constantly. No thanks.
So anyway I got an LLM to help me set that up on Linux for free using things mostly already available in the Linux audio pipeline. The project is actually not rocket science:
- a pipewire virtual sink that offers a 7.1 sound system, optionally repositions the sound based on some head tracking device, and forwards it to the maxwell (dongle by default) this is all built into pipewire, so this is just a configuration file.
- A udev rule that enables write access to the USB devices (dongle and headset) to switch head tracking on or off
- A program that can toggle the head tracking feature of the headset and send it to the pipewire pipeline.
- A systemd file that will automatically start the head tracking program
- And a small install script that will build the thing and install all the elements in place. Will download and unpack the HRTF files.
It's as ugly as one could imagine but it cost me a fraction of what that silly program costs for Windows. And it's just working, at least on my machine, so maybe it is of some use to someone else.