Announcement

Collapse
No announcement yet.

Packaging Game with Audio Visualization Plugin

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Packaging Game with Audio Visualization Plugin

    Same thread on AnswerHub

    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'.

    Click image for larger version

Name:	build_error.jpg
Views:	1
Size:	460.7 KB
ID:	1141605

    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:

    Code:
    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:

    Code:
     AddThirdPartyPrivateStaticDependencies(Target, "Kiss_FFT");
    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:

    Code:
    // 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!

    #2
    I have the same issue for a client's project I'm working on, anyone can shed some light on this?

    Comment


      #3
      Apologies - it's being optimized out of the launcher builds by our build process, because nothing we ship in the launcher build uses it directly (it's also missing the static library to link against for the SoundVisualizations plugin, and only has the editor DLL). I'll make sure it's in the next release.

      In the meantime, you might want to try getting the source from GitHub. Both the Kiss_FFT library is there (https://github.com/EpicGames/UnrealE...Party/Kiss_FFT) and all the source for the SoundVisualizations plugin (https://github.com/EpicGames/UnrealE...ations/Private). You'll need to be logged in to GitHub to follow those links.

      Comment


        #4
        Hey Ben, thanks for the reply, and I'm super excited to hear that you'll be including a fix in the next release!

        I actually have already downloaded the 4.6 source code via github, and recompiled the engine. The error I've posted about above is the error I receive when attempting to compile my game built on that engine version, and I do have source access to both the SoundVisualizations plugin as well as the Kiss_FFT library. I still receive the build error.

        My inexperience is showing here, but is it as simple as moving the Kiss_FFT library into a new directory? The error "cannot find rules module" seems to me like it's just simply got a wrong path to the Kiss_FFT library, looking for an out-of-place .Build.cs file. Is there a configuration file somewhere I should update with the appropriate path? Or am I missing something here that should be obvious?

        Either way, thanks so much for all the effort, Ben. I'm having a blast with Unreal.

        Comment


          #5
          Is there any update on this Ben? Seems like the Github solution doesnt work at the moment. I just would love to release my Christmas themed game before Christmas.

          Comment


            #6
            I'm sorry, I misunderstood your problem. I don't know any specifics about that particular plugin, but I had a quick look at it.

            First, it sounds like you haven't downloaded the binary files for the GitHub build. There's a section in the README which explains how to do that, and the precompiled Kiss_FFT library is part of those. Git doesn't handle binary files very well because it stores every revision of them, so we have a separate system for downloading them.

            The WITH_EDITORONLY_DATA macros are by design, because the SoundVisualization plugin relies on editor-only member variables in USoundWave to run (things like ChannelOffsets and ChannelSizes). You might be able to remove those too, I'm not sure, but you'd have to try doing all that yourself. We can certainly ask our new audio engineer to have a look at it when he starts, as Doug mentioned.

            Comment


              #7
              Thanks a lot Ben! I ended up doing the animations manually.

              Will the visualization plugin work out of the box in 4.7? I still think about working on a new project with it.

              Comment


                #8
                It won't, no. It's a quite fringe feature, so it's probably better to implement it yourself if you need it.

                Comment


                  #9
                  Its been almost a year is there any word on this feature?

                  Comment


                    #10
                    Someone has actually fixed this plugin. It requires you to load in an ogg file from the hard disk but it is better than not working at all. https://forums.unrealengine.com/show...cooked-builds)

                    Comment


                      #11
                      Originally posted by SG1Wolf View Post
                      Someone has actually fixed this plugin. It requires you to load in an ogg file from the hard disk but it is better than not working at all. https://forums.unrealengine.com/show...cooked-builds)
                      That someone is me (:

                      Feel free to share it. The Source for it is open. You can modify it and add more file types to it.
                      Make sure to make PullRequests if you have any cool changes!
                      Open for contracted work | C++/BP (incl. Multiplayer) | Tutoring | VR

                      My UE4 Blog/Page with Tutorials and more: Hit me for ALL the things!
                      (Including 100+ Pages Multiplayer Network Compendium to get you started.)

                      Comment


                        #12
                        Originally posted by eXi View Post
                        That someone is me (:

                        Feel free to share it. The Source for it is open. You can modify it and add more file types to it.
                        Make sure to make PullRequests if you have any cool changes!
                        It is a great plugin and I thank you for making it work. If I decide to return to active C++ coding, I'll see what I can contribute.

                        Comment

                        Working...
                        X