[SUPPORT] AudioAnalyzer

Audio Analyzer is a plugin for Unreal Engine 4 that allow you to visualize the waveform and frequency spectrum of an audio file in real-time. Also can detect the beats of any audio source in realtime by using frequency spectrum analysis (FFT).
Can be used in your games or applications and make your games react to the music. It is really easy to configure.

Current features

  • Amplidute analysis
  • Frequency spectrum
  • Basic beat tracking
  • BPM tracking
  • Picth tracking
  • Works with audio file, microphone and loopback input
  • Support cooked builds
  • Android Mobile friendly
  • Full source C++ included
  • Wav, mp3, ogg, flac supported
  • Loopback support (What-you-hear) (only Windows)
  • Offline analysis (Amplitude sections)

Technical Details

See below documentation to a detailed explanation of the plugin integration and supported audio files.
Number of Blueprints: 0
Number of C++ Classes: 15
Network Replicated: No

Supported Development Platforms:

  • Windows
  • Linux
  • Mac (Experimental)

Supported Target Build Platforms:

  • Windows 64 bits
  • Android
  • Linux
  • Mac
  • IOS (Experimental)

Supported Target Build Platforms:

Documentation:
Documentation | Web | Roadmap

Example Projects:
Projects
Current version:
3.06 Changelog
Videos

**

Audio Analyzer plugin for UE4 [Cube Visualizer] - YouTube** Marketplace
Epicgameslogo.png

2 Likes

Can you confirm plz that this bug has no effect on this plugin on android platform? + how is the performance on android?

another question: can I get how player is loud from microphone?

To be honest , since ages i’m waiting for a plugin like this , i hope you clear all my worries by answering my questions if possible so I can buy it with confidence

This plugin uses the SDL2 library to capture and play audio, since this plugin uses an external audio system we don’t have been affected by that issue.
You can get the amplitude of the microphone input to know how loud is the sound.

Mate, you dont know how awesome you are by providing this ,but u still didnt answer the performance question:D
and any time range will you release it to support iOS too?

I’m asking bec, I’m going to deprecate a big part of my project to switch to your plugin, so I just want to make sure before jumping in:D

Well, the performance depends on what you want to draw on the mobile more than the analysis cost.

For example this 16x16 grid runs at 60 fps on a Mi4C

If you have any c++ performance test to run and compare I can pass the code by that test and give you the results.

IOS support still has no release date. At this moment we have no hardware to build and test on IOS platform and we have no room for add more changes until April, so it will have to wait at least 2 months more.

Hey mate, great plugin. Got a bug for ya :wink:

When there is no audio output (i.e. when a computer has no speakers connected, the little windows speaker in the taskbar has a little red x), the plugin doesn’t work. I realise this may be by design, or just a scenario not yet encountered. Could you please adjust it to make it work even when there is no audio output?

Steps to reproduce - open your sample project and run as normal, with speakers disconnected (ensuring the windows taskbar speaker icon has a little red x, indicating no connected audio outputs). The UI Input Selector blueprint will print “Player Error” to the screen.

Many thanks, keep up the good work > : )

I see updates of BPM Detection, MP3 Support, and M3U support. I would definitely love to hear any ETAs about this info.

Thank you for making this plugin, I literally would by it again per update above.

I am excited and looking forward to continuing to develop on what I’ve made using what you made as you continue to develop! :slight_smile:

Feel free to loop me in as a beta tester :stuck_out_tongue:

Thank you,
-Brandon

You can obtain this effect using the average frequency values of Get Spectrum node

On each Tick Event, take only the average values greater than the current maxAverageValue for each bar, update the bar objects, and apply a decay to all values to obtain the falling effect.

Thank you for the information and a quick response. Could you please tell me exactly which version of the UE4 that can run your audio analyzer projects without errors? Or is there a link where I can download audio analyzer projects suitable for UE4 version 4.22.3?

I have tried loading these into UE4 version 4.22.3 without success:
https://www.parallelcube.com/content/binaries/AudioAnalyzer/UE4_P_AATester_v1.04_2019-05-14.zip
https://www.parallelcube.com/content/binaries/AudioAnalyzer/AA_Loopback.zip

I’m using the WINAPI implementation to add this feature to the plugin. Unfortunately I can only test it on windows platform, but if you have a log file you can send it to support@parallelcube.com

