Aratu music written to play, and to change while it plays

14. Motifs, rows, lists and transformations

▶ Open in Aratu to hear and change the examples

Short named ideas used many times: motifs, twelve-tone rows, melody lists, and the transformations that change them without rewriting them.

Motifs

motif name = … names a few beats, without bar lines, and the name is used in their place. A motif may be defined before or after where it is used, may use other motifs, and while it plays the editor lights the notes in its definition.

key: C major
motif riff = [e4 d c d]
melody = | riff riff+1 riff.inv riff.retro |
Write The motif
riff+2, riff-1 two degrees up, one down, in the key (key:; C major when there is none)
riff+3st three semitones up
riff.inv inverted around its first note
riff.retro its notes backwards, in the same rhythm
riff.ri the retrograde inversion; it combines with +n: riff.ri+2
riffx4 four times

A note outside the scale, moved by degrees, keeps its distance from the scale note below it: C# one degree up is D#.

Twelve-tone rows

row name = … keeps a row: numbers from 0 to 11 (0 is C) or note names, with or without octaves. The row gives the pitches and a rhythm written with o gives their places, before from:

row serie = 0 11 3 4 8 7 9 5 6 1 2 10
melody = | o o [o o] o | o _ [o o] o | O o o o | from serie.RI3 octave 4

Each o takes the next note, and the row starts again when it runs out, as in isorhythm (O is an accented o). The forms are P, I, R and RI, each from 0 to 11 semitones up: serie.P0 is the row as written, and so is serie alone. octave N puts every note in octave N. After from a motif works too (its notes, in order), or a vector written there: from [0 4 7]. A twelve-note row that repeats a note gets a warning, and the Rows tab, beside the messages in Play, shows each row's 12×12 matrix, with the forms' names to click.

Melody lists

list name { } keeps melodies, one per line, with bar lines; they may use motifs and rows.

list temas {
  | e4 d c d | e e e _ |
  | d4 d d _ | e g g _ |
}
melody = temas.1

temas.2 picks the second (counted from 1), temas.all plays them all in order and temas.random draws a whole one each time round, always the same order for the same seed. Changing the number while it plays changes the melody at the next bar. On stage, buttons choose each list's melody, and Alt+1 to Alt+9 choose it for the line where the cursor is.

Each bar of a line can be a melody from the list too: bass = | temas.1 | temas.3 | temas.2 |, mixed with written bars if you like, and temas.all in place of a bar puts them all, in order. A list that names itself stops, with a message.

Transformations

Short verbs change a part, a line or a pattern without rewriting it:

Verb Effect
hh.rotate 1 shifts the pattern by one part
hh.density 50% keeps about half of the hits
drums.velocity 0.8 plays softer
bass.transpose +12 an octave up
melody.invert turns the intervals upside down
melody.retrograde plays it backwards
melody.ri the inversion backwards
melody.augment doubles the note values
melody.diminish halves the note values

The names are the ones motifs and rows take: .inv or .invert, .retro or .retrograde, .ri. transpose counts semitones and may say so with 3st, as motifs do.

melody = | c4 d e g | a g e d |
melody.transpose +7