Tutorial: Writing a Pitch Shift MetaSound Node

Hello. Thanks for this tutorial.

I am new to the unreal engine and creating plugins, so your feedback is greatly appreciated. Building plugins with Visual Studio 2019, I am having trouble linking to many of the dependencies (i.e. cannot open source file “MetasoundExecutableOperator.h”).

To create my plugin I did the following:

  1. In a c++ project, I added a blank plugin.
  2. In the generated plugin files, I updated the .uplugin file as follows:
{
	"FileVersion": 3,
	"Version": 1,
	"VersionName": "1.0",
	"FriendlyName": "metanode",
	"Description": "test node",
	"Category": "Other",
	"CreatedBy": "Brian",
	"CreatedByURL": "",
	"DocsURL": "",
	"MarketplaceURL": "",
	"SupportURL": "",
	"CanContainContent": true,
	"IsBetaVersion": false,
	"IsExperimentalVersion": false,
	"Installed": false,
	"Modules": [
		{
			"Name": "metanode",
			"Type": "Runtime",
			"LoadingPhase": "Default"
		}
	],
	"Plugins": [
		{
			"Name": "Metasound",
			"Enabled": true
		}
	]
}
  1. I have also entered metasound modules in the Build.cs file:
PublicDependencyModuleNames.AddRange(
			new string[]
			{
				"Core",
				"MetasoundGraphCore",
				"MetasoundEngine",
				"MetasoundFrontend",
				// ... add other public dependencies that you statically link with here ...
			}
			);
			
		
		PrivateDependencyModuleNames.AddRange(
			new string[]
			{
				"CoreUObject",
				"Engine",
				"Slate",
				"SlateCore",
				"MetasoundGraphCore",
				"MetasoundEngine",
				"MetasoundFrontend",

				// ... add private dependencies that you statically link with here ...	
			}
			);
  1. I copied the code presented in the tutorial into the .cpp file of my plugin. I also commented out the boiler plate class and implmentation code that appears when generating a blank plugin (i.e. class derived form IModuleInterface with virtual void methods StartupModule() and ShutdownModule() – I am assuming this stuff is not needed for a metasound node implementation).

From my understanding, the required header files should be found based on my entries in the .uplugin and Build.cs file. But clearly I am missing something…