AAX SC Input Set? - Solved

Is there a way to figure out if the SC key input of an AAX plugin has been selected?

For instance:
[no key input set]


[key input set]

… is there any clear-cut getKeyInputSet() function for AAX? I know in the documentation of AAX SDK, it says that the SC input pointer will be null if there is none set, but my getReadPointers() / getWritePionters() are not null.

Thanks for any help!

EDIT: Solved!*

Here’s how you get a notification when it’s set or unset - it’s really pretty simple and only takes a couple of minutes to get working. It will also signal that it is not connected when an unused bus is specified. It will only signal ‘connected’ when you have a valid SC signal!

Note: This technique involves modifying a default JUCE file named:


1. To start, open juce_AAX_Wrapper.cpp (this may be in your Program FIles directory)
2. Scroll down and find the line with the following function on it:

AAX_Result NotificationReceived (AAX_CTypeID type, const void* data, uint32_t size) override

This is the code PT uses when certain things change, such as SideChain’s being connected.

3. Add the following to the function body:


if (type == AAX_eNotificationEvent_SideChainBeingConnected) pluginInstance->AAX_SC_Connected(true);

if (type == AAX_eNotificationEvent_SideChainBeingDisconnected) pluginInstance->AAX_SC_Connected(false);


4. Now, we have to add a new line to the JUCE file:


which is

class JUCE_API AudioProcessor

public: virtual void AAX_SC_Connected(bool v) { }


Now, we’re all set with the message relaying, we need to actually decide what happens within our plugin:

5. Open your 'PluginProcessor.h" file and add the line to your class:

class MyPlugin : public AudioProcessor

void AAX_SC_Connected(bool v) override;

6. Final step - open “PluginProcessor.cpp” and add the following line:

void MyPlugin::AAX_SC_Connected(bool v)
// v == true when good connection is made
// v == false when no sc/unused bus is made

Technically this is possible but it’s not currently exposed in JUCE. This is because - with the current API - we do not allow disabling buses while the plug-in is processing. We are working on a overhauled multibus API which will address this problem.

Okay, that’s cool! The only problem in the meantime is that my SC channel is filled with random/LOUD signal. Is there any advice you can give me on a workaround for this in the meantime?

Thanks for any help!

Since this is my sticking point right now in my product development, I’m going to try and modify the AAX_Wrapper stuff in JUCE so that it will pass through a null pointer.

Depending on what you’re trying to do, this may be relevant:

Starting from AAX SDK 2.1 and Pro Tools 11.1, plug-ins receive AAX_eNotificationEvent_SideChainBeingConnected/AAX_eNotificationEvent_SideChainBeingDisconnected notification from ProTools, when sidechain has been connected/disconnected to the plug-in.

Without these, it is impossible to differentiate between “No key selected” and an invalid key selection (such as an unassigned bus). Both will return a null pointer.

1 Like

Thanks a bunch for the tip! Looking into this now - If I figure this out, I’ll post my solution here for everyone!

Fixed! Thank’s for the protip again frankfilipanits!

Pretty simple actually to get the tip - I’ll update my main comment to show how I did it.