After the LED matrix burnt out, the VGA was the best possible choice to move forward with the project. The video module consisted of a VGA effects generator which took care of the colored effects for the spectrogram and a sync generator file. that synced the monitor up with the video RAM and clock source modules that were created by Altera.

After the video modules were implemented, I noticed that the spectrum was very bottom heavy, meaning it would react to the audio, but the output was only really moving on the left side of the screen.

As a potential solution, I implemented an IIR low-pass filter. This set a cut off frequency, and essentially zoomed in on the lower end of the spectrum and allowed it to fill out the entire screen. I landed on using a Chebyshev Type II filter which minimizes the absolute difference between the ideal and actual frequency response over the entire stopband. Below is a snap of the matlab plot for the filter, plotting magnitude frequency against magnitude.

I also implemented red, green and blue VGA color effects for the output frequency spectrum. The user can also turn on multiple effects at once to receive yellow or purple screen effects.