Describing and Interpreting Music in Haskell

Speaker: Paul Hudak

When & Where: 12:30pm, Wednesday, Sept 18, 2002, Room 400 AKW


Musicologists have long noted subtle and complex relationships between musical compositions and mathematical structures. Indeed, some well known composers deliberately exploited this relationship in their compositions. This talk explores a slightly different relationship: that between musical expression and computer languages. Specifically, two results are described:

First, Haskell is used to describe musical structures. These structures consist of primitive entities (notes and rests), operations to transform musical structures (transpose and tempo-scaling), and operations to combine musical structures to form more complex ones (concurrent and sequential composition). From these simple roots, much richer musical ideas can be developed.

Second, an interpretation of these musical structures is defined in terms of an abstract notion of performance. This interpretation gives meaning to music (even if not as grandiose as the meaning given by a musician), and allows one to prove certain laws that collectively form an algebra of music.

The ideas presented are similar to the speaker's previous work on Haskore [1] and MDL [2], two domain-specific languages for computer music. But this talk focuses more on the algebraic properties of music. For that purpose the design of the musical structures is simplified and changed slightly to enhance its symmetry and the applicability of algebraic methods.

Familiarity with Haskell and very basic musical concepts are all that is expected; the talk is otherwise accessible to a broad audience.


[1] Paul Hudak, Tom Makucevich, Syam Gadde, and Bo Whong, "Haskore Music Notation -- An Algebra of Music", Journal of Functional Programming, 6(3), May 1996, pp 465--483.

[2] Paul Hudak, "The Haskell School of Expression -- Learning Functional Programming through Multimedia", Cambridge University Press, New York, 2000.