Tintinnabuli Mathematica is an experiment in programming Arvo Pärt’s tintinnabuli method of composition. The process has two stages. Firstly, a melodic part (or M-voice) is created by generating a string of notes and timings. Then harmonic tintinnabuli parts (T-voices) are generated by applying transformation rules to the melody.
To generate a melody, a program was written to select notes from a scale, which in this case is A natural minor, i.e. all the white notes on a piano starting from A. Two types of generative method are used: random selection and series based on integer sequences (e.g. the Fibonacci sequence or the series of prime numbers). The random methods include equal-weighted choice of pitch and duration which generates notes scattered all over the scale, and a random walk method which produces wandering melodies of close pitches, varying in closeness depending on the maximum size of interval. In the random walk method, the scale is treated as cyclic, so that if the notes wander off the bottom of the scale they re-appear at the top, and vice versa. Generating notes based on number sequences (developed with help from the wonderful Online Encyclopedia of Integer Sequences) produces a variety of patterns – many of which are quite predictable or repetitive, whilst others are fractal and some are irregular, e.g. the prime numbers. One of the issues with these number sequences as is that many of them tend towards infinity, which would quickly go out of range of the instrument and our range of hearing. In these cases, the program includes a modulo operation based on the scale length to keep the numbers within range. Pärt sometimes uses algorithmic patterns in his music, a clear example of which is Für Alina, with the number of notes per phrase cycling around a series from 1 to 8 notes and back. Cantus in Memory of Benjamin Britten has a fractal structure. It is composed of layers of similar descending parts at different tempo rates and pitch ranges, played at increasingly slower rates and lower ranges. Matt Keil’s analysis of the Cantus points out that this technique is known as a mensuration canon, a medieval form of composition.
The following image reproduces part of the program code, showing a pattern based on the differences between consecutive primes. As all the primes are odd (except 2), the differences are all even (except the first). The irregularity of the prime sequence is reflected in this pattern also. Like other sequences, this eventually tends to infinity, so it is constrained as before with a modulo operation.
The second part of the process is to generate a harmony (T-voice) using the tintinnabuli method. In addition to listening to Arvo Pärt’s music, I learned about this process by reading Paul Hillier’s book on Pärt and by studying the scores in ECM’s special edition of Tabula Rasa. There are six possible different T-voices (not counting octave transposition). The T-voice is generated by a strict process of transposing the M-voice: It takes one of the 3 notes in the scale’s triad (A-C-E), i.e. the nearest, next-nearest or furthest from the M-voice note, either above or below. Thus there are six basic ways of generating a T-voice, which we may label as +1, +2, +3, -1, -2 and -3. Pairs of these voices are similar, sharing the same pattern except when the M-voice occupies one of the triad’s notes. According to Hillier’s analysis, Pärt uses only four of the possible six T-voices (+1,+2,-1 and -2), which avoids unison and octave transpositions. Pärt also uses alternating T-voice patterns. Tintinnabulation in Pärt’s music occurs in various forms: as a single harmonic accompaniment or in combination, on the same or different instruments, played as a solo, duet or more. A single T-voice may use variations and combinations of the transposition methods – for example, by alternating above and below the M-voice (+1,-1,+1,-1, …), which generates a more complex harmonic pattern. Christophe Franco-Rogelio helpfully pointed out that there are arpeggiated tintinnabuli voices in Miserere.
Various combinations of the six basic T-voices are used in these pieces. The voices are not always played simultaneously but are also arpeggiated. Staggering the voices in sequence such as M, T+1, T+2, T+3, for example, produces an ascending arpeggio of T-voices following the M-voice. The programs ouputs MIDI files, which are voiced as synthesized bell sounds using Synth1 and XILS 3. Some of the early pieces are up on SoundCloud:
These pieces represent early experiments with this process, and the results are relatively simple and unrefined, but it also shows a development over time. The first piece (TM1) contains an error, since the timing of the three voices was not synchronised even though they were based on the same set of pitches, which results in a quite pleasing but unintended loose coherence. There is a general progression towards greater complexity, both within each piece as the voices unfold, and across the series of tracks. The experiments are ongoing, refining the algorithm, manipulating the sounds, and seeing how the method can be extended. The aim is not to emulate Pärt’s music, but to explore his method by trying it out for myself. This process could be done by hand (I did so previously), but part of my interest is in exploring the relationship between this musical language and a programming language. Arvo Pärt’s tintinnabuli method is a form of generative music composition, and so it has some natural affinity with computer programming.