In this topic, we will focus on the design details of a Digital, realtime Audio LED Spectrum analyzer. The aim focuses on building a device to display the distribution of an audio signal energy to 20 specific frequency bands, using DSP technology. We will use fast Fourier transform (FFT) in order to analyze any audio signal in real time. The obtained Fourier transform will result in a bank of 20 parallel frequency filters. The output of the filters will be displayed on a simple 20 x 20 LED display. The unit will be designed to support up to four different displaymodes.
For constructional details about building this design on an circuit board, please refer to the Audio Spectrum Analyzer circuit project.
Brief History
The first version of this Digital Audio Spectrum Analyzer appeared during 2007 at the "Microchip Embedded Control Design Contest" as the MT1750 project. It was initially published on Circuit Cellar's website. Soon, this project becomes a favourite one among electronic enthusiasts. This is because, it is not just a good project but it also uses a very clever method for digital signal processing and filtering. Later, the project was published on Circuit Cellar Magazine (issue 244, November 2010).
Keywords: Digital signal processing, fast Fourier transform, frequency spectrum, Hamming window, real and complex vectors, frequency response, filterbank, bargraph, display frame and frame rate.
1. Introduction
Spectrum analyzers are employed in most of the modern signal processing systems for measuring the distribution of signal energy in frequency. An audio spectrum analyzer is used for measurements in the audible frequency spectrum (from 0 to 20000 Hz) and can be a very powerful tool for keeping a studio well tuned. Many modern audio devices, such as amplifiers, audioequalizers, audio mixers and PCaudio players contain a spectrum analyzer, which is used to display an audio frequency spectrogram (the frequency spectrum of the audio signal) on an LCD, CRT or LED display. The spectrogram not only offers a spectacular visual effect but also provides a quick way to inspect the audio performance during playback, recording or during any tonal adjustment (bass, treble, mid frequencies adjustment or adaptive equalization).
A Digital, realtime Audio Spectrum analyzer circuit for audio devices (photo 1) is presented in this project. This circuit is based on a dsPIC30F6012A, which is chosen for a feature set which matches to the requirements for this project. The DSP engine, the 12bit A/D converter, the timer3 timer, 42 I/O ports and the large internal data memory of the dsPIC30F6012A are used in this project. A quad of dual MCP6022 opamps for antialiasing filtering and gain are also used in the analog section of the circuit.
The Digital, realtime Audio Spectrum analyzer circuit for audio devices can be connected to any audio device. It accepts an analog audio signal as input. It digitizes and processes this audio signal using a DSP. It computes the distribution of the audio signal energy to 20 specific frequency bands and displays it on a 20x20 LED display. Everything is done in real time.
The Digital, realtime Audio Spectrum analyzer circuit for audio devices supports 4 displaymodes. The audio frequency spectrogram (the distribution of the audio signal energy) can be displayed in any of these 4 display modes:

“Bars” (It is a real – time bar graphs plot)

“Bars + peaks” (It is a real – time bar graphs plot with the peak being hold for a some time)

“Climbing Bars” (It is a “slow” bar graphs plot. The bars are “climbing” to the peak. After this, they fall at a constant rate until a greater peak comes up)

“Climbing Bars + Rain” (It is a “slow” bar graphs plot which gives the sense of “Rain”. The bars are “climbing” to the peak and the peak is being hold. After this, the bars fall at a constant rate A and the peaks fall at constant rate B until a greater peak comes up. It is A>B)
The distribution of the audio signal energy is plotted in 20 bar – graphs. Each bargraph consists of 20Leds. The bargraph plots cover a dynamic range of 27db with 1.3db resolution. These details are presented in photo 2.
The design procedure of the system is presented section 2. The system’s hardware and software are presented in section 3 and 4 respectively. Some performance measurements of the system are presented in section 5.
Photo 1. The Digital, realtime Audio Spectrum analyzer circuit for audio devices
Photo 2. The distribution of the audio signal energy is plotted in 20 bar – graphs. 4 displaymodes are supported (This photo was taken during normal operation at “Bars” display mode)
2. The design procedure
The following have been taken into account, during the design procedure:

