Process - Balancing the unexpected and the predictable
In generative music, we’re likely to be using some probability to govern when to trigger certain events, to select clips, to change some aspect of the sounds being generated. The problem with probability is that it generates randomness and in general music composed by humans is not random. Too much randomness can lead to listener fatigue; when the “humanity” is gone, it’s easy to feel detached from the music.
A counterbalance to randomness is repetition. “If you play a wrong note once it’s a mistake. Play it twice and it’s jazz.” as the old saying goes. If your random processes come up with a sequence of notes or rhythms which is played once then it’s hard to wrap your ears around it and understand it. But if you play that same sequence more than twice then the listener has a chance to “tune in” to what’s going on and contextualise it.
Balance things that change, which are unexpected to the listener, with things that stay the same and are predictable for the listener.
Many aspects of a musical idea can change: rhythm, timbre, tonality, texture, and timing. If everything changes all at once, the result can be overwhelming. Sudden changes will “stick out” in a way that’s typically undesirable for generative music. Evolving changes are preferred as it’s possible to “hide” these so that the listener only realises something has changed over an extended period.
Finding the balance between things that change and things that stay the same is important for creating generative music that will bear repeated (or prolonged) listening.
Evolving changes
In Recipe - Changing chords the clips across and within tracks had different lengths, and the note-wise probability led to different chords with each triggering of the clips. This meant that chords evolved slowly, with changes being gradual rather than all at once. The longer clip length gives the listener time to acclimatise to a particular chord before it changes and gradual, evolving change means that the listener can pick out which part has changed and then settle in to that change, before the next change happens. What we have seen in this first recipe is how to evolve chords and notes.
Taming randomness - gardening the random processes
In the Western music tradition we have many familiar tropes - chord patterns, melodic harmony, rhythmic patterns - that helps those familiar with those constructs to feel “comfortable” with music that follows those tropes. Almost by definition, probabilistic and randomness in generative music is likely to break some or all of those rules. This quickly becomes “too much” for the listener if everything is random.
The key to making music that is generative and pleasant to listen to is to balance unexpected and predictable elements. These could be the notes that are happening, the texture or character of the sound (high-pitched, lower pitched), the volume of tracks, rhythmic patterns. I refer to this process as “gardening” the random processes - taming things that are unruly, messy, too unpredictable or random. You can change the number of repeats of a random process before it changes, or you can rein in the range of a random LFO (or dynamically change the range with another LFO). We can also apply constraints that limit the randomness of note pitches or rhythms, quantising so that it’s within the bounds of what we recognise. These constraints - using scale quantisers or rhythmic quantisers - are not necessarily crutches, but rather just guard-rails that help stop what we’re producing stray into areas that would “catch the ear” of the listener. Of course, it’s completely possible to play with those constraints in order to deliberately play with this listener’s expectations.
What’s important to me is the balance of the unexpected with the predictable. Traditional carpet weavers often disguise a mistake by intentionally repeating it, weaving it into the design until it becomes a feature rather than a flaw. Similarly, repetition and weaving of “wonky” beats into a pattern of music can bring them back to something more predictable - contextualising the wonkiness.
Deliberate use of repeating patterns - ostinato and predictable rhythmic parts
As well as “gardening” the random processes and quantising the randomness, we can introduce deliberately repeating patterns to help hook the listener into a pattern to contextualise the randomness. Ostinato lines are musical phrases that repeat over and over (and over) throughout a piece of music. Pachabel’s Cannon features a repeating line in the bass instruments (continuo part) which repeats throughout. Over this the upper strings play variations on a theme (pattern with variations). The bass-line in this music never changes - it’s there to provide a “ground” theme above which we can weave other parts. Ostinato parts don’t have to be the bass part though, they can be higher parts which are predictable and unchanging. Since they are unchanging throughout, it could make them boring, but we can play with things like changing the key centre underneath them, or implying new key and chord structures above them (for bass parts). If the ostinato line is a single voice, it’s easier to recontextualise these notes than repeating chord patterns, which may get tiring to listen to.
The same concept can be used in rhythmic parts - using a 4/4 kick drum part (notes on 1, 2, 3, 4 of the bar) can provide an anchoring for the listener, allowing you to use much more complex rhythms around this. Even if this kick part isn’t very loud or prominent, it can provide enough anchoring for you to layer other “kick” sounds around it to play with rhythms. You can alternatively (also?) use a common snare part with snare hits on 2 and 4 of the bar but have a much more fluid and random kick part. Adding something predictable in one part allows the listener to “hook in” to what’s static and provides enough context for what is going on around that.
Repeat yourself
If you look at the Follow Action dialogue box in Process - Follow Actions you’ll see that it allows you to specify a number of repeats before taking the next action. You can exploit this feature to build in repetition before evolution. Playing the clip 4 times, say, before moving on. This works for shorter clip lengths or for rhythmic patterns, but you may want to avoid this for longer clips.
You could build an ostinato pattern within a clip and variations or evolutions of that pattern and then use the Follow Actions to gradually move through those evolutions, balancing repetition with gradual evolution. This would break the strict “ostinato repeating all the way through” but may allow you to balance predictability with the unexpected.
YOU define the parts, the computer picks the order
Using Follow Actions, Process - Follow Actions you can create motifs and ideas that you like, or rhythmic parts, or chord changes but then use the randomness of the Follow Action to dictate which part is played next. This balances predictable (the written or created parts) and the random (which order they are played in). This may be “just enough” randomness for many people to begin with.
Contextualising randomness using humans
Combinations of the ideas above could give you a framework for generative music piece or performance. If you are skilled in improvisation then it might also become the “unpredictable bandmate” for you to improvise against, with your performance adding the “human touch” and balancing and contextualising what is played by the generative system. See Process - Your Unpredictable Bandmate for more on that idea. So if a motif is played, maybe you echo that motif. Or you could play a chord sequence to drive movement against a random backdrop. Or you could play rhythmic or drum parts again contextualising the random processes.
Play with the “1” - mess with the listener’s perception
In Anna Meredith’s track “Nautilus” the drummer joins the track about halfway through. When he does, it COMPLETELY throws me off and makes me rethink what I had perceived for the entire first half of the track, because the “1” downbeat in the bar is suddenly redefined in an unambiguous way and you realise that actually what you thought was the “1” was actually an off-beat. It’s very disconcerting. In fact, the beauty of that track is that pretty much the whole way through you’re never quite certain where you are in the bar.
So how can we, as Lazy Producers, similarly play with the listener’s perspective? Well, one way is to use poly-rhythms or poly-meters to slice the bar into different and competing rhythmic parts. If your arpeggiated part is playing “in three” consistently, but the kick on the drum part is playing “in four” consistently, then if that kick doesn’t come in immediately, then the listener will gravitate to where the “1” is for the arpeggiated part, but will then have to readjust when the kick enters.
Tonally you might be able to do similar things - your chords and arpeggios may suggest one tonal centre, but that gets redefined when the bass comes in.
All of these ideas talk about anchoring perception and then playing with that through alternative contexts. You can choose whether that happens subtly or overtly.