UE4 Niagara Audio Visualization (passing data from BP to Niagara)

Hi, I’m new here (probably the first time you’re reading an introduction like this :wink:),
I’m starting to dive deeper into VFX a little bit and wanted to tackle Audio Visualization (specifically music) with UE4’s niagara system, since it seems to have a lot of potential.
I’m using a simple setup: A grid of cubes that should scale along the Z-axis when the Blueprint handeling the sound visualisation tells them to. The blueprint sends data to niagara using a “niagara parameter collection”. That works fine. The only problem I’ve run into is distributing the signals from the sound visualisation to the corresponding indizes on the niagara particle cubes. I hope you get, what I mean. I want my cubes to be distributed equally along the 20 frequency spectrums I’ve set in the blueprint. But I can’t seem to get anything sensible with the Particle ID and the passed index from the blueprint.
The Blueprint: Sound Vis to Niagara WIP 01 posted by anonymous | blueprintUE | PasteBin For Unreal Engine
The niagara Particle update module handeling the cube scale:

Shoutout to @cannabis.cod3r for his awesome tutorials that helped get me started in niagara in the first place. Thanks, man! :+1:

1 Like

How it looks right now: com-crop

You’re very welcome :+1:

I should try passing a Niagara Parm Collection myself, I haven’t done that yet.

As for indices:

  • Particles.ID only works when ‘Require Persistent IDs’ is enabled in the emitter spawn properties and CPU sim mode is set.
  • Exec Index works in both modes, but doesn’t provide a stable identifier. I talk about this in my Particle ID tut.

I believe persistent IDs in GPU mode are coming down the pipe.

Once you get particle IDs sorted, I think it should be fairly easy to distribute frequencies in groups. You could use a single emitter, or many of them (one for each frequency group).

One last thing, I also have a tut on feeding OSC to Niagara. And if you enable the latest audio engine, there is a granular, subtractive, and wavetable synth. :slight_smile:

1 Like

Thanks for your reply!

That’s right where I’m stuck though at the moment. :sweat_smile:
I know about the difference between Particle ID and Exec Index and purposely used Particle ID for persistency. Maybe I’m stuck on a really simple problem and I just don’t see it at the moment. In Niagara Modules there are no loops. So how do I get the Indizes and corresponding offset values (floats) to the module and the cubes? Am I missing something really stupid? :thinking:

I got you covered again: for loops in Niagara :slight_smile:

Of course you do! :grinning:
Thanks, I’m gonna take a look at it and get back to you.


I’ve got a quick question: what should I do if I have to use GPUsim because I need to use texture sample (here I’m referring to @cannabis.cod3r video tutorial on using render targets for particle colours). I tried using Exec Index but the results are a bit inconsistent.


I use ExecIndex for the render target tuts and haven’t noticed any issues. I’ve heard stable particle ID support for GPU mode is coming.