The audio frequency spectrum analyzer has to cover the 0 – 20000Hz frequency band.

The spectrogram is displayed in 20 bar graphs.

Each bar graph displays the total signal power level in a specific spectral band. As such, there are 20 spectral bands and we need 20 bandpass filters.

Each bar graph consists of 20 LEDs

The audio frequency spectrum analysis must be performed and displayed in real time.

We must use antialiasing filters of less or equal to 5th order (for circuitsize reduction).
Designing step 2.1:
We need 20 bandpass filters in order to decompose the input signal into a set of 20 sub band signals. Which must be the central frequency of each bandpass filter?
Answer: There is no need to display any spectral components with resolution greater than 30Hz at the lower bound of the audio spectrum because the human ear has not any great resolution at these frequencies. Thus, we choose 31Hz, 62Hz and 93Hz to be the central frequency of the 1st , 2nd and 3rd filter respectively:
, ,
(2.1)
There is also no need to display any spectral components with resolution greater than 5KHz in the upper bound of the audio spectrum. Thus, we chose 15KHz to be the central frequency of the 20th filter.
(2.2)
Considering the octave tonality sense of the human ear, the best way to find the central frequencies for the 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 and 19 filters is solving equations (2.1)  (2.2) and (2.3).
For i=4,5,6 … 20. Where a, is a constant fraction of the octave
(2.3)
By solving (2.1), (2.2) and (2.3) we obtain: octaves and
Table 1. The central frequency of each filter
i 
CF(i) 

i 
CF(i) 
1 
31 Hz 

11 
1024 Hz 
2 
62 Hz 

12 
1380 Hz 
3 
93 Hz 

13 
1862 Hz 
4 
126 Hz 

14 
2510 Hz 
5 
170 Hz 

15 
3386 Hz 
6 
230 Hz 

16 
4565 Hz 
7 
310 Hz 

17 
6155 Hz 
8 
420 Hz 

18 
8300 Hz 
9 
563 Hz 

19 
11200 Hz 
10 
760 Hz 

