This is missing the image, I'm creating a new one so I can provide that without copyright issues. But the image file is there so you can see the form. Or make your own. Get a 240x240 PNG @ 16 bits-per-pixel. Use your favourite language to convert the file into a C array. I haven't yet found the code I used for that...I'll share it when I find it or rewrite it.
I put the display driver in a separate file, because the .INO was getting a bit big, and so the display driver as a component could more easily be swapped.
The form of the MIDI receiver -> value -> display is in place. So its easy to follow the design pattern and create new views.
The needle physics has been moved over from the test code into the Arduino project. Because the sampling rate differed from the test code, the constants were different. The algorithm is, I believe, identical. The result of needle physics is that the needle will not instantaneously pop from one position to another without moving through the space between, and when it arrives at its destination, it tends to overshoot then bounce back. Also it will tend to bounce off the hard stops at each end.
Any questions, let me know. I will improve the commenting as needed.