It’s been a long while since I’ve posted, so I thought it was about time I said something on here. I’ve been on quite a music kick lately (which I’m trying to turn into a music-and-programming kick).
Along with joining a new band (playing violin, and potentially keyboard), and preparing for a big gig with Skipped, I’ve decided that I’d like to get a better understanding of music theory, and ultimately, start composing again — to that end, I’ve started studying counterpoint.
I’ve found a few good resources online (though… come to think of it, I’m not sure what the copyright situation is on these… so I won’t link to them):
Of these, I think the Schoenberg will prove the most helpful, largely because in addition to providing clear ‘rules’ to follow and exercises (as also with Fux and Lehmann), he also provides a large number of examples, each of which has been analysed and annotated to demonstrate its relative strengths or weaknesses. Given that I’m trying to teach myself, I think that’s crucial.
So… what is counterpoint? My current understanding is that it refers to the ‘vertical’ or ‘harmonic’ structures obtained by ‘stacking’ horizontal (or melodic) lines on top of one another. Various systems of counterpoint lay down guidelines (often expressed as hard rules) to guide the construction of interdependent melody lines so that their combination is ‘harmonious’.
In the ‘species’ method for teaching counterpoint, typically a single line is given (the ‘cantus firmus’, or ‘fixed song’; usually one note per bar), and some number of other lines are constructed in counterpoint to it. ‘Species’ refers to various different constraints which are placed on the constructed lines. For example, in ‘first species counterpoint’, just one note is given for each note of the Cantus Firmus, while in ‘second species counterpoint’, there are two notes to each C.F. note. (Fux gives 5 species of counterpoint; I believe others have extended these in various ways).
For each species, there are various ‘rules’ that govern the notes that can be used, with reference to their surrounding context. For example, in first species counterpoint:
- Each (vertical, or harmonic) interval between the added line and the C.F. must be a ‘consonance’ (i.e. a major or minor 3th, 6th, or 10th; or a perfect octave, fifth or unison), preferably a 3rd or 6th.
- There shouldn’t be too many 3rd or 6ths in a row — in other words, the CF and the added line shouldn’t move in parallel for too long; our aim is to make them sound ‘independent’ of each other.
… and many other similar rules.
One way to look at these counterpoint exercises is as ‘constraint satisfaction’ problems — i.e. we need to search through the possible ordered sequences of notes, and select those that satisfy the ‘rules’ (or constraints) given (or more generally: those sequences that break as few rules as possible, or as few ‘important’ rules as possible, or balance broken rules off against other virtues). This way of looking at music composition (i.e. as a constraint satisfaction problem) has been around for a while — for example, I found this from 1990 which considers first species counterpoint from this perspective.
This seems like a nice idea for a Haskell project: firstly, to write a program to verify that a pair (or larger set) of melodic lines satisfy the constraints required of (for example) first species counterpoint; and secondly, to try to generate ‘valid’ or ‘good’ melodies according to a set of counterpoint rules.
Lots of things to learn about. I’m currently a bit confused about how harmony and counterpoint are related — from my (somewhat wandering) reading so far, it seems like there is a big difference between Renaissance or ‘Palestrina’ style counterpoint, and Baroque (and later) era counterpoint. This question at the music stackexchange site sheds a bit of light. Roughly speaking:
- Renaissance music was (or tended to be?) ‘modal’; ‘harmony’ emerged as a kind of secondary phenomenon, through the interaction of melodic lines (satisfying various principles of consonance). Something that confused me for a while (and I still don’t quite get) is that a Renaissance ‘mode’ carries more ‘baggage’ than a modern mode — it doesn’t just involve taking a major scale and ‘shifting’ the tonic to a different degree, but also carries additional ‘information’, for example: how melodies should be constructed, and what pattern of notes constitutes a ‘cadence’ (i.e. a ‘coming to rest’). (Actually: there’s clearly more to understand here — apparently a pair of voices was important in establishing a cadence?)
- By contrast, in the Baroque period, (what subsequently became) the concept of tonality developed. Roughly speaking, harmony — and in particular, harmonic cadences — became much more important in how music was structured. For counterpoint, this meant a stronger emphasis on voice leading, and reduced emphasis on consonance — I think dissonances became more acceptable in the context of a given harmony.
Here are a bunch of references I’d like to follow up at some point:
Anyway… a bit of a ‘brain dump’ post. As I learn more about counterpoint and music theory, I’ll hopefully be able to organise future posts more coherently. I’m quite excited by the whole area at the moment though! I’m also looking forward to having a go at ‘formalising’ my understanding in code.