PDA

View Full Version : Spectrum Analyzer reversed?



Milhouse
2005-07-03, 13:01
Since I first got my SB2 (having ugpraded from a Slimp3 to an SBG) it always struck me that the Spectrum Analyzer seems to be reversed, that is the high frequencies are on the left with the lower freqencies on the right. This seems the opposite of most other spectrum analyzers I've ever experinced, where bass/low frequency is always on the left.

Is this intentional, my imagination, or can it be reversed as I would prefer low frequencies on the left as this is what I'm used to (perhaps a user pref?)

Finally, anyway to show remaining buffer when a visualisation is enabled - the remaining buffer is always useful when listening to internet radio. It seems the remaining buffer (or buffer fullness) isn't shown when a visualisation is enabled, even if the options is enabled in the user preference.

max.spicer
2005-07-03, 13:15
Isn't it that the left channel is as you would expect, but is then followed by the right channel mirrored? This makes little sense sonically, but is apparently more aesthetically pleasing.

Max


Since I first got my SB2 (having ugpraded from a Slimp3to an SBG) it always struck me that the Spectrum Analyzer seems to be reversed, that is the high frequencies are on the left with the lower freqencies on the right. This seems the opposite of most other spectrum analyzers I've ever experinced, where bass/low frequency is always on the left.

Is this intentional, my imagination, or can it be reversed as I would prefer low frequencies on the left as this is what I'm used to (perhaps a user pref?)

Finally, anyway to show remaining buffer when a visualisation is enabled - the remaining buffer is always useful when listening to internet radio. It seems the remaining buffer (or buffer fullness) isn't shown when a visualisation is enabled, even if the options is enabled in the user preference.

Milhouse
2005-07-03, 14:00
Not sure, I'm referring to the frequency spectrum analyzer, the one with multiple bands for each frequency - it seems high frequencies are on the left, low frequencies on the right which seems to be the opposite of the "norm"... are you referring to the two-band analyzer which I guess represents left/right channel, although I don't use it so can't be sure :)

kdf
2005-07-03, 14:12
Quoting Milhouse <Milhouse.1rm3mb (AT) no-mx (DOT) forums.slimdevices.com>:

>
> Not sure, I'm referring to the frequency spectrum analyzer, the one with
> multiple bands for each frequency - it seems high frequencies are on the
> left, low frequencies on the right which seems to be the opposite of the
> "norm"... are you referring to the two-band analyzer which I guess
> represents left/right channel, although I don't use it so can't be sure
> :)
>
The fullscreen spectrum analyser is mirrored, just as max said. The middle is
high frequency with the low bands at the left and right extremes.

-kdf

kdf
2005-07-03, 14:17
Actually, I've dug up the thread containing the more detailed explanation of the spectrum analyser from Vidur.

http://forums.slimdevices.com/showthread.php?t=13515

Milhouse
2005-07-03, 16:26
Thanks for the info kdf, and Max - sorry for my confusion.

I tend to use the "small spectrum analyzer and remaining time" setting which results in 8 bands, each of which (I assumed) represented distinct frequencies... it wasn't obvious there was any mirroring going on as I quite often observe a peak in a left-most band when for example, a cymbal is playing, and bass seems to affect the right most bands.

Will now read the links to Vidurs explanation. :)

Edit
Have now read Vidurs explanation, not sure it clarifies the mirroring, but I just took a look at the *fullscreen* spectrum analyzer and it's clear there is mirroring occuring here, although I'm not sure why it's necessary - is it not possible for the fullscreen SA to represent 40 (or however many can be displayed) frequency bands (ie. 0-100, 101-200, etc. up to ~22K or whatever is reasonable) rather than emphasise high frequencies in the middle, with mirrored low at left and right?

As for the *small* SA, it doesn't appear to be mirroring (probably because mirroring across 8 bands wouldn't be sensible). It does appear that on the small SA the high frequencies are mostly present on the left with low freq on the right, and I would expect the reverse to be the case.

seanadams
2005-07-03, 16:59
I tend to use the "small spectrum analyzer and remaining time" setting which results in 8 bands, each of which (I assumed) represented distinct frequencies...

8-band analyzer:

This represents left and right channels summed together, ie "mono". The left side of the display is bass and right side is treble. If it doesn't look correct, try a different track having more distinct transients on the high end.

