Chromium 2

For solo guitar

In mediaeval times music and mathematics, along with physics and astronomy, made up the Quadrivium of sciences. Although composers have continued to be aware of the importance and significance of proportion and simple numerical relationships to control pitch and rhythm it’s only with the advent of high-speed computation that the relationship between these two disciplines is beginning to enjoy a renaissance. Although few composers are active mathematicians and vice versa new computer tools and the data protocol MIDI are encouraging the creation of new music from both numerical and symbolic computation.

Chromium 2 is the result of a collaboration between the mathematician/ composer Alexis Kirke and the composer/performer Nigel Morgan. Both are associated with the Future Music Lab at Plymouth University’s Interdisciplinary Centre for Computer Music. In these pages the story of this 6-minute work for solo guitar is told and illustrated.

Proportion and number: Kepler and Ligeti

Alexis Kirke writes . . .

Chromium 2 was written in 2007, inspired by Nigel Morgan’s piece for solo guitar Dreaming Aloud. it is based on short randomly generated motifs, which I then compose into the structure I desire. An important element in composing Chromium 2 was producing motifs which would allow the piece to cohere as a solo guitar performance, and generating motifs appropriate to the four short sections of the piece. The piece was written using the mathematical programming language Matlab, with code developed by the composer.

Nigel Morgan writes . . .

When I joined Future Music Lab I was keen to offer researchers the opportunity to illustrate something of their work through collaboration with a composer and performer. The solo guitar is well-known as an instrument that composers find difficult to write for. I wondered how mathematicians and computer scientists might approach it. In studying my work Dreaming Aloud, written using symbolic computation, Alexis was quick to pick up certain givens and constraints that composers use when writing for guitar and express these mathematically. His score Chromium 2 very cleverly exploits his observations and results in a piece of considerable ingenuity and beauty.

How a mathematician creates music

Music composition can begin in so many different ways. Most usually the conditions surrounding the performance guide the composer to decide on instrumentation and the length of the piece. An instrument brings with it its own constraints and preferences: those of register, textures and groupings of musical material acknowledged by players, listeners and composers to sound well. The composer may then decide on a basic structure which can be viewed as an indication of a sonic drama or scenario: this will happen, then this and then this, and in this way

Alongside thoughts about the conditions surrounding the piece the composer may improvise mentally or with the prompt of an instrument. Joseph Haydn is believed to have said ‘composing is a search’, a search for a kind of rightness. Computer technology offers a lively way to conduct this search for the ‘right’ notes and rhythms. The computer, with the appropriate programming, can become a kind of improvising machine.

In this case of Chromium 2 this is pretty much what happened in the composing process. A kind of composing machine was built in code that has functions designed into it. Find out more about these tools for composing Chromium 2 here.

The Improvising Machine

The two functions Alexis created for his Chromium 2 improvising machine are called BuildNoteSet() and transformNoteSet(). The full code of Chromium 2 by Alexis Kirke can be found in the downloadable study score.

These functions enable Alexis to generate guitar-type motifs, very short streams of notes that are the  result of the computer taking very precise instructions and observing conditions – do this, but not that, include this, but if you do, exclude that. Alexis improvises at the computer until he finds a number of motifs that sound promising.

He then creates a structure to extend the motifs (which may be only a few notes) into musical phrases. For example, to extend the first motif a request is made to build this motif and then repeat it in 3 random transformations keeping the original motif in place.

In this way a section is created: by transforming and extending the two motifs into musical phrases and  then gluing them together. Thus Section B is made up of b = motif-2 repeated in 3 transformations, and a = motif 1 repeated in 3 transformations, and then assembled in to the section form b a b1 a1. These motifs and their transformations are made using the computer’s random generator which offers an almost infinite sequence of abstract possibilities. The composer is able to hear each generation as it is made and save the results to a MIDIfile of data that can play ‘the numbers’ as musical pitches and rhythms on the computer’s soundcard.

Chromium 2 – The Form (A & B)

This work for solo guitar lasting about 6 minutes has 4 sections.

Sections A and B take 2 motifs (motif 1 & 2) and transform them using the BuildNoteSet function into musical phrases ‘in a guitar-like’ way. This means there both melodic phrases and chords are generated, and these are formed to fit well under the guitarist’s hands and on the fingerboard. This is achieved by an instruction Alexis has invented that comes out of his observation that effective guitar music makes clever use of open strings, not only as a resonance but as a way of moving about and between notes.

Section A uses 1/8th note or quaver durations, Section B not only shifts transformed motifs backwards in time by up to a 1/4 beat, but controls the amount of horizontal and vertical movements (in fourths) on the fingerboard.

Chromium 2 – The Form (C & D)

Section C takes 2 new motifs (motif 3 & 4) and repeats and transforms them 24 times using the transformNoteSet function. Section C’s notes are in 1/16th durations. This section includes much chordal writing generated by a kind of sub function built into transformNoteSet.

Section D has two new motifs as well (motif 5 & 6). These are repeated and transformed 9 times using the transformNoteSet function. 50% of the time the transformation is vertical (up or down the fingerboard), the other 50% involves swapping around up to 3 notes in each motif. This produces throughout the final section a most mesmerizing and unusual effect enhanced by the use of resonant open strings.

The Tools for Composition

Chromium 2 was composed using the Matlab programming language. Matlab is a numerical computing environment used in engineering and the physical sciences but has now been adopted by the life sciences and the arts. Ordinary differential equations appear in the movement of heavenly bodies (planets, stars and galaxies); optimization occurs in portfolio management; numerical linear algebra is essential to quantitative psychology; stochastic differential equations and Markov chains are essential in simulating living cells for medicine and biology. The overall goal of using Matlab is the design and analysis of techniques to give approximate solutions to hard problems.

Composing a piece of music means bringing together a variety of groups of data that have to work simultaneously. Think of pitch and rhythm for example. In maths this is usually achieved by matrix manipulation. A matrix is (in mathematics) a rectangular table of elements which may be numbers
or, more generally, any abstract quantities that can be added and multiplied. Matlab is also an array programming language where operations may be made to apply at once to an entire set of values. This makes it a high-level programming model as it allows the programmer to think and operate on whole aggregates of data, without having to resort to explicit loops of individual scalar operations.

Alexis Kirke’s Chromium 2 makes use of two specially created functions. Matlab is excellent at the plotting of such functions. The mathematical concept of a function expresses dependence between two quantities, one of which is given (the independent variable, argument of the function, or its “input”) and the other produced (the dependent variable, value of the function, or “output”). A function associates a single output with every input element drawn from a fixed set, such as the real numbers. These functions aid the business of creating the improvising machine that is at the heart of this composing process. Matlab is also particularly good at the implementation of algorithms, lists of instructions that make use of functions to complete a set task.


Score (including code and annotations) [pdf]

Performance by Nigel Morgan [mp3]