Novalis
If you read my last blog, you'll already have a pretty good idea how Novalis was made. So rather than taking the track apart again, I thought I'd explain what's happening in the visualiser, because it's become a slightly strange project in its own right.
At heart, it's a tiny automated film editor running live in your browser. The page you're looking at is on Squarespace, but the visualiser itself lives elsewhere. Its HTML and JavaScript, along with the music, are hosted on GitHub. The nine video sources are much larger files, so they're stored separately on Cloudflare. When you press Play, the browser starts the track and calls the video material it needs from Cloudflare. From that point on, the code is effectively editing the film in front of you while you watch it. There isn't a finished five-minute video sitting on a server waiting to be streamed.
The code has nine short films available to it: an empty classroom, a motel corridor, an escalator, a factory, some telephones, a woman walking through dark streets, another sitting in an empty road, a vigil and an uncomfortable face staring into the camera. But I haven't told it simply to play clip A, then B, then C. Instead, it has a set of rules for deciding what to request and when. It chooses a source, selects a point within that source to begin playing, runs it for a while and then makes another choice. It remembers what it has shown recently so that the same material doesn't keep returning in the same way, and different clips are given different probabilities of appearing. At particular points in the music those rules change. So Cloudflare supplies the raw footage, but the sequence in which you see it is constructed locally, in your browser, as the track progresses.
Then it starts misbehaving.
The code can freeze part of an image while everything around it carries on moving. It can suddenly alter the playback speed, jump a frame, shift a section of the picture out of alignment or briefly hold an earlier moment inside a rectangle. Occasionally the whole screen shudders. Some interventions are connected to specific clips; others to particular points in the music; others have a controlled element of chance. Most are tiny and short-lived. The idea isn't really to create spectacular glitch effects. It's to make an otherwise controlled sequence feel subtly unreliable. You begin to wonder whether you actually saw something go wrong.
I've deliberately exposed some of that machinery on screen. The handwritten notes that flash up are based on the calculations and decisions behind the visualiser: filenames, frame positions, playback speeds and timings. More strangely, fragments of the actual JavaScript occasionally break through the image. When the code responsible for manipulating what you're watching suddenly becomes visible inside the thing it's manipulating, it feels as though the machinery has leaked through the casing. I like that. You're watching the film, but every so often you're also allowed to glimpse the system making it.
None of this is completely random. In fact, quite a lot of effort has gone into deciding where randomness is allowed to happen. Left entirely to chance, nine video clips and a box of visual effects would very quickly turn into mush. The visualiser works because chance operates inside a fairly strict structure: some things can happen at almost any time, some only at particular musical points, some are associated with particular pieces of footage, and some are deliberately rare. The computer gets choices, but it doesn't get complete freedom.
And that's where the visualiser connects back to the music. Novalis is built in much the same way. Underneath, the kick, bass and arrangement are deliberately rigid, but LFOs are constantly making small unpredictable changes to tuning, filters, gain and effects, while sequencers such as Sting introduce uncertainty into the notes themselves. I increasingly think that's what I'm looking for when I make music: not randomness for its own sake, but a solid enough structure that you can afford to let bits of it escape your control. This time I just built a film editor that does the same thing.