20 
15000 Hz 
Designing step 2.2:
We must implement 20 bandpass filters in order to decompose the input signal into a set of 20 sub band signals. Is it possible to be done with a DSP in real time?
Answer: Considering the required filter’s order (which is greater than 8 in low frequencies in order to achieve 30 HZ resolution) and the DSP’s speed (up to 30MIPS) it is impossible to be done in real time using FIR or IIR approach. The only way is FFT (Fast Fourier Transform).
Design problem 2.3:
Which must be the length of the FFT and the sampling frequency in order to achieve the required frequency resolution?
Answer: Considering table 1, we need a frequency resolution of 30Hz. The frequency resolution depends on the FFT’s length and the sampling frequency. For a Npoints FFT the frequency resolution df is:
(2.4)
On the other hand, the sampling frequency must comply with the Nyquist sampling theorem, which indicates that a continuous signal can be properly sampled, only if it does not contain frequency components above onehalf of the sampling rate:
(2.5)
For an audio signal, the fmax is limited to 20 KHz by appropriate filtering. This way, the Nyquist limit is at 40KHz. In order to avoid using large antialiasing filters, it is better to set a sampling frequency much greater than the Nyquist limit. Using a 5th order Butterworth antialiasing filter, oversampling at 80KHz is a sufficient rate. From equation (2.4) we conclude that N must be greater than 2667 in order to achieve 30Hz resolution at a sampling frequency of 80KHz. Actually, the N must be greater than 4096, because it can only be a power of 2.
A 4096points FFT cannot be implemented using a dsPIC in real time (mostly due to fractional nature restrictions). On the other hand, there is no need for 30Hz resolution at frequencies above 126Hz, as it can be seen from table 1. The solution to the problem is the use of 2 different sampling rates, 2 x 256pointsFFTs and 2 antialiasing filters as shown in figure 1:
Figure 1. The answer to the design problem 2.3 (The actual sampling frequencies, which are used in the project, are 7998.6981 Hz and 87252.071Hz respectively and they provide a frequency resolution of about 31.25Hz and 340.83 Hz.)
As it can be seen from figure 1 and table 1, the 1st FFT can provide the resolution needed for the low frequencies, while the 2nd FFT provides a very good resolution for frequencies over 1KHz. Of course, the solution, which is presented in figure 1, is not the only possible one to the problem but it works perfect with the dsPic.
Designing step 2.4:
We must decompose the input signal power into a set of 20 sub band signals. To do so, we must use 20 bandpass filters, each one having a CF(i) central frequency as indicated in table 1. Each subband signal must represent the total input signal power of each spectral band and will be displayed on a 20LED bar graph. How can we do this with FFT and figure 1?
Answer: We need a FilterBanking algorithm in order to implement a 20 non uniformband parallel analysis filter bank using FFT. We must use some mathematics to do this:
Consider the case when a single tone S of unity magnitude (0db), at frequency f, is applied to the input of the device. This tone will be sampled with a SR sampling frequency. This will result in a sampling sequence S(n, f, SR) as described in equation (2.6):
, n=0,1,2,3….., pi=3.14….
(2.6)
Consider the case that we store the first 256 samples of this sequence in memory and we apply a 256points, normalized to 0.5 Hamming window w(n). This results to Y(n, f, SR):
, n=0,1,2 …..255
(2.7)
(2.8)
Afterwards, we apply a 256points Fast Fourier Transform to Y(n, f, SR), which result in X(n,f,SR):
(2.9)
Notice that S(n, f, SR) , w(n) and Y(n,f,SR) are real signals and X(n, f, SR) is a complex signal. Next we compute the square magnitude of X(n,f,SR) and we take P(n,f,SR) which is the discrete digital representation of the signal power in frequency domain.
(2.10)
Next we define Bar0(f), Bar1(f), ……. Bar19(f), from P(n,f,SR) as above:
(2.11)
(2.12)
(2.13)
(2.14)
(2.15)
(2.16)
(2.17)
(2.18)
(2.19)
(2.20)
(2.21)
(2.22)
(2.23)
(2.24)
(2.25)
(2.26)
(2.27)
(2.28)
(2.29)
(2.30)
Where SR1, SR2 are the sampling frequencies 7998.6981 Hz and 87252.071 Hz, respectively.
Next, we plot Bar0(f), Bar1(f)……Bar19(f):
(Y axis: db, X axis: Frequency in Hz)
Plot 1,2. The 20 filters, each one having a central frequency CF(i) according to table 1
As can be seen from plots 1 and 2, Bar0(f), Bar1(f)…….Bar19(f) are 20 bandpass filters, each one having a central frequency CF(i) according to table 1. Thus, we have implemented a 20 non uniformband parallel analysis filter bank with FFT. The 20 filters are overlapping at half power points (3db below peak). Filters 49 and filters1219 are Flattop at 16db. Filters 0,1,2,3,10 and 11 have 1db more loss than the others.
In conclusion, in order to implement the desired filter bank using FFT and Figure 1 we must follow the steps below:
 Acquire 256 samples of the audio signal at SR1=7998.6981 Hz sampling rate.
 Apply a 256points Hamming window to them.
 Compute the 256points FFT of the resulting vector.
 Compute the square magnitude vector P, of the resulting vector X.
 From Vector P, we compute Bar0, Bar1, Bar2, Bar3, Bar4, Bar5, Bar6, Bar7, Bar8 and Bar9 samples.
 Acquire 256 samples of the audio signal at SR2=87252.071Hz sampling rate.
 Apply a 256points Hamming window to them.
 Compute the 256 points FFT of the resulting vector.
 Compute the square magnitude vector P, of the resulting vector X.
 From Vector P, we compute Bar10 Bar11, Bar12, Bar13, Bar14, Bar15, Bar16, Bar17, Bar18 and Bar19 samples.
