Has anyone figured out how to use the HUI protocol from GP?

I seem to have hit a dead end where I need HUI.

I’m using a Novation Impulse as my main controller. I’m running into a serious issue, which is that I can’t update the values of the Impulse encoders and buttons from GP. There seems to be no way to sync the value of a controller on the Impulse to the value of a widget.

For example, in the prechorus of “24K Magic”, I need to immediately set the the filter cutoff frequency in the synth I’m using to a low value and then gradually turn it up throughout the eight measure phrase, and I can’t seem to figure out how to do that from the Impulse other than as quickly as possible turning the associated encoder counterclockwise at the start of the prechorus, which is award and prone to human clumsiness.

I’ve e-mailed Novation support a few times about this, and their answer has basically been to use either HUI or Automap, “since most DAWs will support least one of these”.

I’ve read a couple of other community threads that might relate to this but they didn’t seem conclusive:

Thanks for any help!


Maybe the description of the protocol helps?

Someone reverse engineered it.

And maybe somebody will create a GP extension for this someday :grinning:

1 Like

The Mackie MCP protocol is a mashup combination of the old HUI and Logic Control protocols. Mackie combined them to make MCP, which is still the dominant protocol for most 8 fader, 8 knob, jog wheel, 32+ button controllers.

I haven’t seen HUI protocol documentation, but I suspect it’s a subset of MCP or at least something very close to it.

I’ve written an MCP extension for GP which works with the MCP units that I have (Icon Platform M+, Behringer BCF2000, OSC software MCP emulator). Making it HUI compatible probably wouldn’t be a huge stretch, but I do know the Impulse requires (at least) one thing I haven’t attempted to implement and am not sure how to. The HUI protocol (and MCP as well) technically call for a “heartbeat” bidirectional communication so the DAW and hardware know they’re still connected. I haven’t attempted to implement that because I have no idea how to do a cross-platform “callback” style timer in C++ for Windows and Mac. Fortunately most MCP hardware doesn’t actually care, but the Impact docs say that it does require the heartbeat.

Putting aside getting HUI extension to work, it’s not clear to me exactly what you (@Solomon) are trying to do. I’m also not familiar with the controls on the Impulse.

It sounds like you want to A) link a knob on the Impulse to a knob widget in GP, B) have it jump to a low value at the start of your prechorus, then C) gradually turn it up over an 8 measure phrase. Is that correct?

If so, which of those is currently the problem?

If the problem is just that it’s awkward to turn it counterclockwise quickly, then clockwise slowly over 8 bars, have you considered using one of the faders instead?

This was just a specific example. In general, I would like to be able to get the controls on the Impulse (specifically the encoders and the toggle buttons, not the faders since they aren’t motorised) to match the values of my widgets any time I switch rackspaces or variations. For example, I find that it can really slow me down and confuse me when a button widget is in the “off” state when the corresponding button on the Impulse is in the “on” state. To toggle the widget to “on”, I have to press the physical button twice (once to turn it off to match the widget state, and a second time to turn it on and toggle the widget). I’d like to able to look at the LED’s on the buttons on the Impulse and trust that they represent the states of my widgets, rather than having to constantly look back and forth between my laptop and my controller to see if they’re in sync or not.

Yes, in my particular example I could use a fader instead of an encoder, but I’ve currently got all my faders assigned to mixer channels in the Global Rackspace so doing that would require reworking my whole setup.