New effect: Bars
Better frequency scaling by modifying parameters in melbank.py
Mel graph [before](https://imgur.com/a/xN9PA), [after](https://imgur.com/a/YYGLk)
This stretches out the lower end with vocals and bass, and squishes up the high end which usually takes up moer space on the strip for similar "sounds". Now it looks more like you would expect it to, based on what you hear (more pitch-like than frequency)
Added static effects, added new colour modes, improved gradient scrolling and mirroring, cleaned up stuff behind the scenes, added lots more options for different effects
Over a dozen small performance optimizations
* Memoization for linspace generation
* Removed unnecessary copies
* Limited the rate at which information is printed. Excessive `print()` output was causing issues for some SSH users
Previously there was no limit to the number of bytes that could be sent per packet. This commit enforces a limit on the amount of pixel information per packet.
Zero pads the audio time samples until the length is equal to the next largest power of two. This improves the algorithmic complexity of the FFT calculations.
Initialized the Hamming window when the module is loaded instead of every loop.
Replaced a call to numpy.roll() with direct array index manipulation.
* Resolved an issue with the ESP8266 where gamma correction would be
performed twice. Changed GAMMA_CORRECTION to SOFTWARE_GAMMA_CORRECTION
to make a distinction between software and firmware gamma correction.
The ESP8266 does firmware gamma correction and dithering, while the
Raspberry Pi uses slightly more inferior software gamma correction.
Changed the software gamma table to match the gamma table used in the
ESP8266 firmware.
* Improved the spectrum visualization by using one of the color channels
to visualize the absolute value of the temporal derivative of the
spectrum. Also added a feature to reject the "common mode" spectral
components, which is analogous to the spectral DC component.
* Signficantly improved the GUI and added a frequency adjustment slider.
Adjusting the frequency range has a big impact on the visualization
output. Recommend using a high frequency range (something like 4 kHz -
10 kHz) when running the scrol visualization.