After following these steps, we can simply plot each Barsample to a Led Bargraph and we have a 20bands audio Spectrum Analyzer. The dsPIC30F6012A has enough memory and speed in order to perform steps 1 to 10 in real time.
NOTE 1: The Hamming window must be normalized to 0.5, if we use a fractional DSP because Y(n,f,SR) must be less or equal to 0.5 (due to fractional FFT restrictions)
NOTE 2: The audio signal is a combination of many simple tones, which have random phase (phase doesn’t concern us). This is why there is no phase term in the equation (2.6). We just want to compute the total power included in each of the 20, spectral bands.
NOTE 3: Bari is the total power included inside the i band. Without the use of a Window we could not achieve flattop behavior and we would also have too much noise. Any window can be used instead of the Humming’s, but this will change the filter’sloss and sharpness. The Hamming window offers the less possible loss.
NOTE 4: The FFT results in significant reduction of the dynamic range, in a fractional DSP. This is due to fractional arithmetic restrictions during FFT computation. For a 256points FFT, the dynamic range of the Bar samples is almost 30db. This is why the dynamic range of the Digital, real time Audio Frequency Spectrum Analyzer for audio devices is limited to 30db.
Designing step 2.5:
We must plot each Barsample in a LED bar graph. We have 20 bar samples, thus we need 20 bar graphs. How can this plotting be done?
Answer: First of all we must decide how many LEDs we want to have in each Bargraph. In this project we use 20 LEDs in each bar graph. This way, we need 20x20=400 LEDs in order to display the 20band spectrogram. If we decide to drive these LEDs simultaneously we will need 400 I/O pins and a total current of about 8A which, ofcourse, is not a very good solution. Instead of driving all the LEDs simultaneously, we can use 40 I/O pins in order to drive these LEDs in a barsequence mode. We will use 20 I/O pins for X, and 20 I/O pins for Y driving as showed in figure 2. Thus, the total current is limited at about 400mA. Of course, the display framerate must be up to 50 frames/sec in order to have a nonblinking image.
Figure 2. Display solution
The dsPIC30F6012A can do both DSP and Displaying in real time but it cannot drive the LEDS with the current needed. That’s why some current drivers must be used.
3. The Hardware
We can design a blockdiagram of the Digital, real time Audio Frequency Spectrum Analyzer by taking into account the issues that have been mentioned in section 2. This blockdiagram is presented in figure 3.
Figure 3. Overall System Block Diagram
A display – mode selection capability based on a dual dipswitch has been included in this diagram. Using the switch, the user is able to choose between different display modes. Four (4) different display modes (ways) are supported in this project. These display modes are:

Bars (It is a real – time bar graphs plot)

Bars + peaks (It is a real – time bar graphs plot with peak hold)