Full-screen analyzer:

32 for left ch and 32 for right ch.

Left bass is on the left
Right bass is on the right

To the immediate left and right of the middle of the screen are the left and right treble bands, respectively.

Milhouse
2005-07-03, 19:42
8-band analyzer:

This represents left and right channels summed together, ie "mono". The left side of the display is bass and right side is treble. If it doesn't look correct, try a different track having more distinct transients on the high end.


I'll do some more investigation and try to find some test tones, shame I can't rip my Avia DVD AV setup disc - I'll try it later in the week if I get the right software... :)

Perhaps the limited number of bands is confusing my ear/eye co-ordination, as the left-most band seems to see more activity than would appear reasonable.

(Note that this isn't a specific issue with the latest 14 firmware or 6.1b1, it's always been this way.)


Full-screen analyzer:

32 for left ch and 32 for right ch.

Left bass is on the left
Right bass is on the right

To the immediate left and right of the middle of the screen are the left and right treble bands, respectively.

Right gotcha, that makes sense. The penny has dropped at last! ;)

radish
2005-07-03, 22:30
WRT the small (8 band) display - it looks to me that the bass and treble are the "right" way around (i.e. bass on the left) but that the first band (deepest bass) is way over sensitive. I usually end up with something like this:



# #
# ##
# ##
# ###
# # ####
########

Apologies for the poor ascii art but you get the idea. Vidur posted how to adjust the sensitivity a while ago, I may try turning the first band down.

Milhouse
2005-07-04, 04:11
Apologies for the poor ascii art but you get the idea. Vidur posted how to adjust the sensitivity a while ago, I may try turning the first band down.

A picture is worth a thousand words - never more true in this case, your picture is an accurate representation of the over sensitivity of the left-most band, which distorts the analysis.

I'll work on some test tones later in the week and come up with data identifying which tones fall into which band...

max.spicer
2005-07-04, 05:45
Use the analog vu instead - it's by far the best screensaver. :-)

Max


A picture is worth a thousand words - never more true in this case, your picture is an accurate representation of the over sensitivity of the left-most band, which distorts the analysis.

I'll work on some test tones later in the week and come up with data identifying which tones fall into which band...

oreillymj
2005-07-05, 04:51
I really liked the look of the analogue VU in the gallery on this page - http://www.slimdevices.com/images/gallery/6.jpg ,but the current analogue VU does not look like this. The arrowheads on the needles just look a little naf for my liking.

Milhouse
2005-07-09, 12:42
I've generated some test tones (100-3000 in 100Hz increments, then 1000Hz incrememnts up to 14Khz) and it seems that the 8-bar Spectrum Analyzer is not weighting the lower frequencies as strongly as it possibly should. I tested using MP3 format as for some reason my SBG2 wouldn't play the WAV formats.

It would appear that the following frequencies correspond to each bar:



Bar 1 - 0Hz - 1000Hz
Bar 1 & 2 - 1100Hz - 1900Hz
Bar 2 - 2000Hz - 2500Hz
Bar 2 & 3 - 2600Hz - 3000Hz
Bar 3 - 4000Hz
Bar 4 - 5000Hz
Bar 4 & 5 - 6000Hz
Bar 5 & 6 - 7000Hz
Bar 6 - 8000Hz
Bar 7 - 9000Hz
Bar 7 & 8 - 10,000Hz
Bar 8 - 11,000Hz
Bar 7 & 8 - 12,000Hz
Bar 7 - 13,000Hz
Bar 6 & 7 - 14,000Hz
Bar 8
14,000
13,000
12,000
11,000
4000 5000 6000 7000 8000 9000 10,000
2600-3000
2000-2500
1100-1900
0 - 1000
Bar 1 | Bar 2 | Bar 3 | Bar 4 | Bar 5 | Bar 6 | Bar 7 | Bar 8 |


For some reason frequencies above 11K are begin to appear in lower bars of the analyzer.

It would better, I think, if the first 4 bars were used to represent frquencies between 0-3500Hz, with the remaining 4 bars used for frequencies above 3000Hz. This may give a better representation that at present.

eg.


