A classic kids’ toy and the typically adult musical subgenre of acid house don’t usually have much in common, but this year I had the opportunity to weave them together using Lego Technic to form hypnotic and hooky sounds in my new kinetic sculpture “Play House”.
AudioGraft is a festival of contemporary experimental music and sound art held each year in Oxford, England. It’s curated by the Sound Art Research Unit (SARU) at Brookes University and co-promoted by an organisation called Oxford Contemporary Music (OCM), which puts on some of the best gigs in town (in my biased opinion). At the end of 2013 OCM put out a call for proposals for pieces that were playful, immersive and engaging for this year’s show. Despite a nagging concern that the schedule was too tight – still working a day job, I would have to have it ready for March – I couldn’t pass up the opportunity to work on such an exciting project, so I worked like crazy on a proposal and a few weeks later received the great news that it was accepted. This story touches on of the process of building the piece, the technical details and what went wrong and right.
For the past few years I have been experimenting with rhythm, including developing a number of Lego musical machines. For years I have been using Lego to prototype ideas, but I had started to use it as a material to put work in context. In particular, my more recent ideas work on getting lost in a youthful creative process whilst riffing off more mature themes, structures and sounds. My proposal was to develop Play House, an automaton that would churn out mesmerising acid house — not the white-gloves-and-whistles sort of acid house, but the more spatial stuff, inspired by artists like Plastikman and Basic Channel. The plan was to play it out loud on speakers and draw the audience in to a room where they could explore the minutiae of the musical and mechanical structures.
My original proposal for Play House had mechanical a sequencer for generating melodies played through a clone of a classic acid synth – the TB303 – something I’ve been itching to do for a long time. The melody would be held together by a drum beat generated by sets out-of-phase chain loops to produce pseudorandom rhythms on analogue drums, a more elaborate setup from my old piece, Clunky Drummer. The drums were also clones of classic analogue synths as the bass, hat and snare sounds from the TR808. To add additional atmosphere I was also keen to add tape-based samples, with Lego actuators pulling cassette tape over tape heads. The audio gear was modular, another great technology for exploring ideas playfully, and a mixer wired each unit up to guitar effects pedals to change the timbre and spatial qualities of the sound. These modules and guitar pedals would be tweaked in real time by various mechanisms to keep the sound shifting. This was all to be controlled by a central composer of sorts, a mechanical random number generator.
One minor spoiler is that I talk about the R&D of the work here, but many of the mechanisms in the proposal had to be dropped from the final piece. Artistically this was a good thing – the piece was just too complicated – but for any die-hard Lego Technic mechanism fans there is a Play House development playlist to see them in action. This includes my early experiments with tape playback that were dropped early on due to the tight schedule. Now though, on with the details…
The random number generator design was a ball run where a little Lego basketball would wind to the top and bounce down through a set of pegs, landing in one of four slots. A mechanism would push beams through all four slots and the ball would get moved into a catching mechanism that pushed an actuator in the machine. Thus, the machine would do one of four operations every time the beams were pushed through. The plan was to use these actuators to tweak the melody of the acid bass line and I thought if that was successful I could duplicate the random number generator to work as a composer that could drop in drum patterns on the beat. The final result can be seen in my lever mechanism video.
To keep the melody and drums in sync I needed a main sequencer that handled the count of each note. A traditional electronic sequencer often splits up a bar into 16 notes with 4 beats in a bar, i.e., 4/4 time with quarter notes. In this piece I decided instead to use 2/4 with quarter notes, partly because going from 16 to 8 saves a lot of space and complexity, but also because it would generate a melody that repeats on every other beat, and I found this ideal for the hypnotic music I was producing. The construction is very simple because Lego has a 16-tooth gear, so to make an 8-step sequencer you need a central shaft with 8 of these gears on it and from each gear you drive another 16 tooth gear, each being rotated two teeth on from the last. Each driven gear is 1/8th out of phase with the last, and if you put little tappers under each gear and you have a sequencer that taps out 1/8th notes.
The electronic signals of a tapper impact is picked up by piezo transducers. In my original design, I wanted all of the electronics to be completely analogue so you could trace the signal path by eye. I knew I would need some electronics to tidy up noise and debounce signals, but I thought it would be minimal, simple TTL stuff. After getting lost in breadboards and floating signals I exercised artistic license and used AVR chips to handle input and farm it off to other parts of the machine. This broke a little inner aesthetic because I really wanted it to be analogue in every sense, but time was short and in the end it was the right call as I had to rejig the system with software hacks. Being able to reprogram the AVRs at the last minute gave me a lot of breathing space.
To mechanically store a melody I needed to store a pitch value for each note position in the sequence. I came up with a matrix with eight columns – one for each note – and the rows in the matrix would relate to the pitch that needed to be played for each column. Then, by putting metal strips along each row and putting a metal contact point on each column that can be moved, you have a very crude mechanical memory The column is moved up and down to choose the pitch and when it wants to play that note it sends a 5v signal through the column contact, which in turn conducts through row to determine the pitch. My prototype used this setup to manipulate the melody with just four instructions: 1) select previous note in sequence; 2) select next note in sequence; 3) move selected note pitch up; 4) move selected note pitch down.
Getting the random number generator and matrix selection mechanism to work was the main part of the project R&D. It was incredibly satisfying to get running but as the project progressed I hit serious snags. Firstly if anyone tampered with the machine it could effectively ‘short circuit’ the mechanism where two gears would run against each other, and this would immediately break the piece, it was very high-risk. Secondly the mechanism that picked up the random number ball to actuate other parts of the machine was temperamental depending on the how much it had to push, I couldn’t have it just stop working on site. So very late in the process I had to scrap the design and work from scratch, I went for a much simpler solution based on tried and tested mechanisms from my previous work. The sequencer and drum system was the same, but the pitch selection and note on/off switches would be controlled by out-of-phase gears like in my earlier piece Clash of the Fractions.
Though painful to lose those mechanisms, as soon as I made the choice to simplify I knew it was the right one. The R&D wasn’t a total loss because I’d been formulating other musical and mechanical ideas in the back of my mind. Dropping the complexity brought all that into the fray and I was free to go with it. The problems I had isolated during R&D helped me figure out elements of the music that would and wouldn’t work. Early musical ideas were sketched out both mechanically and with a test rig using an Arduino to send signals to the modular gear. This was controlled by a simple app I wrote in Qt Creator to poke around with motifs.
Additionally, losing the complexity helped because I wanted the final piece to be multi-colored and the complexity of the color against intricate mechanisms was just too hard on the eye, looking more like an indecipherable technology project than an installation you could really engage with. A much more chunky look benefitted the design both aesthetically and in terms of robustness. The final mechanism has no CPU as such, but the sequencer and drum systems were still intact, and during the R&D I had also been figuring out what sort of voltages I had to send to the synths to make them work and written a first pass on the software needed for the AVRs.
During the build I toyed with the idea of having all the electronics on breadboard, keeping things a bit pluggable like Lego. I’m glad I didn’t try this — even if the wires were glued down it would just take one curious hand to pluck out one cable to break the whole thing. Instead, I used stripboard which was robust but kept the homemade feel, and it was wired with an intentionally jumbled look with multi-colored wire between points. This played off the Lego colours and kept a slightly bonkers breadboard aesthetic.
In terms of the embedded stuff, the drum circuit was the simplest, so that’s where I started. I knew the impact code would be reused on the sequencer so getting that working was a good reassurance. The setup is similar to this spooky arduino project, but far simpler because it doesn’t care about impact volume. There are four analog inputs on the AVR for picking up the piezo — either bass, snare, open hat, or closed hat. When it gets a spike, it sends 5 volts off to the respective drum module to make a sound. I wanted to get a reliable 1 millisecond impact so used interrupts to clock the output. After that it was held off a few milliseconds before accepting any more inputs. Ironing out these issues early on was a life-saver; I would not have time to debug these fiddly issues when it came to cramming at the end of the project.
The sequencer circuit got a lot more complicated. The way it works is, when one of the eight piezos are hit, the sequencer has to read its corresponding pitch value from a potentiometer and note on/off switch to determine if it should sound. If so, it would send that pitch voltage to the synth through an analogue demultiplexer switch. There’s a second level of indirection too — because I’d had to ditch the mechanical pitch matrix, I no longer had fixed “rows” to select the pitch voltage from, so I added a bank of eight pots, which acted as reference voltages for the synth. The demultiplexer would choose one of these based on the voltage from the pots in the sequencer. I had an awful lot of inputs and was running short on time to test things, so I built it straight up on stripboard with enough scope to rejig it if something went wrong.
One note is I find it very helpful to use AVR comparison grids to figure out which chip to use. This non-official one is a little out of date, but I find it quicker than the web interface on the Atmel site. Given the number of inputs required and whether they were digital or analogue immediately shows what is feasible and the most logical way to split up the circuit.
The big problem came from my chip-to-chip communication. Initially I thought I only needed to send a few simple signals between chips. On the first run I had lots of spurious hits and things were getting out of sync. I had made a bad assumption about how to represent what was being hit in the sequence; instead I needed to send more comprehensive data between chips to catch errors. To get it working in haste and to avoid resoldering, I used the existing connections and made the chips talk to each other with some hand-rolled, 2-wire clock and data code, and to my amazement it worked first time.
In my other audio pieces I have used headphones to sort of “step into” the sound of a piece after taking it in structurally. I find it puts a nice division in picking it apart two different ways. For Play House I was hoping to do the opposite and have the music played through speakers in an enclosed room, so the sound would draw you in to the structure. Realistically this was not possible given the venue — it was in a residential area, so cranking out acid house all day wasn’t really reasonable. The main consideration though is that the OVADA warehouse where it was shown would be shared with other artists, so we had to mitigate audio bleed between pieces. OCM and I toyed with a lot of ideas, but using headphones was the only thing that kept that split I wanted, and it ended up working quite nicely using children’s coat hangers to hang the headphones. One important note: I put a compressor between the output and amp as there was potential for large spikes in sound. I needed to ensure the audiences’ ears were protected.
The last week of the build was fantastic fun but a little too crazy. I pulled multiple all nighters – more so than I used to when hacking away as a kid – and boy does it mess up your biology. I discovered the trick is not to have sugar in the middle of the night — if you do, the sugar crash makes things weird. Even though I was taking time off my very technical job to do a very technical task, it felt like a holiday of sorts and looking back it’s surreal how everything flew together.
In the end, the project did run over, which was stressful but a good push to get it in for the show. The stress wasn’t so bad that it wasn’t fun and the push helped me realize where I had made bad estimates. In this case I knew the deadline was tight so I shouldn’t have been so ambitious with the R&D. However, I wanted to impress, so I stretched myself too far. An unexpected bonus from this project was how much I zoned into the playlists I was putting together for research; this opened up something new musically that has changed how I write music and given me a fresh view on some existing ideas. As a wrap up, I’m working on a playlist for OCM and some new tracks for an E.P.: http://soundcloud.com/alexallmont/mind-play-house