![](circulants.gif)
A circulant matrix is a square matrix in which each row is a cyclically shifted version of a list whose length corresponds to the dimension of the matrix. Circulant matrices are often represented graphically (as above), and produce familiar shapes such as the the pentagram or star of david. Useful information and more graphs can be found here. In Circulants, I am attempting to map the idea of circulant matrices and graphs to musical score.
In the piece, each vertex of the graph is represented by a performer. Each performer, in turn, has a separate circulant graph corresponding to them. Each line in the main circulant graph represents the progression of the piece. Starting at an arbitrary vertex, the performer at that vertex "turns on" the a note corresponding to their location on their personal circulant graph. Then, the next player to play is the person connected to the first performer on the main graph. They then "turn on" their note, which is offset by some amount from the first player's note. This continues on until the graph returns to our first performer. The next performer who is turned on is offset by some other number. As the piece progresses, each player's sequence of notes becomes more complex until at every instance each performer is playing one note of a chord - in this way the same chord is repeating, but the source of the notes is changing. At this point, the piece stops. During the piece, strange polyrythms appear which are entirely dependent on the listener's proximity to the performers.
As a practical example, here is a ChucK source file which plays out the piece. Each "player" is one channel of the dac output. The user can set the size of the circulant graph as well as the traverse rate and the repeat offset. It is ideally meant to be played in a room with a large number of speakers to maintain the performer proximity effects.