Over the last few days I have been experimenting with the tools and platforms I will be using for this project. I do not have much experience with python, so I installed pygame and spent some time learning how to show a window with some simple graphics. While doing this, I realized that writing the GUI application would be easier in Java, a language I am much more familiar with. Therefore, I may decide to write a Java GUI using tools I am more familiar with, rather than learn a new system. Additionally, I have read that the Raspberry Pi touchscreen drivers have in the past not worked well with pygame.
I also spent some time learning my way around the JACK audio system. JACK applications are organized as a set of callbacks, which are pieces of code that are called when certain events occur. The main one of these is called at regular intervals, and its task is to fill a buffer with samples to be played. Other callbacks include one for changes to the sample rate, and one for when the audio server shuts down. I first modified one of the example programs, a MIDI sine wave synthesizer, to be polyphonic, and then further modified it to use a wavetable. Code for these two programs is on Github here.
This work is licensed under a Creative Commons Attribution 4.0 International License.