Smooth List Values

Hi.

Would anybody know how to smooth the changing values in lists ?

For example, for Audio Data. Audio data is changing quickly and abruptly (see f.e. the sample composition “Visualize Frequencies”).


1 - That composition uses some manual "Get Item from List’ whose values can easily be smoothed by adding some “Smooth with duration” nodes (see the attached modified composition A).


2 - But the question is, how can we make this a whole more automatic ?

For example can we smooth out the values from the “Calculate Amplitude for Frequencies” node ? I have tried doing that using “Process List” but it seems too heavy (even with only 7 frequency channels) and slows down events to 8/seconds (see screenshot and attached file B).

Was wondering if there is something I can do to improve it ?

PS : Node that both files use “Receive Live Audio” node for sound input.

Thanks

@Bodysoulspirit, I converted your question to a feature request. Right now the methods you pointed out (smoothing individual list items with Process List or Get Item from List) are the only ways to smooth a list. It would be more convenient and better performing to have a node that smooths the entire list.

If you haven’t already, you might check if the Process List composition runs any faster for you in Vuo 1.2 alpha 3 (https://vuo.org/releases). We improved its performance. On my relatively slow computer, I saw framerates comparable to your 8-9 events per second on Vuo 1.2 alpha 3. But if you have a faster computer, it might do better.

Right now the methods you pointed out (smoothing individual list items with Process List or Get Item from List) are the only ways to smooth a list.

Correction! Only the Get Item from List method works.

The problem with the Process List method, which puts the Smooth node inside the Process List loop, is that Smooth can’t keep track of which list item it’s smoothing. If Process List sends the list “1.0, 2.0, 3.0” and then the list “1.1, 2.1, 3.1”, you want it to smooth 1.0->1.1, 2.0->2.1, 3.0->3.1. But instead, it smooths 1.0->2.0->3.0->1.1->2.1->3.1.

Another problem with the Process List composition is the way the events go through the Process List loop. With Process List, you have to be careful that each event fired from Process Item corresponds to exactly one event into Processed Item. (For more info, see “Tip: How to use the Process List node” in https://community.vuo.org/t/-/5088.)

On my relatively slow computer, I saw framerates comparable to your 8-9 events per second on Vuo 1.2 alpha 3.

Never mind, the slow framerate was because of the second problem I mentioned. Process List can do 60fps when the Process Item and Processed Item events line up.

@jstrecker Ok … I don’t really understand the last part you mention (the second problem) but I might wanna read the tip on how to again.

But as Process List will not be able to smooth a list, I wonder, instead of this feature request, if Allow Ports to accepts Lists would allow this.
If yes, I’d rather want this feature request to be merged with that more general solution and vote for that one instead (we could add a note there regarding this)

Thanks

@jstrecker Ok … I don’t really understand the last part you mention (the second problem) but I might wanna read the tip on how to again.

OK. Let me know if there are any specific questions I can answer for you.

But as Process List will not be able to smooth a list, I wonder, instead of this feature request, if Allow Ports to accepts Lists would allow this. If yes, I’d rather want this feature request to be merged with that more general solution and vote for that one instead (we could add a note there regarding this)

Good find! I made a note on that case, and am merging this feature request with that one. We haven’t figured out all the details of that feature request, but, as you’re not the first person to ask about stateful nodes in Process List loops, clearly there’s a need to handle it somehow.

@jstrecker Is the code for Process List node open source or black box? Might help me to attempt a Smooth List node over the break.

Cool! All nodes except Pro nodes are open source. While logged in to vuo.org, go to https://vuo.org/download and click the link near the bottom to download the source code.

For what it’s worth I unrolled the loop and did it by creating a Take from List and a Smooth with Inertia node for every item in a list of 25 items then puts them back together here: Graph Animation

Node to smooth lists with various curves would be more desirably. I wrote it in JS for QC when Smooth patch didn’t work inside the iterator macro, if I can learn C enough will attempt for Vuo.

![Smooth List][Smooth List]
[Smooth List]: https://vuo.org/sites/default/files/feature/Screenshot%202017-07-10%2009.49.52.jpg