If you happen to have a GoXLR or a GoXLR Mini, the GoXLR-Utility project that’s supported across Windows, macOS and Linux allows you to configure the device without relying on TC-Helicon’s proprietary, Windows-only, tool. The GoXLR-Utility UI resembles the GoXLR App so you should be able to switch with ease. One of the many benefits of this is that GoXLR-Utility exposes an HTTP API that lets you control the mixer and be notified of mixer state changes.
Now, I like to have computers do things for me unless it’s strictly necessary for me to do them. So when I want to pause music playback, wouldn’t it be nice if I could mute the fader configured for the Music source, by pressing the button, and have that automatically pause the playback in my music player too? Sure, I could use the media keys on my keyboard to pause playback, but that still leaves the channel active and lit up on the mixer. I don’t want that.
You can see where this is going. I built a thing. Since it’s written in Go it has the very unimaginative name of GopherXLR. GopherXLR is a small daemon that connects to GoXLR-Utility’s HTTP API and listens for status changes of the connected mixer(s). It then passes the status change on to little scripts you can write in Expr to automate any action you want.
Right now, GopherXLR supports calling the PlayPause
method on any MPRIS-capable player over the D-Bus user session. This includes just about any music player that runs on Linux, including Spotify. It also comes with a RunCommand
function that lets you call any binary on your system with whatever arguments you want. These commands have to complete within a second, but other than that you’re free to do what you want. The repository includes some example scripts to get you going.
That’s really all there is to it. It definitely works on Linux, should work fine on macOS and is untested on Windows. Currently I only pass around the previous and current mute state of any of the faders. But that’s only because that’s the only thing I had a need for. Issues are welcome for including additional status info or for adding additional functions to call from the scripts. Feel free to try it out and let me know if you run into any problems.