Feature Request: Custom DSP Registration API for UE Integration

Hi there,
this might be a bit of a nerdy feature request but here we go:

For custom DSP plug-ins in both Unity and UE Integrations there’s the list you can add your Dynamic Plug-ins so they are getting added to the Core System on initialization. On platforms requiring static libraries (e.g. iOS), you need to provide the exported symbols/functions returning your custom DSP description. This works well with the Unity Integration providing a separate list to add the symbol names to.

On the Unreal Engine side of things it’s different, there’s no list. It’s C++ code so the code generation would be a mess :roll_eyes:

However, if the FMODStudioModule would provide a public interface like

void addCustomDSPDescription(FMOD_DSP_DESCRIPTION* descriptionToAdd);

bool removeCustomDSPDescription(FMOD_DSP_DESCRIPTION* descriptionToRemove);

which internally simply adds to a

private:
std::vector<FMOD_DSP_DESCRIPTION*> customDspToRegister;

member and during initialization (e.g. CreateStudioSystem) does something like this

// register custom DSP plug-ins
for (const auto& dsp : customDspToRegister)
{
    unsigned int Handle = 0;
    lowLevelSystem->registerDSP(dsp, &Handle);
}

Then a custom UE Plug-in could call FMODStudioModule::addCustomDSPDescription during its own MyModule::StartupModule() phase and have the custom DSP registered.

Hope that makes sense :slight_smile:

Things might actually be a bit easier for us on the Unreal side. Rather than needing to generate C++ code, we could use dlopen on the application, find the static symbol then register it. We wanted to do this for Unity but their were technical difficulties imposed by C# requiring the code gen. With this appaoch we could have the same user interface as Unity, a list of strings representing symbols to be automatically registered.