I did something similar with LEDs. I chose to add a separate WLED controller instead of trying to control the LEDs directly from the Pi. The Pi just tells WLED what state or effect it wants, and the WLED board handles the actual timing and LED control. It keeps the responsibilities separate and avoids adding more real-time work to the Pi.