Hey folks, do you ever get the itch to sit down and spend a few hours writing about something deeply technical? We sure as fuck do, so buckle up folks, this is gonna read like a technical white paper, with pictures. Okay, it might read a little easier than that, but we’re going to explain what we’re up to, and well, that’s complicated. Complicated is okay, because what the contents of this article enable for is is huge.
Before we get to all that, we’re still sort of in the middle of everything we’ve been in the middle of this whole year. The score for Stuck is coming along, Algorithm is starting to find it’s way to ears, and 2020 is still a thing. Just because we’re not gonna talk about that stuff today doesn’t mean that it’s not happening. These things are happening and we’ll share some news with you on them all… eventually.
Today, however, gear up, as we’re going to talk about something we invented for ourselves: sequencer chains. Well, I wouldn’t be surprised if someone else had these ideas before but since we never met them, we’re going to claim originality. Today, folks, a very exciting door opens for interstellar musical space travel. What are sequencer chains and why is this exciting? Read on to find out more.
The Problem is in the set
The set? Yea, you know, when multiple songs are played together, one after another, until the live performance is over. Yes, that set. The problem is within the context of playing a set. And this problem has to do with expectation versus reality. Putting it simply, no one can tell you’re not a dj even though you’re literally sitting inside a spaceship when you play music.
Djs are often the performance medium associated with electronic musics, especially electronic musics you can dance to. Almost everyone’s only exposure to live electronic music is by way of the dj. And what do dj’s do? A few things, one of which is that they provide a seamless stream of music for an indefinite amount of time to all the listeners. One song blends into another, into another, and whole time folks get lost in it and dance their heart away with no interruption.
Because Djs can do this so well and most people have never seen electronic music performance live outside of the context of a dj, there is an expectation: electronic music seamlessly flows together from one song to a next when performed in a set.
Now, this expectation isn’t true of all live music. For example rock bands regularly stop after a song, talk to the audience, and then carry on with their performance. If people are at a rock concert, if the music stops, this is totally fine as this is expected.
Electronic music, while performed within a ‘rock band’ like context, rarely exposes the audience to the concept of the music completely stopping. Yea, you can get away with it if you really want to, but it’ll still feel a little weird compared to what you’re used to.
Synthesizing songs live is fairly complicated. In order to do so, we must navigate the physical realities of a large number of broad personalities. There are limitations and these limitations are imposed by the players in our orchestra whom we have very limited control over. And it is these limitations that butt up against the expectations placed upon synthesizer driven techno.
Tl;dr: The ways that exist to connect two songs, live, are incredibly limited (out of the box)
Remember, this is about playing a set and in playing a set our goal is to blend from one song into the following song, without stopping the music or otherwise doing anything too jarring to our audience. Ideally they have no idea we’re not a dj because they’re trancing the fuck out. An audience that can truly lose themselves in hypnotic beats, that’s what we want!
Okay, so if the goal is to get from one song to the next without stopping the music, why is that so hard? Because of the way things work, or in other words… science (well, science mixed in with a little personal choice). The hardware we’ve chosen to include in the spaceship each has a distinct set of rules and we have no choice but to work with those devices within the rules that they’ve specified. What might introduce variability in this statement is, hardware usually can be connected/configured in a variety of ways; this indeed does impact the limitations imposed by an artist playing a set – so this is complicated, though we never said it wouldn’t be.
The way that the synths are played is through a ‘brain’, this so called brain is called a sequencer. The sequencer’s job is to play the synths in the way that we, the alien techno musicians, tell it to. We program the sequencer, the sequencer plays the synths, got it? The sequencer then knows how to load all the right things on all the synths and fx and everything else.
So this sequencer, well, it’s a big deal; for us it’s truly the center of the spaceship. When we do something like, ‘load a song from a save file’, it’s loaded onto the sequencer before it’s loaded onto anything else. There are some very real realities to what it means to have a single little device in the center of your universe. And there’s one reality in particular we want to point out.
Most sequencers, especially our sequencer, cannot load anything while they are playing a song. No really, nothing. Think about your old computer from the 80s, you didn’t get to load a game while another was running. Quite the opposite, you had to stop what you were doing to free the computer up to then load the next game you wanted to play. Our sequencer is like an old computer in that way, in order to load a new song it has to stop playing the former song. This makes seamless transitions between two songs REALLY hard, well, impossible.
Okay clearly not impossible, or this article would be a lot shorter. But think about this, if everything has to stop to load a new song, how do we get seamless transitions between two songs? Well, if our brain has stop, could we just have another… brain?
Clearly this is gonna get weird.
Can we have more than one sequencer? Yep we totally can. But the devils in the details when it comes to multiple sequencers. Here’s how we have more than one musical midi mind as we inch toward our goal of dj-like continuity in our synth sets.
We love the clock
The center of everything has to stop what it’s doing to load the next song. Okay… given this, how is it ever going to be possible to have seamless transitions between two songs, like a dj does? Our sequencer has one secret weapon that still makes this possible, but only one. The clock.
A clock is a synchronization pulse between all electronic musical devices within a single spaceship. A heartbeat, if you will, and this heartbeat makes everything work together. Without this heartbeat it’s like all the musicians in the band don’t know how to play with each other any more. And it is also because of this heartbeat that almost anything is possible
Our sequencer, the Pyramid, can do one thing on the side while it’s loading – it can send the clock. And this enables us to do something particularly handy, it allows us to run secondary sequencers while a song is loading on the primary sequencer. No one said you had to have just one sequencer, in fact, you can have quite a few and there are a few different ways you can hook them up. As long as those secondary sequencers can keep playing, the music will keep going, even while we load. And the secret… is in the clock.
Regardless of the midi network, the key to multiple sequencers is always the clock. As long as your clock continues to send throughout your midi network your various devices can keep playing until they specifically receive a STOP message, even if one of the devices needs to stop for some reason (like to load a song). If the clock stops, everything stops. If the clock plays on, well, the rest is up to us.
And, thankfully, the center of our universe can keep that clock going smoothly (ish) while it loads the next track. This means we can have more sequencers and that means there’s more to read.
We eluded to it above and here’s where things get formal, but with pictures! Given we have this clock present, ever present, in our network, it means we can use multiple sequencers. While there are various ways one could implement a sequencer network, we’re using a technique we’re calling sequencer chaining. Sequencer chaining is simple on the surface, but comes with some interesting challenges best left to aging techno aliens.
A sequencer chain is when two sequencers are connected, one with the role of primary and one (or more) with the role of secondary. Because our particular synth pile is based around the notion of a central sequencer (one sequencer to rule them all), the role of the secondary sequencer is to response to the commands of the central sequencer. That is, the primary sequencer tells the secondary sequencer when to play and when to not play.
It works like this, when you press play on the primary sequencer, the primary sequencer starts playing. The primary sequencer, at the same time, also tells the secondary sequencer to start playing. When performer is ready to stop the song, pressing the stop button on the primary sequencer will send the stop signal to the secondary sequencer, and then the secondary sequencer will stop its performance.
This control works unidirectionally, so commands originate always from the primary sequencer. If the secondary sequencer is stopped, no messages are send to the primary sequencer, and the secondary sequencer would stop without having any effect on what the primary sequencer was doing.
Sounds easy enough, right? You just program your secondary sequencer to play some synths and as long as the clock doesn’t stop you can mix in whatever synth you want whenever you feel like thus providing you smooth transitions…. not quite.
Actually, the ways you can use your secondary sequencers is fairly limited out of the box.
Ah… the rabbit hole continues
Play/Stop: Almost no control
There’s a fundamental question we haven’t presented to you which is, “When, exactly, does the primary sequencer send PLAY and STOP messages to secondary sequencers?” Is this something that we, as alien musicians, have any control over? What does it mean when we do, or do not have control over the when of a PLAY or STOP message?
In our case, the Pyramid sequencer, our primary sequencer, is as rigid as it gets. First, you can’t program when your PLAY or STOP message is performed by the sequencer. A PLAY message always occurs when you press ‘play’ and a STOP message always occurs when you press stop. This very specifically means that the secondary sequencers always start when the primary sequencer starts.
The only control you have, actually, is whether or not to send play/stop messages to other sequencers at all. Literally, that’s it. So, that means, at least out of the box, you have to want all your sequencers to start at the same time as the primary, or the primary can start alone and will have no subsequent ability to start a secondary sequencer.
This isn’t terrible, but it’s limiting. Depending on what the secondary sequencer is capable of this might not be any kind of an issue at all. But of course… not all sequencers are equal and so, for the wrong secondary sequencer, you might not really be able to use it at all. Let’s look at two deeper examples so you can see what we mean.
Tightly-coupled sequencers Example 1: Rytm Drum Machine
The first example is an example where tight-coupling of two sequencers is to our benefit. Our drum machine is the Elektron Analog Rytm. It, like many drum machines, has a sequencer built into it. Drum sequencing often benefits from a specialized sequencer workflow, and so it’s very common to sequence drums directly on a drum machine.
There are two options for starting the drum machine. We can either start it manually or we can have the sequencer do it when we press play. If we start the drum machine’s secondary sequencer when we press play on the primary sequencer then the drum machine will start in perfect time with the song. Starting the drum machine sequencer manually will also work, but will require more effort on the part of the alien techno performer and when you’ve only got two hands and a free foot, you have to be choosey about where you want to put your attention when performing live.
Starting the drum machine with the primary sequencer generally tends to work out better for our live performance. It frees up our hands and mind to manipulate the synths directly, instead of counting bars in the song to ensure the drums start at the correct time. When the drum machine starts automatically, it also saves us from having to press two play buttons simultaneously (doable, but talk about dull). We can even start the drum machine’s sequencer and simply have it not play anything, this allows the drum machine to stay more synchronized and also allows us to have silence. While we occasionally will stop the drum machine manually, the drawbacks and limited usefulness of starting it manually has meant that this tight-coupling of the drum machine to the primary sequencer has been of great benefit to us.
In other words, at least when it comes to our drum machine – thank goodness the primary sequencer tells the secondary sequencer to start when it does.
Tightly-coupled sequencers Example 2: Making a sequencer ‘useless’
Tight-coupling of sequencers, in our example means that, all sequencers within a midi network start at the same time. Above we examined a situation where this was a good thing. In other situations, this can render your sequencers effectively useless.
A great many synthesizers will have integrated sequencers, or a sequencer that is built-in to the synthesizer. This internal sequencer can perform only the synth it is attached to, though sometimes they can ‘export’ data to a midi network in a very simple way. In general these sequencers are extremely limited when compared to our primary sequencer. They come with some of the same limitations as fancy sequencers do too.
The Roland System 8 is a digital synthesizer that comes with many bells and whistles. It really does try to provide a little bit of everything, and it sounds alright. The System 8’s sequencer can only play one note or chord at a time. One sound can have one pattern of notes (sequence) stored that contains up to 4 bars of music. Much like the Pyramid and the Rytm, when it comes to how to respond to PLAY and STOP messages, it either receives them or it doesn’t.
Tight-coupling of the primary to the secondary, in this case, is very bad. When the primary sequencer begins playing, it automatically starts the secondary sequencer. If any notes are programmed into that secondary sequencer, within the grand total of the four bars available to you, they better be notes for the song you just decided to play. Remember: you get one pattern for a sound, so if you use that sound in two songs, or maybe you want to use that sound but the song you want to play doesn’t use the save sequence, the sequence is gonna play anyway.
What this means for the non-musicians is, it’s really hard to base your entire life around 4 bars of music that start automatically when you press play on literally any song. We re-use sounds constantly, but don’t re-use sequences between songs.
Basically, tight-coupling means that we have to use our configuration powers and simply tell the secondary sequencer on the system 8 not to start at all. We can still trigger a sequence manually, at least there’s that, but much like the problem we discussed with the Rytm, starting things manually requires a lot more effort to appropriately synchronize.
Wouldn’t it be cool though, if we could start or stop this sequencer whenever we felt like? If we could, then the system 8’s sequencer could be used to perform the system 8 for us while our primary sequencer loads the new song? Well, good news then, we can.
While in example 1, things working the way they work is great, example 2 shows us that there’s some lost potential in the limitations present in all the sequencers we’ve looked at thus far. But what if we could control when we send a PLAY much like we could control when we send a note, or modify a filter parameter? A mechanism like this would mean that we could store sequences in alternative sequencers and turn them on or off whenever we want, in perfect synchronization with whatever song we’re mixing into, or out of.
Think about it, this would be particularly valuable for us given our goal of seamlessly connecting songs together. So far, we”ve mentioned that all the instruments must stop when loading a song, except the drums. Only having drums to connect songs together is really limited. We have several synthesizers with built-in sequencers, the System 8 from example 2 and the Prophet Rev 2 could be two additional instruments we could use when mixing between songs. That is, each of these instruments could store additional song patterns and be triggered remotely. Then we’d have the drums and two instruments that could be any instruments, the possibilities this creates for us to mix between songs is tremendous. We will play the seamless synth set.
But we already said we have no control over when a PLAY message is sent to a secondary sequencer. It either happens at the same time as the primary, or not at all. Since we can’t modify the hardware itself, what options are there for us? There’s one option: we can use something that we can control and transform it to a PLAY message.
We know, this sounds complicated, it kinda is. But the idea is like this. There are some parameters we have a lot of control over, they just aren’t the PLAY message. We simply don’t have the same control over how PLAY messages work, guess they’re special. However when it comes to a great many control messages that are available to us, most of them tend not to be very useful. What if borrowed a lesser message and we, in real time, turned it into a PLAY message? A proxy message, if you will. Well, we can totally do this and it’s still totally complicated.
Oh god, what is this? No one said synthesizing was for the feint of heart. The above diagram is a midi data pipeline, well, two data pipelines. Midi data goes in one end, goes through an arduous journey of filtration and transformation, and is ultimately spit out the other end. This is how you reprogram midi data in real time; this is how we can turn a control or a musical note into something like a PLAY message.
This data pipeline is programmed into a special little device called the MidiHub. MidiHub is one of like, I think 3 devices in the world that will let you arbitrarily reprogram midi data in real time any way that you want. All you have to do is learn how to build midi data pipelines.
In the above diagram, four rows are required to give us complete timing control over our PLAY messages. What it does is it converts Midi CC #42 value 0 into a STOP and Midi CC#42 value 1 into a play message. The idea is that we have control over when we send a Midi CC number, so we picked one that’s not really useful on the System 8 and the Prophet, and decided that would be the one to convert to PLAY or STOP. When we want the sequencers to play, we program a CC42/1 and when we want them to stop, we have the sequencer perform a CC42/0.
Simple enough, right? Since we can’t program when PLAY will happen, we turn something we can program into a PLAY. All we need is some engineering skill and a lot of patience.
We told you it was complicated, but that’s as complicated as it gets. Well, on the tech side, anyway. It totally gets more complicated when we talk about how this all gets used musically. But that’s not the point of this article, this is supposed to be like a white paper, remember?
Bringing it all together
As long as the clock never stops, a secondary sequencer may play while the primary sequencer loads a new song. The more secondary sequencers we have available to us, the more unique voices we have available when mixing songs. Now instead of stopping everything to load a new song, we can have drums and synthesizers available to play while a song loads. The possibilities for mixing between songs within a set are now endless, but this technology isn’t without severe limitation and requires considerable intellectual and creative investment.
With careful configuration and a custom midi data pipeline run on special midi hardware, we can totally mix like dj if not better. The age of the synthesist is upon us but what we’ve described to you just now is the platform, not the technique. With this new platform, doors open, but how we leverage such a technological advancement musically has yet to be discovered. Thanks to sequencer chaining, we’ll be able to broaden our performance abilities dramatically; we’re very excited.
Until next time… synth on.