THIS CODE CURRENTLY A PROOF OF CONCEPT, IT IS NOT USABLE
This code is primarily an attempt at creating a CoreAudio Server Plugin for the GoXLR, the initial goal is to simply fetch a 10 channel GoXLR audio frame, and split it into 5 Stereo Virtual Outputs.
Note, I don't own a Mac, so have no way to validate any of this.
The driver exposes three operations as custom CoreAudio properties on the Plugin object:
- Create pair (selector
'GXcr') -- value is aCFDictionaryof{"DisplayName": CFString, "UIDName": CFString, "IsOutput": CFBoolean}. - Destroy pair (selector
'GXdl') -- value is aCFString, theUIDNameto tear down. - List pairs (selector
'GXls', get-only) -- returns aCFArray<CFString>of theUIDNames currently instantiated; useful for debugging.
goxlr-audio-helper is a PoC application which interfaces with the AudioObjectSetPropertyData API, it finds a GoXLR,
the plugin, then tells the plugin to create the split channels. It then opens the GoXLR exclusively and grabs all audio
coming in and out, before routing it through the plugin.
Assuming the PoC is made to work correctly, its code could be pulled into the Utility to handle stuff.