Control audio interface from within GP3

I’m surprised that the input and output audio blocks in GP3 are not available for control using widgets.
For both the Fireface UFX and the X-USB (Behringer X-32) that I use, the ‘plugin view’ shows both the input as the output side as a bank of faders.

For the outputs that’s fine, I’d connect a master fader in the rackspace and leave the RME TotalMix parameter untouched at 0 dB. However, on the input side, I’d like to control the pre-amp gain and state of the phantom power for the microphone channels. Is that possible, or do I need the TotalMix or X32-Mix Apps active at the same time as GP3?

I do this using TotalMix and within GP I use GP Mixer plugins:

You can use OSC messages to control Totalmix from GP.

They are!

Thanks @pianopaul, @David-san,
I’m new to OSC, but pretty technically inclined, so I’ll figure it out. I read the article about Robert Frazza using GP live for Stickmen in this post. That sounded straightforward so I was expecting an in-the-box solution. Is there a technical reason why this can’t be done as easily as assigning a widget to a plugin parameter (e.g. the audio interface doesn’t let GP know which parameters can be externally controlled as a plugin does), or is it a feature for a next release?

He wants to control some parameters of the interface itself like phantom switch etc.

That is correct. Every plugin certainly provides a list of parameters that can be controlled via host automation (i.e, accessible by the GP widget system).
The plugins that represent Audio I/O communicates with the standard audio driver provided by the OS. On OS X, it’s Core Audio. On Windows it’s typically ASIO. But those drivers do not expose audio interface specific controls (such as the RME firmware mixer stuff) and so there there is no way for Gig Performer to be aware of device specific functionality.

If there was, there would be no need for device manufacturers (such as RME) to release mechanisms such as OSC as a way to communicate with their hardware (via their own propietary software applications).

Now, some hardware synth manufacturers sometimes release a plugin (VST or AU, etc) that knows specifically about the hardware synth and those plugins will expose a set of parameters that can be controlled via host automation and then the plugin communicates with the synth hardware using whatever proprietary format they want (usually some channel or sysex messages).

It would be awesome if RME (for example) would release a plugin that knows how to communicate with RME interfaces. If they did that, then Gig Performer would be able to control that interface directly.

2 Likes

Thanks @dhj,
I was afraid of that. It means that there is no easy solution. It would be great if there was a generic driver protocol for audio interfaces such as is used by the test and measurement community to simplify control from tools like LabVIEW.

Fortunately Gig Performer supports OSC :grinning:

2 Likes

Here’s a good starting point for trying out OSC :slight_smile: Gig Performer | Use your mobile phone to control your guitar or keyboard effects

Thanks Nemanja (@npudar),

Since I am on iOS, I didn’t use OSCAR, but I got your remote control to work with TouchOSC.
Then I downloaded the official RME TotalMix template for TouchOSC and got that to work too. And it’s really helpful to see the way the template is constructed and all the OSC names associated with the controls that I am after.

Now my last hurdle is how to get GP to control the TotalMix FX App. I’ve changed the address of the remote client in GP to be the address of TotalMix, but that didn’t work. Since they are running on the same machine, I also tried to change it to 127.0.0.1 but to no avail. What am I missing?

What about the ports you are using?

The preferred ones 54341 and 54344.
I noticed that the IP address of TotalMix appears as part of a list as GP address.

So the port 54344 is the port TotalMix uses?
How do you send OSC messages from GP?

Yep,

I am at a loss for how to send the setting of a switch or fader. In TouchOSC Editor I need to change the OSC field to /masterfader/SetValue, but that is not how the RME template shows it. There it is just the name of the control, same as in GP. Leaving the ‘auto’ box checked doesn’t work in the remote control I’ve made for the TouchOSC App.

Screen Shot 2021-01-02 at 17.20.37

Try this gig
TotalMix.gig (5.5 KB)

Thanks Paul,

But I don’t get it. It seems I’m missing a manual or something.

The knob is controlling the fader of SW output 1, as I would expect from this list. But its OSC name is Volume1 (OSC is case sensitive, so I was actually expecting ‘volume1’) and the OSC checkbox is left off (switching it on has the same functionality). Copying the widget and changing the OSC name to Volume2, has no effect in TotalMix.

Is this functionality perhaps done by GPScripting? I’m new to that :roll_eyes:. Where do I find the handles for it in the rackspace?

Did you load the gig file in gig performer?

The secret to the solution is this script

//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
   Volume1 : Widget
   Mastervolume : Widget
   mV1 : OSCMessage
   mMV : OSCMessage
   
//$</AutoDeclare>

initialization
 OSC_SetAddress(mV1, "/1/volume1")
 OSC_SetAddress(mMV, "/1/mastervolume") 
end 

// Called when a widget value has changed
On WidgetValueChanged(newValue : double) from Volume1
 OSC_ClearArgs(mV1)
 OSC_AppendDoubleArg(mV1, newValue)
 OSC_Send(mV1)
End

On WidgetValueChanged(newValue : double) from Mastervolume
 OSC_ClearArgs(mMV)
 OSC_AppendDoubleArg(mMV, newValue)
 OSC_Send(mMV)
End

Yes and the knob you provided is working OK. I just tried to add my own and failed.

Please load again, I uploaded an update.
For each widget you have to add some code in the script.
Right now it is not possible without scripting because Gig Performer generates some own OSC messages which are not recognized by Totalmix.
Are you on Mac?
On Mac there is a software called OSCULATOR
With this you can reassign the OSC messages generated from Gig Performer and translate it to the
format Totalmix uses.
No need for scripting.

So you can decide which solution you prefer.

1 Like