11,000+
10,000
9000
8000
7000
6000
5000
4000
3100-3500
2600-3000
2100-2500
1600-2000
1100-1500
600-1000
0 - 500
Bar 1 | Bar 2 | Bar 3 | Bar 4 | Bar 5 | Bar 6 | Bar 7 | Bar 8 |


I'll take a look and see if I can tweak anything in squeezebox2.pm, but as I know next to nothing about Perl I'm not expecting much success! :)

A.J. Aranyosi
2005-07-11, 07:38
As long as you're deviating from a Fourier representation of the
signal, may I suggest one that's based on perceptual studies? The
Bark scale (http://www-ccrma.stanford.edu/~jos/bbt/Bark_Frequency_Scale.html)
is based on the idea of critical bands --- namely, people represent
the ear as a series of band-pass filters, and the critical band at a
given frequency is defined as the width of a rectangular filter that
passes the same power as the ear's bandpass filter at that frequency.
The key feature here is that the width of this filter varies with
frequency. So an 8-band Bark-scale based representation would have
bands corresponding to:

Band 1: 0 - 300 Hz
Band 2: 300 - 630 Hz
Band 3: 630 - 1080 Hz
Band 4: 1080 - 1720 Hz
Band 5: 1720 - 2700 Hz
Band 6: 2700 - 4400 Hz
Band 7: 4400 - 7700 Hz
Band 8: >7700 Hz

What you'll notice here is that the bands are smaller at lower
frequencies - i.e., it's easier for us to tell the difference between
300 and 400 Hz than the difference between 8300 and 8400 Hz.

After taking a quick peek at the code, though, I'm guessing that the
FFT for the spectrum analyzer is computed within the Squeezebox 2
itself, so this particular change would have to be implemented in
firmware (and maybe not even then, if the FFT is done in hardware).


On 7/9/05, Milhouse <Milhouse.1rx3wz (AT) no-mx (DOT) forums.slimdevices.com> wrote:
>
> I've generated some test tones (100-3000 in 100Hz increments, then
> 1000Hz incrememnts up to 14Khz) and it seems that the 8-bar Spectrum
> Analyzer is not weighting the lower frequencies as strongly as it
> possibly should. I tested using MP3 format as for some reason my SBG2
> wouldn't play the WAV formats.
>
> It would appear that the following frequencies correspond to each bar:
>
>
> Code:
> --------------------
>
> Bar 1 - 0Hz - 1000Hz
> Bar 1 & 2 - 1100Hz - 1900Hz
> Bar 2 - 2000Hz - 2500Hz
> Bar 2 & 3 - 2600Hz - 3000Hz
> Bar 3 - 4000Hz
> Bar 4 - 5000Hz
> Bar 4 & 5 - 6000Hz
> Bar 5 & 6 - 7000Hz
> Bar 6 - 8000Hz
> Bar 7 - 9000Hz
> Bar 7 & 8 - 10,000Hz
> Bar 8 - 11,000Hz
> Bar 7 & 8 - 12,000Hz
> Bar 7 - 13,000Hz
> Bar 6 & 7 - 14,000Hz
> Bar 8
> 14,000
> 13,000
> 12,000
> 11,000
> 4000 5000 6000 7000 8000 9000 10,000
> 2600-3000
> 2000-2500
> 1100-1900
> 0 - 1000
> Bar 1 | Bar 2 | Bar 3 | Bar 4 | Bar 5 | Bar 6 | Bar 7 | Bar 8 |
>
> --------------------
>
>
> For some reason frequencies above 11K are begin to appear in lower bars
> of the analyzer.
>
> It would better, I think, if the first 4 bars were used to represent
> frquencies between 0-3500Hz, with the remaining 4 bars used for
> frequencies above 3000Hz. This may give a better representation that at
> present.
>
> eg.
>
> Code:
> --------------------
>
> 11,000+
> 10,000
> 9000
> 8000
> 7000
> 6000
> 5000
> 4000
> 3100-3500
> 2600-3000
> 2100-2500
> 1600-2000
> 1100-1500
> 600-1000
> 0 - 500
> Bar 1 | Bar 2 | Bar 3 | Bar 4 | Bar 5 | Bar 6 | Bar 7 | Bar 8 |
>
> --------------------
>
>
> I'll take a look and see if I can tweak anything in squeezebox2.pm, but
> as I know next to nothing about Perl I'm not expecting much success! :)
>
>
> --
> Milhouse
>

