audioanalyzerstore

AudioAnalyzer – FAQ

The UE4 marketplace plugin builder system doesn ‘t create the binaries of android arm64 platform so you get the error:

Plugin _ failed to load because module _ could not be found. Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project.

transition
Android error capture

This is only a workaround until Unreal Engine 4 team fixes the thirdparty plugin builder system. Just move the AudioAnalyzer folder from your Engine Plugins folder (EpicGames\UE_4.xx\Engine\Plugins\Marketplace\AudioAnalyzer\) to your project (ProjectFolder\Plugins\Marketplace\AudioAnalyzer\)


If you are using the plugin in more than one project you can place a copy in each project

The default playback buffer size is set to 1024 frames, it can be too low for some android devices resulting in audio playback glitches. You can increase the buffer size using the Init Player Audio Ex node and power 2 values like 2048 or 4096

You need to add the non-assets folder that contain the sound to the directories to package list Project Settings > Project > Packaging > Additional Non-Assets Directories to Package

dir_to_package

You need to follow this guideline to rename the references: How to change an UE4 class name

Using the _WLimits nodes you can define your custom frequency bounds for each band with the parameter Band Limits:

wlimits_node

You can define the lower and higher bounds for each band independently using a 2D array. Each component of the array define the bounds for that band. You will have as many bands as the array size.

wlimits_bands_array

But, for optimization, the intervals must be sorted and with no overlaps. They are closed intervals so you can’t start an interval with the same value used to end the previous interval


So an example of valid bounds array:
0-10
11-40
80-100
And an example of invalid bounds array:
0-10
10-40 (overlap frequency 10Hz)

0-10
5-40 (overlap frequencies 5-10Hz)

To access to the analysis result of each band you can use the same method used with the predefined bands bounds.

wlimits_bands_result

The reason is the size of the interval of that band. The size is too small for the rest of parameters.

For a 0.02s window with a 44100 sample rate audio the minimal frequency bucket is: Num_samples = 44100 * 0.02 = 882 (now we search for a window size power 2 to fit that number samples (1024), this is the size of our FFT analysis)

So each FFT result position represent a band of 44100 / 1024 = 43.066hz

So the minimal valid interval size is 44hz

If you want to use smaller interval values you need to increase the Time Window. For example with a window of 0.03s

44100 * 0.03 =1323 -> next power 2 value 2048

44100 / 2048 = 21.53hz

Now the smallest allowed size for a band interval is 22hz

The packaging process doesn’t include the correct path of thirdparty libraries when the plugin is inside the project folder. Follow this guide to fix the released packaged: Using plugin inside UE4 project MacOS folder

Decoding big audio files takes a bit of time and produce this issue because the task are blocking the GameThread. To avoid that we can put the node inside an AsyncTask or use the new asynchronous initialization nodes. To know more about how to use that nodes you can see this page: AudioAnalyzer From Sync to Async

nativization_error

All included modules used in other modules must be added manually to the dependency list, so we need to open the DefaultEditor.ini file that can be found in ($ProjectFolder)\Config and add the dependency to the missing module.

[BlueprintNativizationSettings]
+AdditionalPublicDependencyModuleNames=ParallelcubeTaglib

Support this blog!

For the past year I've been dedicating more of my time to the creation of tutorials, mainly about game development. If you think these posts have either helped or inspired you, please consider supporting this blog. Thank you so much for your contribution!