Works flawlessly on android. But the plugin causes my game to crash in iOS. I did read it is experimental and mp3 doesn’t work in iOS, but it should atleast build and run in an iphone right ?

Thanks for the quick answer! I had to read this a couple of times to understand it, but it makes sense!

I changed the range to 90 - 140. I will create sliders to directly adjust the values in the gamepreview later, so that I have direct feedback for how it looks. Then it will come in handy that I understand the problem with the timewindow :slight_smile:

Hi, you can use the Loopback nodes to do the analysis over the output of an audio device. Like in this example

Hey! Im trying to get your plug in to use as a loopback for a visualizer, is there a step by step guide, im new to Unreal! Thanks

You have a project doing that here CubeDemo

You need to select the input audio device using “Set Default Device Loopback Audio” node instead of the system default for an instance of the AudioAnalyzerManager.

You can use “Get Output Audio Devices” node to retrieve a list of found devices, and see if the interface is in that list, use this name as input of “Set Default Device Loopback Audio” node.

WINAPI takes the audio output pipeline of the selected device and I feed that data to the analyzer using a buffer, if your device appears in the list of audio devices in the windows audio settings then is must be available to be captured by the plugin.

Also, if you have any log of UE4 using your device with the plugin we can check if an error has occurred for that especific device.

Well, I’m just using your loopback demo to test all this out atm and that node is already there. Right?
](filedata/fetch?id=1862939&d=1613456051)

I “think” the main issue while I can specify my device I have no way to specify which port to use. I have 28 in and 28 out on my interface. Now, here’s the thing. After facerolling for a bit I figured out that if I have OBS on and I have monitor enabled NOW I am getting audio in UE4.

It’s just really weird because I believe it’s doing a double loopback here. External audio device > interface > loopback internally in the interface > windows > obs > windows loopback > UE4 this might need explaining.

My CDJ’s are outputting XLR to my interface.
My interface routes that audio to multiple hardware outputs. It also does a loopback on any channel I specify.
The interface does a loopback taking channel 1-2 into windows.
Now windows can hear the interface audio which means OBS can hear it. At this point UE4 does not hear the audio.
Within OBS I can set the audio to monitor and output to stream. If I have output only, no sound in UE4. If I enable monitor I get sound in UE4. This is the secondary loopback.

I feel like something in UE4 is missing atm as OBS is able to hear the audio but not UE4, until I loopback into Windows again.

Right now it is working but this is a bandaid so I would really like to get to the bottom of the main issue to prevent further headache down the road.

Thanks for your reply!

Edit: Quick edit here, I was doing more testing just now and in the other demo it allows me to select mic which is taking the same audio that OBS was taking. But OBS is off. I went back inito the loopback demo to test with OBS off and same results, did not work. Went back to the demo level (A_StarterProject_424) and it is still working. So whatever Mic is pulling in, is getting the loopback from the interface.

@BYC Hey, is it already possible to apply effects to the played sound? I would like to slow it down and speed it up, same as what the default pitch slider does.

Hi, since it is posible to load audio into a procedural sound wave you can use the effects that can be applied to this objects. For example you can use the Set Pitch Multiplier node of an AudioComponent that use a procedural sound wave as their audio input. I have wrapped some nodes related to SoundWave playback to be able to fix some problem with looping and starting time when is used with a ProceduralSoundWave.

In this documentation page you can find more details of the overrided nodes: Inputs — AudioAnalyzer 3.01 documentation
You can use other nodes related to playback effetcs, just start the playback sound with the wrapper version.

So basically now you can use realtime pitch modifications using the standard nodes, but it doesn’t affect to the values returned by the analyzer, it takes the original audio values to do the analysis.
For example you can set a volume of 0 and you will not ear the sound but you can still obtain the result of the analyzer as if the volume was set to 1.
With pitch modifications is the same, you can ear the sound at more speed but the pitch tracking analyzer will return the original frequency value and the result will be the same but in less time.

You will have to adjust the results manually to you playback if you want the what-you-ear analysis

Trying to get AudioAnalyzer to work on iOS, specifically I like to analyze mic input. I deployed the AA_StarterProject on my iPhone, but it crashes as soon as I activate the microphone button. The test file works fine on the iPhone. Is there anything I have to setup?
It also doesn’t work in Unreal on Mac. It doesn’t crash however.