When & Where: 12:30pm, Friday, October 14, 2005, Room 200 AKW
To complement Haskore, a Haskell library for composing music at the "note" level, we have designed a Haskell library called "HasSound" for designing instrument sounds at the level of oscillators, filters, etc. It is based on csound, a popular music software system written in C. Although csound has a rather baroque syntax, it is "mostly" functional, which of course is reflected well in Haskell. But it also has some rather ugly imperative edges that provide important functionality that can't be ignored. We discuss how we handle both the functional and imperative sides to this design, including a monad for channels, functional delay lines, and an explicit way to express recursive signals. The work is a useful example of embedded DSL design.
Joint work with Matt Zamec (Yale) and Sarah Eisenstat (Brown)