Clifton Callender

composition, music theory, mathematics

Computer Music Programming


New Undergraduate Course!
Computer Music Programming (Fall 2016)
MUS 3934-0009 (Special Topics in Music)
Tuesdays and Thursdays, 2:00 – 3:15 pm
Three-credit course that counts as an upper-division music theory elective.
(Non-music majors with programming experience may register with instructor permission.)

This new course offering is an introduction to music and multimedia programming using the visual programming language Max (from Cycling ‘74). Max allows users to create their own software for interactive audio and graphics by virtually connecting objects for real-time manipulation of MIDI, digital audio, and video (including 2D and 3D vector graphics). Some of the many projects utilizing Max:

More generally, this course will focus on computational methods for manipulating, analyzing, and generating musical data and will cover many of the fundamental concepts of computer programming, including variables and data types, conditionals, loops, data structures, encapsulation and abstraction, and graphical user interface (GUI) design. Students who take this course will be well-prepared to learn a more general programming language in the future.

Previous experience with programming or MIDI and digital audio is not required. The course is intended for all undergraduate music majors who have passed the core music theory courses and counts toward the upper-division music theory requirements. (Interested students from outside the College of Music who have programming experience may take the course with instructor permission.)

Computational Methods

Computational Methods in Music Research and Composition
Doctoral Seminar: Fall 2015

These are just of few recent examples of research projects and compositional approaches that rely on computational methods for manipulating, analyzing, and generating musical data. The goal of this seminar is to explore these methods by developing music programming and computational skills and applying these tools in projects of primary interest to students.

To that end, the first part of the seminar will focus on music programming in Python and Music21. Python is a general-purpose, object-oriented, interpreted programming language that emphasizes clear, readable code, is relatively easy to learn, and has support in the academic community with extensive outside libraries. For musicians, Music21 is a particularly useful set of Python tools “for helping scholars and other active listeners answer questions about music quickly and simply.” (For more details, read Dmitri Tymoczko’s review of Music21 in Music Theory Online.)

The second part of the seminar will be driven by student interest and individual or group projects. Research projects may include corpus studies, analysis of expressive performance data, probabilistic models of musical similarity, etc. Compositional projects may involve algorithmic or computer-assisted composition, live coding, or real-time performer/computer interaction.

While previous programming experience is helpful, it is not required. The seminar is intended for doctoral students in music theory and composition, musicology, and ethnomusicology. Others interested in taking or auditing the course are encouraged to contact me.