Music Composers Unite!
I began by coming up with a suitable groove, which I made into an 8-bar loop. Then I added an intro bar. The diagram shows an ending too, which was not used on this occasion, but for the sake of argument, let’s assume that it was. The puzzle I had to solve was how to make the intro flow seamlessly into the loop, and the loop into either another copy of the loop or the ending. In terms of the actual notes/MIDI, this isn’t an issue. However, the problem is that audio is what is being delivered. The process of applying effects and mixing results in “release tails”: pieces of audio that persist for a short time after the MIDI section has ended. The end result is that these release tails effectively become part of the next section’s audio. Had I sliced up the audio the same way I sliced up the MIDI, using only one instance of the loop section, I would have the intro’s release tail on the front of the loop, which would not sound right on the first repeat of the loop, because the intro is long gone by then. The answer shown in the diagram is to use two loop sections, and use the first one as an extension of the intro. This means that the front of the actual audio loop section contains a release tail of its own final segment, which makes for a near-perfect fit. That’s actually what I delivered to the client. So far, so good. But then, I began to wonder about that “near-perfect” bit. You see, there is actually a problem here. If the same MIDI sequence always produced exactly the same audio, it would work fine. In practice, this doesn’t happen. Randomization of samples, for example, or effects plug-ins, can change the result each time – or free-running effects that are not synchronized to the song position (e.g. a free-running tremolo effect). So the final segment of the first loop would sound slightly different from the final segment of the second loop, and in theory this makes for a mismatch in the signals at the join point.
So, what is the answer? I’ve been puzzling over it all day, but I’ve come up with a way to make a set of building blocks that will always produce a 100% seamless piece of audio when stuck together. Here’s how it works:
The only drawback to this is that the intro and end pieces are relatively long, so it wouldn’t be very convenient for making a very short piece. That said, this method should produce a seamless result without fail, because the intro and loop sections both end with exactly the same waveform, and the loop and end sections both begin with exactly the same waveform. All the fiddling about with crossfades is done at the halfway point in the original loop, so that the intro and end music is not affected by it. I’ve yet to try this in practice, and it looks a little fiddly, so when I’m in a hurry, I’ll probably just use method 1. Any audible glitches can probably easily be masked anyway by judicious choice of sound at the start of the loop. However, it’s nice to know an answer to the problem. I’m the kind of person who would lose sleep wondering about it otherwise. If you are one of those people too, then I hope this has been interesting and/or useful to read! And if you know of a better way of solving the problem, I’d be very interested to hear about it.