Undergraduate and Graduate Course: Spring 2019
Computer Music Programming
MUS 3934 and 5939 (Special Topics in Music)
Tuesdays and Thursdays, 2:00 – 3:15 pm
Three-credit course counts as a music theory elective.
(Non-music majors with programming experience may register with instructor permission.)
This course 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. The course is also open to all graduate music majors. (Interested students from outside the College of Music who have programming experience may take the course with instructor permission.)
Graduate Course: Fall 2017
MUS 5939-0012 (Special Topics in Music)
Tuesdays and Thursdays, 12:30 – 1:45 pm
(Non-music majors with programming experience may register with instructor permission.)
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 course 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 course 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. (Students without previous programming experience are strongly encouraged to go through the free Python tutorials on Codecademy prior to the start of the course.) The seminar is intended for graduate students in music theory and composition, musicology, and ethnomusicology. Others interested in taking or auditing the course are encouraged to contact me.