In order to build the project, download the individual files from above or download them all in this .zip file. Makefiles are provided to compile the code for either Mac OS X or Linux by specifying the correct makefile to use. Typing 'make' at a command line in the source directory will output the correct syntax for specifying which of these makefiles to use.
The goal of constructing this program was to gain experience using RtAudio to stream real-time audio input and output and to implement a few different waveform generators. I originally implemented this using a large amount of if-then logic to process the different waveform cases, but ultimately ended up implementing the different waveform generators as individual classes, each of which inherit from a general UGen class. Approaching the implementation in this enabled me to take advantage of polymorphism, resulting in much more readable code and enabling good organization of functionality.