dB just refers to any logarithmic value, I change the range for legibility, but dB is still the correct descriptive unit.

Note that the 0-100 range is only on the visualisation. All the streaming and recorded values are in the original ~{-1:+1} range.

One of the main reasons I don’t include FFT values in the stream is because there are an almost infinite number of ways to calculate them and they are all valid. So I leave it up to the user to calculated the FFT from the raw data, depending on their needs.

FFT is a frequency analysis of a section of data over time. That time part is very important, because depending on how large your time window is, depends on how granular your results are, but also the larger the time window, the less final results you will have. For example, if you use a 256 sample window on a 1 minute 256Hz recording of, you will get 60 FFT arrays (one for each second), but split into some very large frequency blocks. But if you use a 2048 window on the same data set, you would only get 7 FFT arrays, but your data will be much finer grained frequency blocks, which you might require if say you need to differentiate between 1Hz and 2Hz.

Not to mention whether or not you want a hamming window, or filters applied.