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.
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
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:
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.
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:
And an example of invalid bounds array:
10-40 (overlap frequency 10Hz)
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.
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
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!