After searching, I know it’s been posted about a handful of times, with no real solution having come of it. I’ve been working on this very issue today, here’s what I’ve found:
The build error caused is UnrealBuildTool: ERROR: Couldn’t find module rules file for module ‘Kiss_FFT’.
Kiss FFT is the fast fourier transform library that Epic has relied on to make their SoundVisualisation plugin, and Epic has not updated that plugin since it’s original release with UE4.0.
From what I can tell, this error occurs because the implementation of the Kiss FFT library is set to only work inside the editor, and thus no .Build.cs file was created for that module. When you attempt to package a project requiring the module, it cannot be found, and the packaging fails.
I was working in a Blueprint-only project, so I first attempted to generate Visual Studio project files. This did nothing. I ended up downloading the UE 4.6 source code from github, and recompiling the engine in order to gain access to the source code for the SoundVisualization plugin. Once I had recompiled, I converted my project to the new version of UE 4.6 and opened everything up.
A couple things I noticed:
SoundVisualizationStatics.cpp contains code that has been wrapped in #if WITH_EDITORONLY_DATA directives. I first thought this may be an issue, so I replaced the code with #if PLATFORM_WINDOWS as I’m not building for anything else right now. This did nothing. The same file has a debug line that claims this:
UE_LOG(LogSoundVisualization, Warning, TEXT("Get Amplitude does not work for cooked builds yet."));
That’s obviously not super descriptive… I’ve never seen this debug line appear in any of my logs, either.
There is a .Build.cs file for the SoundVisualization plugin, and it does attempt to include the Kiss_FTT as a third party dependency, as shown below:
I saw elsewhere on the answerhub that someone had success with a similar issue by changing this line to PublicDependencyModuleNames.Add(“Kiss_FFT”);, but this did not work.
Finally, I noticed the engine’s source code actually does come with a version of Kiss_FFT, which you’ll find in “…/Source/ThirdParty/Kiss_FFT”. This is version 1.29 of Kiss_FFT (the latest version is 1.30), but it should still work fine. Sure enough, this directory contains a .Build.cs file for Kiss FFT, which contains the following line:
// Compile and link with kissFFT string Kiss_FFTPath = UEBuildConfiguration.UEThirdPartySourceDirectory + "Kiss_FFT/kiss_fft129";
While this seems to be pointing to the appropriate path, maybe it needs to be modified?
I’m pulling my hair out here, any help would be hot!