Hello :) I'm from Russia, so excuse me for my English.

Hello :slight_smile:
I’m from Russia, so excuse me for my English.

Here all are very fond of glowing objects. And I decided to share our project with a signal level indicator. It is made on light-emitting diodes WS2812V and microcontroller ATmega328. But the project did not use the FastLED library. The video shows the prototype of the indicator. It is possible to adjust the indicator modes.
https://youtu.be/mLCGU4dn8zc

Very cool. What did you use to input the audio? I tried something similar a while back but it flickered too much.

@Garreth_Tinsley Thank you, we tried :slight_smile:
Scheme connecting the audio signal was used such as in the picture. But in order to avoid flicker, it was necessary to do software filtering of the incoming signal. And for each mode, you can adjust the rate at which the indicator level changes. The video shows the modes with the lowest speed.
missing/deleted image from Google+

Nice project. Any chance to share some code or tutorial ?

@Christophe_Lallement Thanks :slight_smile:
Some information is available, but only in Russian: https://plus.google.com/u/0/+NikitaOgonek
There is a code for a simple version of the signal level indicator for the Arduino Pro Mini: https://github.com/onikita/Simple-VU-meter

@Nikita_Ogonek Do you have a photo of the separate acrylic layers that make up the two signal indicators? What do the parts look like before being stacked together?

@marmil The photo was somewhere. If they exist, I’ll post it tomorrow.

@Nikita_Ogonek ​ okay, I did try some basic averaging and was looking at moving averages, or similar. Did you use low/hi pass? What was the mathematical filtering scheme you applied in software?

@Garreth_Tinsley At the hardware level, we have provided a low-pass filter. But without it, the indicator worked better. Therefore, all the filtering was done at the software level, and the filtering was double.

  1. We used filtering by the moving average method, only accumulating not values ​​but squares of values. The buffer size is N = 32 values.
    We have provided two options for displaying the signal on the indicator. The first is the root-mean-square value: CurrentValue = SQRT (SUM (Vi ^ 2) / N)
    (it is shown in the video). And the second is the decimal logarithm of the root-mean-square value: CurrentValue = LOG10 (SQRT (SUM (Vi ^ 2) / N)) (It seems to be closer to human nature, but it was not so dynamic, so it’s not on the video).

  2. And the second software filter is a smooth rendering. The indicator is updated every 5 ms. In this case, for 5 ms the level can not change by more than 1 LED (this filter is shown in the video). You can also create a mode without this filter, that is, the level of the column after 5 ms will change immediately to a new value. And a compromise option: after 5 ms the level will change only by 50% of the desired value.

I hope that at least somehow I was able to help you :slight_smile:

@marmil Unfortunately, there was only a photo of the first prototype. The video uses a later version with a double base (two layers of acrylic) and an additional front layer of acrylic in the form of a grill for better light scattering.
missing/deleted image from Google+

@Nikita_Ogonek Thank you for finding that. It’s a nice design.

Very nice animations! Very smooth and clean.

@Kyle_Halvorson Thank you! We also really like it. On the video, the indicator does not look as impressive as in reality.