As I'm thinking about more features to add to the SquishBox code, I'm realizing it's gotten to the point that I need to refactor in order to keep things sane. There is also a need for some separation of concerns:
- Communication with FluidSynth through ctypes bindings
- Reading YAML bank files and understanding patches
- Talking to the SquishBox hardware (buttons, LCD, wifi)
Each of these now live in separate files and get imported by squishbox.py, and I've wrapped things in classes to help encapsulate data. This also seemed like a good time to update the bank file format to be a bit more reasonable, and start looking toward Python 3.9 and newer FluidSynth versions and leave some of the old compatibility baggage behind. At some point you have to stop supporting every version of everything that has ever worked and just move forward.