I worked with Professor Paul Hudak of Yale University for half the summer between my freshman and sophomore years to create the piano and keyboard widgets for Euterpea. I also made contributions to the functional GUI framework, wrote a test suite that uncovered (and led to the correction of) dozens of bugs, and researched more efficient ways to represent and process signals in a functional programming language like Haskell. To quote the project website:

“Euterpea is a domain-specific language, embedded in the functional language Haskell, for computer music development. It is a descendant of Haskore and HasSound, and is intended for both educational purposes as well as serious computer music applications. Euterpea is a wide-spectrum language, suitable for high-level music representation, algorithmic composition, and analysis; mid-level concepts such as MIDI; and low-level audio processing, sound synthesis, and instrument design. It also includes a “musical user interface,” a set of computer-music specific GUI widgets such as keyboards, pushbuttons, sliders, and so on. The performance of Euterpea is intended to be as good as any existing computer music language, with the goal of being able to develop real-time applications, using both MIDI and a high-performance back-end for real-time audio.”