vidurapparao
2005-07-11, 13:49
A.J. Aranyosi wrote:

><snip>
>After taking a quick peek at the code, though, I'm guessing that the
>FFT for the spectrum analyzer is computed within the Squeezebox 2
>itself, so this particular change would have to be implemented in
>firmware (and maybe not even then, if the FFT is done in hardware).
>
>
The specturm analyzer and FFT are computed in firmware. The FFT library
used is Kiss FFT (http://sourceforge.net/projects/kissfft/). While the
firmware is not open-sourced, a close facsimile of the spectrum analyzer
generation can be found within Richard Titmuss' excellent Softsqueeze
(see
http://svn.slimdevices.com/trunk/softsqueeze/src/com/slim/softsqueeze/visualizer/VisualizerSpectrumAnalyser.java?rev=3039&view=markup).

Any submissions to improve the spectrum analyzer within Softsqueeze
could potentially be ported back to the SB2...keeping in mind that the
code will need to run in a fixed-point, memory-constrained embedded
environment.

--Vidur

Milhouse
2005-07-11, 14:07
Band 1: 0 - 300 Hz
Band 2: 300 - 630 Hz
Band 3: 630 - 1080 Hz
Band 4: 1080 - 1720 Hz
Band 5: 1720 - 2700 Hz
Band 6: 2700 - 4400 Hz
Band 7: 4400 - 7700 Hz
Band 8: >7700 Hz


That could work equally well, and nice to know it's a bit more scientific than my finger-in-the-air scale! :)

Milhouse
2005-07-11, 14:08
The specturm analyzer and FFT are computed in firmware.

This was the conclusion I eventually came to but hadn't updated this post - it seems the most one can do by modifying the SlimServer code is adjust the frequency bias.



The FFT library used is Kiss FFT (http://sourceforge.net/projects/kissfft/). While the
firmware is not open-sourced, a close facsimile of the spectrum analyzer generation can be found within Richard Titmuss' xcellent Softsqueeze (see
http://svn.slimdevices.com/trunk/softsqueeze/src/com/slim/softsqueeze/visualizer/VisualizerSpectrumAnalyser.java?rev=3039&view=markup).


SoftSqueeze does indeed achieve a fairly (but not 100%) accurate representation of an SB2 spectrum analyzer. :)



Any submissions to improve the spectrum analyzer within Softsqueeze could potentially be ported back to the SB2...keeping in mind that the code will need to run in a fixed-point, memory-constrained embedded environment.
--Vidur

Sounds tricky, and I think out of my league :(

Marc Sherman
2005-07-13, 09:22
A.J. Aranyosi wrote:
>
> Band 1: 0 - 300 Hz
> Band 2: 300 - 630 Hz
> Band 3: 630 - 1080 Hz
> Band 4: 1080 - 1720 Hz
> Band 5: 1720 - 2700 Hz
> Band 6: 2700 - 4400 Hz
> Band 7: 4400 - 7700 Hz
> Band 8: >7700 Hz
>
> What you'll notice here is that the bands are smaller at lower
> frequencies - i.e., it's easier for us to tell the difference between
> 300 and 400 Hz than the difference between 8300 and 8400 Hz.

Actually, the bands are wider at the low and high ends, and narrower in
the middle. You're comparing them linearly, but frequencies should
always be compared logarithmically. The important number is
band-top/band-bottom -- ie: how many octaves wide is the band:

band 1: infinite (or 15, assuming 20Hz min range)
band 2: 2.1
band 3: 1.71
band 4: 1.59
band 5: 1.57
band 6: 1.63
band 7: 1.75
band 8: infinite (or 2.60 assuming 20kHz max range)

This makes good sense -- we hear better at the center of our hearing
range than we do at either extreme.

- Marc

Marc Sherman
2005-07-13, 09:25
Marc Sherman wrote:
>
> Actually, the bands are wider at the low and high ends, and narrower in
> the middle. You're comparing them linearly, but frequencies should
> always be compared logarithmically. The important number is
> band-top/band-bottom -- ie: how many octaves wide is the band:

Uh, sorry, the ie isn't quite right there -- the width in octaves is
(top/bottom)-1. Just subtract 1 from each of the numbers I gave.

- Marc