Climbing Bars (It is a “slow” bar graphs plot. The bars are “climbing” to the peak. After catching the peak, they fall at a constant rate until the next peak becomes greater than the current state. Otherwise they continue falling.

Climbing Bars + Rain (It is a “slow” bar graphs plots which gives the sense of “Rain”. The bars are “climbing” to the peak and the peak is being hold. Then, the bars fall at a constant rate A and the peaks fall at a constant rate B until a greater peak comes up. It is A>B.)
3.1 The anti aliasing filters
The anti aliasing filters have been designed using Microchip’s FilterLab software. They have been designed for a 2KHz and 16KHz cutoff frequency respectively, with a signal to noise ratio better than 30db. Because of the limited dynamic range of the Spectrum Analyzer, which is about 30db, any noise below this threshold (30db) will not be displayed (will be ignored). Assuming this and due to oversampling the filters order is reduced to 5.
Figure 4. The 1st antialiasing filter (snapshots from Microchip’s FilterLab)
Figure 5. The 2nd antialiasing filter (snapshots from Microchip’s FilterLab)
3.2 Schematics
The system consists of 2 boards, the mainboard and the displayboard. Every unit in figure 3, except for the display, is located at the main board. The complete schematics of the Digital, realtime Audio Frequency Spectrum Analyzer, are presented below:
Figure 6. The mainboard schematic
Figure 7. The analogsection schematic, in detail
Figure 8. The display schematic
Microchip 16bit Embedded Control Design Contest Entry # MT1750
Digital, realtime Audio Frequency Spectrum Analyzer for audio devices
Materials list:
Qty Description Ref Des
1 Microchip dsPIC30F6012A IC1
3 ULN2803 – Darlington transistor array IC2, IC3, IC4
4 Microchip MCP6022 dual opamp IC5, IC6, IC7, IC8
20 BC337 NPN transistor Q1, Q2, Q3, ... Q20
20 20 – LED Bar – graph * BAR1, BAR2, …BAR20
1 14.74560 MHz Crystal Y1
20 1K SMD resistor R1, R2, R3 … R20
20 0 – 180 Ohm ** 1/2W resistor R21, R22 … R40
3 10K 5%, 1/4W resistor R42, R43, R44
1 6.98K 1%, 1/4W resistor R45
1 3.48K 1%, 1/4W resistor R46
1 18.7K 1%, 1/4W resistor R47
1 8.87K 1%, 1/4W resistor R48
1 6.49K 1%, 1/4W resistor R49
1 3.09K 1%, 1/4W resistor R50
1 7.87K 1%, 1/4W resistor R51
1 17.4K 1%, 1/4W resistor R52
1 16.9K 1%, 1/4W resistor R53
1 15.8K 1%, 1/4W resistor R54
2 4.7K 5%, 1/4W resistor R55, R56
1 47K 5%, 1/4W resistor R57, R58
2 10 Ohm 5%, 1/4W resistor R41, R59
1 100K trimmer P1
2 22pF ceramic capacitor C1, C2
6 10nF SMD capacitor C4, C5, C6, C7, C8, C9
6 100nF SMD capacitor C3, C10, C11 ... C14
4 100nF multilayer capacitor C20, C21, C22, C23
1 56nF mica capacitor C24
3 4.7nF mica capacitor C25, C32, C35
2 8.2nF multilayer capacitor C26, C36
3 680pF ceramic capacitor C27, C28, C33
6 1uF / 10V electrolytic capacitor C29, C15, C16 … C19
2 10uF / 10V electrolytic capacitor C30, C31
1 1.2nF multilayer capacitor C34
1 Dual dipswitch S1
4 20pin connectionheader J1, J2, J4, J5
1 2pin connectionheader J3
Note: Capacitors are 5%, unless specified.
* Any LED type can be used
** The value of R2140 resistors depends on the LED type (0 ohm used in this project for common brightness 18mA LEDs)
Photo 1. The complete assembly (The main board is located at the center of the photo. The display is at the top. A 5V/1.5A power supply unit is on the left – not included in the project)
4. The Software
The software has been developed in C, using Microchip’s C30 Compiler and functions provided in the DSP library. The source code is located in 3 files:
1. common.h This file contains some global definitions
2. ADC.c This file contains two functions  ADC_Init() and _ADCInterrupt().
void ADC_Init(char mode);
void __attribute__((__interrupt__)) _ADCInterrupt(void);
ADC_Init() is used to configure A/D to convert 16 samples of 1 input channel per interrupt. The A/D is set up for a sampling rate of 7998.6981 Hz (mode=1) or 87252.071 Hz (mode=2). Timer3 is used to provide sampling time delay. The acquired and converted input pins are AN8 (for mode=1) and AN9 (for mode=2).
_ADCInterrupt() is the A/D interrupt service routine (ISR).
3. Audio Spectrum.c This file contains 15 functions:
int main (void);
This is the main routine.
void ConvertToComplex(void);
This function is used to convert the real input sampling sequence into a Complex array by simply zero out the imaginary part of each data sample.
void Filter_Bank(unsigned int Samplesflag);
This function computes the Bar0, Bar1, …Bar19 samples according to equations (2.11) and (2.30). SamplesFlag=1 or 3 for 7998.6981Hz or 87252.071 Hz sampling rate, respectively.
void FindPeakHold(void);
Used for the "Bars+Peaks" display mode.
void FindSnapToPeak(void);
Used for the ClimbingBars display mode.
void initializeIO(void);
Initializes IO pins.
void initialize_rest(void);
Initializes arrays.
void FindClimbingBars_Rain(void);
Used for the “ClimbingBars+Rain” display mode.
unsigned int display_mode(void);
Returns the current display mode (03) according to S1 switch. There are 4 display modes: 0Bars, 1ClimbingBars+Rain, 2Bars+Peaks, 3ClimbingBars.
void display (unsigned int dis_mode);
This is the display routine. It displays the realtime spectrogram in the 20x20 LED display. It supports the 4 display modes.
void Set_Y (unsigned int x);
Sets Y (figure 2) for the x bargraph. It is used for the “Bars” display mode).
void Set_Y_Peak (unsigned int z);
Sets Y (figure 2) for the z bargraph. It is used for the “Bars+Peaks” display mode).
void Set_Y_SnapTP (unsigned int n);
Sets Y (figure 2) for the n bargraph. It is used for the “Climbing Bars” display mode).
void Set_Y_Rain(unsigned int j);
Sets Y (figure 2) for the j bargraph. It is used for the “Climbing Bars + Rain” display mode).
fractional add_Elements(int num, fractional* point);
Returns the sum of num subsequent elements of a fractional vector (point, points to the first element).
The most important routines of this project are presented in detail, below:
4.1 The main routine
The main routine of the program uses interrupt driven statemachine logic. The main routine is interrupt driven from the A/D converter. The 12 bit A/D converter acquires NUMSAMP=256 samples from the AN8 and AN9 pins at a sampling rate of 7998.6981 Hz and 87252.071 Hz respectively and puts the A/D conversion results to the real part of the complex inputSignal[] vector. The inputSignal[] vector is processed by means of Windowing, Fast Fourier Transform and Squaremagnitude (power) computation. The discrete power spectrum of the audio signal is stored in the Power_Vector[] vector. The Bar samples are computed according to equations (2.11) (2.30) and the results are stored to the Bar[] array. The latter is done during the execution of the Filter_Bank routine. Each Barsample is plotted to a Led Bargraph when the display routine runs.
The flowchart of the main routine is presented below:
Flowchart 1. The main routine
Code sample 1. The main routine
NOTE 1: The inputSignal[] vector is a NUMSAMP*2 – points complex (fractcomplex) vector. The real part of this vector contains NUMSAMP samples of the audio signal. The imaginary part of this vector is set to zero during initialization (when initialize_rest() runs).
In order to apply a NUMSAMPpoints Hamming window to the Real part of the inputSignal[] using the VectorMultiply function from the DSP library, we need a NUMPSAMP*2length, real Hamming window. Thats why the HammingFactors[ ] vector, which contains a real Hamming window, have a NUMPSAMP*2 length.
NOTE 2: The FFTComplexIP function requires the magnitude of the source complex vector to be in the range [0.5, 0.5]. This is why the HammingFactors[] vector is normalized to 0.5 during initialization.
NOTE 3: The resulting transform from FFTComlpexIP is stored in bit reverse order. Because of this, BitReverseComplex must be applied before the squaremagnitude computation.
NOTE 4: The SamplesReadyFlag variable and the p_inputSignal pointer are accessed and modified both from the main routine and the interrupt service routine.
4.2 The A/D interrupt service routine (ISR)
Timer3 is used to provide timing for the 12bit ADC. The 12bit ADC causes an interrupt at the completion of the conversion for each 16th sample. The sampling rate is changed every time ADC_Init(char mode ) runs.
Flowchart 2. The A/D interrupt service routine (ISR)
4.3 The ADC_Init routine
ADC_Init(char mode) is called directly from the main routine. It is used for the A/D to convert 16 samples of 1 input channel per interrupt. The A/D is set up for a sampling rate of 7998.6981 Hz (mode=1) or 87252.071 Hz (mode=2). Timer3 is used to provide sampling time delay. The acquired and converted input pins are AN8 (for mode=1) and AN9 (for mode=2).
Code sample 2. The ADC_Init routine
4.4 The Filter_Bank routine
The void Filter_Bank(unsigned int Samplesflag) routine is called directly from the main routine. This function computes the Bar0, Bar1, …Bar19 samples according to equations (2.11) to (2.30). SamplesFlag=1 or 3 for 7998.6981Hz or 87252.071 Hz sampling rate, respectively.
Flowchart 3. The Filter_Bank routine
NOTE: The Filter_Bank routine computes the Bar samples from the Power_Vector , vector and utilizes the add_Elements routine.
4.5 The Display routine
The void display (unsigned int dis_mode) plots the Bar0, Bar1, ….Bar19 samples in the 20x20 LED display. It is called from the main routine. The LED display consists of 20 LED bargraphs. Each LED bargraph consists of 20 LEDs. Each BarX sample is plotted in the X LEDbar graph. This is done sequentially (the Bar0 sample is plotted first, then the Bar1 is plotted, … and finally the Bar19 is plotted). One display frame is completed every time when the display routine returns. The display routine plots only one frame per call. The user cannot understand that every moment only one Bargraph is active (when the user watches the screen, he sees all the Bargraphs active), because there are more than 50 frames per second (the display routine is being called more than 50 times per second). The display routine supports four display modes:

Bars (It is a real – time bar graphs plot)

Bars + peaks (It is a real – time bar graphs plot with peak hold)

Climbing Bars (It is a “slow” bar graphs plot. The bars are “climbing” to the peak. After catching the peak, they fall at a constant rate until the next peak becomes greater than the current state. Otherwise they continue falling.

Climbing Bars + Rain (It is a “slow” bar graphs plots which gives the sense of “Rain”. The bars are “climbing” to the peak and the peak is being hold. Then, the bars fall at a constant rate A and the peaks fall at a constant rate B until a greater peak comes up. It is A>B.)
Flowchart 4. The Display routine
Flowchart 5. The “Climbing Bars” display mode (display routine)
Flowchart 6. The “Bars” display mode (display routine)
Flowchart 7. The “Climbing Bars + Rain” display mode (display routine)
Flowchart 8. The “ Bars + Peaks” display mode (display routine)
5. The measured system’s performance
The performance of the system has been measured using a HAMEG HM 80305 function generator and a PICO ADC212 Virtual Instrument (oscilloscope and spectrum analyzer). Some of the measurements are presented below:
Figure 9. Test configuration
Photo 3. Snapshot from the measurement procedure
Photo 3 was taken during the device’s test. A single 310 Hz audio tone is applied to the input of the device under test and the PICO instrument at the same time. We can see that the device under test displays 0db at the 7th bar graph (from left to the right), which is correct as expected. At the same time the PICO instrument gives the following spectrogram:
Figure 10. The spectrogram, which has been taken with the PICO instrument (256 – points FFT , Hamming window).
The device under test cannot display the 2nd harmonic at 620Hz because it is below –30db (The dynamic range of the Digital, real time Audio Frequency Spectrum Analyzer is from 0 to almost 30db)
Photo 4. Snapshot from the measurement procedure
Photo 4 was taken during the device’s test. A single 63 Hz audio tone is applied to the input of the device under test. We can see that the device under test displays 0db at the 2^{nd} bar graph and 7.8db at the 1^{st }and the 3^{rd} bar graph (from left to the right). This is due to the fact that there is a poor frequency resolution capability from 0 to 100Hz due to the overlapping effect of the1^{st}, 2^{nd} and 3^{rd} filter (Plot 1,2).
Photo 5. Snapshot from the measurement procedure
In photo 5 a single 170 Hz audio tone of a –20 db magnitude is applied to the input of the device under test and the PICO instrument at the same time. The device under test displays –19.5db at the 5th bar graph (from left to the right), which is correct. At the same time the PICO instrument gives the following spectrogram:
Figure 11. The spectrogram, which has been taken with the PICO instrument (256 – points FFT , Hamming window) during the measurement of photo 5.
Photo 6. Snapshot from the measurement procedure
In photo 6, a single 3350 Hz audio tone of a –10 db magnitude is applied to the input of the device under test and the PICO instrument at the same time. The device under test displays –10.5db at the 15th bar graph (from left to the right), which is correct. At the same time the PICO instrument gives the following spectrogram:
Figure 12. The spectrogram, which has been taken with the PICO instrument (256 – points FFT , Hamming window) during the measurement of photo 6.