Dot3k actually uses a chip called the SN3218, which talks to the Pi over I2C- a protocol which uses both a Clock and Data line- and has 18 PWM driver channels for LEDs- enough to drive the 3 backlight LED and 9 bargraph LEDs.
The LEDs on the Unicorn HAT, however, are completely different beasts. They’re known as WS2812 LEDs, and every single one of them contains its own built-in PWM driver ( that’s the little dark rectangle you can see in each one ).
The Pi needs to communicate with that whole chain of WS2812 LEDs, and it does so using a unique, and very high-speed protocol that spurts out all the data for those 64 pixels through one pin.
To do this with one pin, the WS2812s rely on short and long pulses indicating high and low bits- this means the timing has to be very precise, and very finite. The Pi can’t do this by simply toggling a GPIO pin in Python, so we have to run the PWM engine, and throw it pixel data from reserved memory.
Unfortunately this same PWM engine is the one used to generate the analogue audio signal on the Pi, so the clash happens :(