Mod Synth component won't save

Hi all, I’m trying to test out the Modular Synth as a component for an actor, but for some reason it doesn’t seem to save that component when I close the editor and open it back out again. The Modular Synth component is attached to a simple blueprint actor, nothing crazy. It works fine when I manually add it back onto the blueprint after restarting the editor. All of my scripting to play notes, etc. is great.

It’s only when I save, close the editor, and open it back up, that the ModularSynth component goes missing. It appears to be unable to reload it due to a missing script.

I am getting the following messages when loading back in, I believe the NULL refers to that Modular Synth component:

LogLinker:Warning: Can’t find file ‘/Script/Synthesis’
LogLinker:Warning: Can’t find file for asset ‘/Script/Synthesis’ while loading NULL.
LogLinker:Warning: Can’t find file ‘/Script/Synthesis’
LogLinker:Warning: Can’t find file for asset ‘/Script/Synthesis’ while loading NULL.
LogLinker:Warning: Can’t find file ‘/Script/Synthesis’
LogLinker:Warning: Can’t find file for asset ‘/Script/Synthesis’ while loading NULL.
LogLinker:Warning: Can’t find file ‘/Script/Synthesis’
LoadErrors: Info Failed to load /Script/Synthesis.ModularSynthComponent Referenced by SCS_Node_2
LogLinker:Warning: Can’t find file for asset ‘/Script/Synthesis’ while loading NULL.
LoadErrors: Info Failed to load /Script/Synthesis.ModularSynthComponent Referenced by SCS_Node_2
LogLinker:Warning: Can’t find file ‘/Script/Synthesis’
LogLinker:Warning: Can’t find file for asset ‘/Script/Synthesis’ while loading NULL.
LogLinker:Warning: Can’t find file ‘/Script/Synthesis’

I’ve uninstalled the ‘Synthesis’ Plugin from the Plugin Manager and reinstalled it (with reboot). That didn’t fix the issue. I’ve also tried fixing up redirectors in my Content directory and that also did not fix the issue.

Does anyone else get this error? It seems to be an issue in the editor code.
Tested using 4.16 with the new hotfix.

I think I found the issue. Going to leave it here for future reference or comment by the Epic team in case I’m doing something terribly dangerous.

In the plugin script in C++, there is a setting for the Synthesis Plugin that determines the “LoadingPhase” of the plugin. I believe this determines when in the order of events the plugin code is loaded. It was originally set to “Default” but I think the problem with this is that my game actor code had been loaded before the plugin gets a chance to load. So I was getting a NULL reference to the script because the plugin hadn’t been loaded yet.

By changing the LoadingPhase to “PreDefault” it should load the plugin before the blueprint actor game code is loaded, so now when it looks it finds the synthesis script.

“LoadingPhase” : “Default” -> “LoadingPhase” : “PreDefault”

If anyone knows why this is a terrible idea, let me know :slight_smile:

This looks like the same issue that I had (4.25.2).

The Synthesis plugin happens to load too late in the engine loading process on startup, which makes it unavailable when loaded after initially being used. Changing the .uplugin file on both plugins to have the "LoadingPhase": "PreDefault" makes these plugins load in before your project files, fixing the issue. .uplugin files are interpreted at load-time, so you don’t need to recompile the engine. The .uplugin file on this plugin is in its folder in (Engine Dir)/Engine/Plugins/Runtime.

Keep in mind that because this change is in engine files, it might not be captured in your source control software. What I plan on doing is making a script that automatically changes out the file for all of my devs’ engine download.