Music By Design (Part 2)
PART 2: SEQUENCING AND NOTATION
In the concluding part of this investigation into computer-assisted composition, Greg Truckell cells on Dr T's KCS to compose a tune.
LAST MONTH'S VENTURE INTO COMPUTER-ASSISTED COMPOSITION SAW US USING INTELLIGENT MUSIC'S M TO CREATE A BASIC RHYTHM TRACK. THIS MONTH WE'LL MOVE IN ON THE ACCOMPANIMENT WITH THE HELP OF DR T'S KCS.
IN THE SECOND and concluding part of this series on applying algorithmic composition techniques, we will explore some of the remoter regions of artificial intelligence compositional software. Last month, we created some bass riffs and drum and percussion parts, using Intelligent Music's Interactive Composing and Performing System, M. The plan, however, was to write a piece of music in one of the most stylized and highly structured forms known in the history of music - a pop song. Let's get on with it.
Having created a bassline or two and a drum pattern, we might want to start thinking about the structure of the song. While it seems unlikely that we'll be straying too far from the intro, verse, chorus, middle eight structure, it is worth remembering that there's room at the end of each of these sections for something interesting. Introducing a polyrhythm, by altering the length of one of the cycles of the bassline for instance, would let the listener know that something different was on its way, and make you look pretty damn smart. Remember though, in a pop song, the basic groove has to be kept going, so polyrhythmic tricks should be reserved for the occasional fancy bits.
M allows you to experiment with tricks such as these, by allowing you to copy Patterns to multiple locations and then try variations on them. There are six groups of Patterns - there are six groups of everything, really. You can flip between these by clicking on the Pattern Group Bar. You could also click on the Pattern Group Arrow Button, and conduct your way through your themes and variations on the Conducting Grid. Alternatively, you can take Snapshots. These enable you to recall any configuration of whatever's going on in any combination of Patterns, Cyclic Editor grids, Note Manipulation and MIDI Variable Windows - while the sequencer is running. The combinations and permutations, and the range of techniques available, theoretically allow you to rehearse and create the structure of a song completely "live" - in real time. The result can be captured as a Movie, which is a MIDI file (MSF). I say theoretically, because in operation it's just about impossible to execute any of these techniques without a serious glitch - a hiccup or two in the switch from one Pattern to another. This is a real shame; what might have been a fascinating chance to put the freshness and enthusiasm of that inspired "first take" into a song, turns out to be a frustrating stumble from one section to another. You might get away with it in a piece of "ambient' music, but not In a dance song. Still, you can try things out, even make a few Movies, and these can be used as points of reference when ported over to your main sequencer.
Which brings us nicely on to Dr T's Keyboard Controlled Sequencer, Level II (with Programmable Variations Generator), or KCSII. While M has the sort of instantly tweakable user interface that enables non-keyboard players (and even non-musicians) to experiment, the Programmable Variations Generator is a real maze. There have been grumbles that algorithmic sequencers, by not allowing user-creation of algorithms, ultimately restrict the styles available through that software. The PVG allows you to create algorithms - in fact, it insists. It even allows you to create algorithms of algorithms (called Macros). Logical testing for motifs, reference sequences, and the creation of musical ornaments are the sorts of tools you will find here. The potential is awesome; so is the learning time. Fortunately, you can take things slowly - the highly informative handbook, liberally dosed with examples and suggestions (and still less fun to read than The Egyptian Book Of The Dead), advises just this approach.
A significant difference between KCSII and everything else (except perhaps Intelligent Music's Realtime), is that it combines compositional software (the PVG) with a powerful and. conventional multitrack sequencer (Track Mode). There are two more modes; Song Mode allows the creation of song structures from sections, while Open Mode could be the subject of another article in itself. The benefits of a system like this exceed even the potential of MSF Files; variations generated in the PVG are put straight in with the rest of the song; you can try the results of a Vary in context without any fuss, and either keep it and move on, vary it some more, or Undo it and get back to where you were.
On with the show; we'll assume we have a few chunks comprising bass, kick, snare, and percussion. Now some chords. We could have added these in M - remember that the Durations Cycle can have some pretty high values, and that Patterns can have independent time signatures, running at a quarter or even an eighth or less of the tempo of the bassline. Your Movies can be converted to KCS Sequences (a bit of a drag), and then loaded into Open Mode. As we work on each section in Track Mode, we can use the Sequence to All Tracks feature, which puts each MIDI channel on a separate track, thus saving the hassle of having to strip each channel out separately. Find the riffs for verse one, and let's go.
If we know where we want our chord changes, fine. If not, why not let the software help? There are plenty of ways of generating notes derived from the bassline. First, copy the bass track to another track and change its MIDI Channel to that of your pad sound. Now Delete 80% or more of the new track, using the Global Changes in Edit Mode, with 20% Protection. This is used to randomly generate the points at which the chords will play. If we don't like the results, we can Undo them and do them again until we do. We might try coarsely Auto-Correcting (quantising) the results if they're too syncopated. There are many tests which a note may undergo in order to determine whether or not it's a candidate for variation; since in this case the variation is simply deleting the note, we can effectively determine the rhythmic and dynamic character of the variation with reference to the original. Remember also that this sequence is only being used as a source for variations; It will make no appearance in the completed song itself so if we want variations generated from something almost, but not exactly, the same as a bass riff, then edit the source a little before varying it.
Next we'll transpose the variation until it's playing in the appropriate register for the pad sound, then set up the Defaults screen not to allow New Scale Positions. What this means, in the context of varying source data which contains no key changes, is that the variations will contain no bum notes. New notes, at pitches higher or lower than those in the source material, may be generated - we can put limits on this. We may also amend the software's analysis of the source, by allowing pitches which were not included in the source, but which would not be out of key. This is reasonable; few bass riffs include every note in the scale.
"THE COMBINATIONS AND PERMUTATIONS, AND THE RANGE OF TECHNIQUES AVAILABLE, THEORETICALLY ALLOW YOU TO REHEARSE AND CREATE THE STRUCTURE OF A SONG COMPLETELY 'LIVE'."
WE'RE READY TO let the computer offer possibilities for chords. Depending on how we got this far, we'll either have a sequence as long as the section we're working on, or as long as one or two lines from that section. If we're working with something the same length as the section, then variations should be generated in Edit Mode; otherwise we'll need consecutive, and possibly evolving multiple varys (as many as one less than the total number of lines we'll need, as the varys are tacked onto one copy of the source). Enter some weights for pitch changes of 3, 4 and 7 semitones Constant on the Changes screen; remember to set values for Pitch Limits, probably from 8 or 9 semitones below the lowest pitch in the source sequence, to the same interval above the highest pitch. If we're working on the whole section in one vary, then we'll want every note in the sequence to be varied - the source will be kept for root notes at least for now. Enter a higher value under Changes Per Vary than there are events in the sequence, and go into Edit Mode. Play the original and the variation together, and we'll get some idea of the measure of success so far. Add another variation on the variation just generated, and we'll end up with three note chords, in key, which we'd probably never have dreamed of (we might have chords containing the same pitch on more than one track; these can be cleared later by Sorting the merged tracks in Chords in Master Edit, and erasing notes in Global with a pitch in unison with the preceding note, by logically inverting a test for protecting note intervals of 0 - simple!). Now edit the note lengths until the pad plays smoothly.
While those of you unfamiliar with the PVG may have been a little bemused by some of this, some of you, particularly those of you who have used PVG, will realise it barely scratches the surface. The potential is there for really high-level processes; you'll have to understand composition to understand what you're doing - but you only need a pair of lugholes to tell you If it's appealing or appalling.
One way or another, we have our chord sequence. Whether we put one in while still working with M, or stuck in a chord sequence in Track Mode or tangled with the PVG, we're at the same place now. We're not finished with the pads yet though. If we used the PVG to create our chords, we'll still have them on separate tracks - this means that we can put them on separate MIDI channels. If we got the chords elsewhere, then we can use the PVG's Set Values Screen to change the MIDI channels of some of the notes. We could apply a logical test of some sort we could put the highest note from each chord onto a MIDI channel which plays a brighter instrument, such as a trumpet instead of a brass pad, or a violin instead of a string pad. This would actually go some way towards suggesting not so much a melody, but a harmony part to a melody. Using a multitimbral instrument like a Roland D110, we could pan the parts on the various MIDI channels around the stereo image a little. This sort of technique gets closer to traditional (orchestral) polyphony than synth music has been for a sod of a long time. Face it, string sections may play chords, but no one bowed instrument from the orchestra plays chords. Instead, chords are built up from individual monophonic (as opposed to homophonic) lines.
If you don't have a multitimbral instrument, all is not entirely lost. To obtain a similar effect to the above, the highest note from each chord (or whatever other logical test you want to apply) can be selected for variation, the form of the variation being such that the velocity of any varied note is increased by some amount. Assuming that the sound gets brighter as it gets louder, we have multiple parts from within a monotimbral instrument (such as the venerable DX7). It's worth mentioning that generating chords from a monophonic line in the PVG will probably not generate one sequence which contains the highest notes from each chord; it's more likely to generate sequences which interweave. This is fine particularly if you start to experiment with transposing tracks to different registers: Instant string quartets, real answering phrases, duelling banjos...
Having generated as many variations as we need to create our chords, we could mute the original and listen. Remember that the original was derived from the bassline, so when the chords are played with the bassline, the root notes are already there. Keeping the root note out of the chords can give both parts more room in the mix, as well as saving you synth voices.
ENOUGH OF PADS. There is a family of percussive sounds which, used within a certain sort of sequence, create what I call the digger-digger Sound. You know the sort of thing: the bassline's thumping, the drums are thrashing, there's a high melody, and somewhere in the middle there's something going digger-digger-digger. Marimbas, synthesised harps, that sort of thing. In the good old, bad old days this was probably just provided by an arpeggiator or two. Well, we can do better than that.
"YOU'LL HAVE TO UNDERSTAND COMPOSITION THEORY TO UNDERSTAND WHAT YOU'RE DOING - BUT YOU ONLY NEED A PAIR OF LUGHOLES TO TELL YOU IF IT'S APPEALING OR APPALLING."
We'll use the bassline as a source again.
This time, we want to copy only the first few notes - say seven - onto a new track. We also want to copy something longer - 12 notes perhaps - onto another new track. These will be used to generate consecutive variations. We're trying to create pattern phasing, so that the patterns are coming back into their original phase by the closing lines of the section. Again we're operating with short sections from within a structure. There's no need to generate vast amounts of material. We want three minutes, not 30. To calculate the number of notes to take as the source for each new track, pick two numbers which when multiplied together come to the number of notes you need in order to play through the section, then subtract one from one of the original numbers - we want the patterns to be back in phase by the last couple of lines of the section.
Now, since our sequences have been taken from the bassline, they already contain motifs which the listener will be able to recognise - always a good thing. Since the lengths have been changed, the motifs, be they particular accents, articulations, or sequences of notes, will start to appear in places other than where they appear in the bassline. If we can get away with it - and we nearly always can - it can be an effective trick to generate the digger-digger sequences for the verse from variations on the bassline from the chorus, and for the chorus from the verse (and for the middle eight from both). This technique is similar to hocketing (where a part is played on slightly different sounding instruments at different sections of the piece), only I would venture to suggest that it operates at a higher level of musical sophistication.
How should these variations sound? I'd suggest that only the pitches be varied; changing the lengths of the phrases themselves should generate enough variation in the rhythm. Since the phrases, and the notes within them, are of different lengths, when they play together they will be in unison at least as far as duration and articulation are concerned. But as soon as the shorter sequence starts its first vary, the sequences will go out of phase and hopefully into an interesting polyrhythm. Using consecutive and evolving multiple varys, each variation will be generated from the preceding one; if this takes you too far from the original, but you don't want to cut down on the number of changes per vary, and you don't want just consecutive multiple varys, then you could protect some steps - the first two or three from one sequence, the last two or three from the other. That way there will be something for the listener to cling to even at the most varied vary. Better yet, set one of the variations to Reverse; this causes consecutive evolving variations to be generated, then replayed in reverse order, starting with the most varied, then finally playing the original. When this is played alongside another evolving variation, the results are something like this. At the start, there is something instantly recognisable accompanied by something vaguely familiar. As the section progresses, the instantly recognisable phrase starts to vary, and this should be heard as such; meanwhile, the vaguely recognisable phrase is becoming more familiar. As we get near to the end of the section, the listener has clued in to what is going on, we have returned to the instantly recognisable phrase, and the patterns are returning to phase. If you don't think that's clever (within the context of dance music), then you're a sick man, Letitia.
Having generated almost an entire song from a humble bassline, it only seems fair that the bassline itself should get some attention from the PVG. We may already have the articulation and dynamics of a slap 'n' pull bassist - but what about the sounds? Maybe we've got a great slapped bass patch, but it doesn't sound right for the whole song, whereas the patch that sounds fine throughout the song doesn't cut it as a slapped bass. Have a listen to the bassline, and figure out where the slaps should be and shouldn't be; then it's a simple matter to program a PVG Preset or Macro (Programmable Algorithms, remember?) which applies the logical tests we will need, and which will change the MIDI channel of notes which pass the test. Typical tests might be for notes with high velocities, which fall close in time to the preceding note but not close to the following note. Of course, we can invent logical tests that might not seem so intuitive at first; perhaps we only want a slap to be followed by a note that is higher in pitch. We don't have to stick with what sounds reasonable at first.
HAVING TOUCHED ON the sounds themselves, let's digress for a moment and talk about using artificial intelligence processes intelligently rather than artificially. I'd like to touch on the randomisation features in your synthesiser's Visual Editing System (VES). Editing programmable synthesisers with a computer has become a way of life for professional programmers. Many programmers dismiss the random voice generator section of a VES as a gimmick not for the serious programmer. This is not so; with the use of the randomisation mask found in all good VESs, artificial intelligence-assisted synthesiser programming makes perfect sense. For those of you who haven't bothered with VESs, a randomisation mask, when set up, "masks out" certain parameters, so they're exempt from randomisation. Let's suppose we want to synthesise an acoustic guitar patch or two. We select one of our existing guitar patches for editing, then open a mask with the parameters we consider essential masked out. We're ready to randomise.
You might be surprised how useful curious variations on your favourite patches can turn out to be. Suppose you have used any of the techniques described above to split a synth pad onto several tracks. Try putting slightly randomised versions of the original sound on some of these tracks. The effect of all tracks playing together will be of one instrument playing, but it will be a more complicated instrument, with more life and "human" variety.
Back to the issue of using artificial intelligence/algorithmic software, even to aid in compositional processes. Why use a computer when you can write a tune yourself? Let's suppose that your keyboard technique is fab, that you can imitate bass guitar, stick, horn sections, sax solos and acoustic guitar strumming with precision and ease. Can you go beyond all that? I've written basslines in M (I wrote them, M was just there) which sound like a modern bassist, but which a modern bassist couldn't play. I've created 12-string guitar parts in the PVG which couldn't have been written even with a MIDI 12-string guitar controller. The notes are in the right places; they sound just like the instrument that they are replacing. But bassists don't have hands that big, and you can't mic up every string of a 12-string guitar. These are new ideas; they haven't been explored before, because they couldn't have been done before.
More significantly than this, I keep surprising myself with this software. I don't really believe that it's fair to say of an experienced user that they're throwing dice with their music. As the above examples should demonstrate, it's possible to work with specific objectives in mind, and to attain these objectives. It's not always easy - learning to use the PVG is just like learning a completely new type of synthesis. But it's worth the effort; you'll find yourself able to attempt things which you wouldn't even have thought of before you took the plunge, far less would you have been able to achieve them from within your conventional sequencer. And yes, now and again, you really will surprise yourself. Where the hell did that come from, you will wonder; and it was never the computer's idea. It was yours.
Feature by Greg Truckell
Previous article in this issue:
Next article in this issue:
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!