Composers frequently use computers as sketchpads while composing their music. By letting a computer immediately play back their score; they create an aural model of the performed music. Computer Assisted Composition (CAC) goes beyond this elementary use of computers. In CAC, computers solve basic tasks based on composers' instructions. In this way the computer becomes the composer's assistant.
I have been active in CAC since 1997 when I first approached rule-based computing techniques. I was met by comments that rule-based systems can be applied on structuring musical pitch, but that rules for rhythm are harder to formalize (i.e. less is said about rhythm in music theory). This challenged me and I started to create a system for rule-based composition exclusively for rhythm.
Since then, I have developed several constraint solving systems for music: OpenMusic Rhythmical Constraints (1998), Patch Work Musical Constraints (2005) and the Cluster Engine (2010).
The complex task of solving a musical Constraint Satisfaction Problem can be very demanding for a constraint solving system. Typically, when a system is trying to generate a polyphonic score that satisfy user-defined relations between rhythms and pitches over several voices, it gets stuck. The intricate network of dependencies that exist in a score makes it hard to develop a good strategy for how to find an acceptable solution. After having struggled with some of the existing constraint solving systems, it became necessary for me to develop a new, more efficient constraint solver that could handle more complex musical formalizations. I needed a system that could approach the problem from an angle where the nature of a music structure is taken into account. This became the starting point for the Cluster Engine.
The Cluster Engine uses several search engines that work in parallel. The order of how decisions are made by the system becomes more flexible, and also more efficient. One of the challenges has been how to guide the system during the search process: When several engines work semi-independent, it is a risk that the system misses to try some combinations of the elements. It is also a risk that the system re-tries combinations it already dismissed. Another challenge has been to solve how the system should backtrack when it needs to reconsider previous decisions in order to satisfy the given constraints.
An introduction to my research in rule-based computing in music composition at the IAST (Interactive Art, Science, and Technology in Western Canada) conference "Crossing Boundaries" 2018 in Lethbridge, Canada.
The latest implementation of the Cluster Engine exists as an extension to Max (www.cycling74.com) unsing Julien Vincenot's MOZlib as a platform for calling Lisp functions from within Max.
Presentation of the Chained Cluster Engine and Julien Vincenot's MOZlib in Max at the virtual PRISMA meeting 2020.
Research related articles and papers
Ö. Sandred. Constraint-Solving Systems in Music Creation. in Handbook of Artificial Intelligence for Music, Springer, Switzerland, 2021: pp. xx-xx.
K.Fowler, Ö. Sandred and A.Whiteway. Acoustic perceptions of vessel fitness in southern Africa. in Journal of Material Culture 22:3, xx-xx
Ö. Sandred. From Rhythm Rules to Music Rules in Constraint Programming in Music, Iste Ltd, London, UK, 2011: pp. 197-237.
Ö. Sandred. PWMC, a constraint solving system for generating music scores. inin Computer Music Journal 34:2, 8-24.