Conclusions

Goals and Expectations

Our final result is a functional audio synthesizer that meets all of the essential specifications for both sound design and user interfacing. All of the sound design features work and are user-adjustable via an easy-to-understand interface. That being said, there were some things that we were not able to address.

The low-frequency oscillator did not run as fast as we would have liked. The effect of applying the LFO is much less subtle than we were hoping, because you can audibly detect changes in cutoff frequency over time.

Limits on time, breadboard space, and the number of GPIO pins available on the RP2040 meant that we were unable to implement a second oscillator or LEDs for indicating volume level.

For some reason, we were unable to get the protothreads on cores 1 and 2 running, so all of our functions are in interrupt service routines. While our code is still functional, it would be nice to explore if using threads improves our timing.

The sound quality is good, considering the cost and time constraints of the project. However, it could be improved if we made our code run faster.

The code itself is very modular, making it easy to read and alter. Each feature of sound design has its own clearly-defined function. If given more time, we could define header files for our most important functions.

The hardware build quality is good in that it is functional and easy to interact with. However, it would be nice to design a 3-D printed housing for the keyboard and buttons.

All things considered, we utilized all of our resources effectively in this project. Given the opportunity to redo this project, being slightly less ambitious with the amount of features, and doing more in the first two weeks would allow us to avoid crunch time. That would make it easier to focus on things we did not have enough time for, such as using protothreads and building a more stable housing for the project.

Intellectual Property Considerations

Our main code file built off of the FFT code from Lab 1. The rest of the features we implemented in this project were either original, or based off of well-known audio synth sound design concepts. We used a publicly available library for programming the TFT for user-display. All reference code was open source.

Our code is written to be easily modifiable and understandable so we could look into publishing it as an open-source project.