CoffeeScript and 3D
How Michael Forrest created Shoebox, his virtual hand-drawn, hand-coded live band.

Hi Michael! Can you tell us a little about you and your background?
I am a musician and programmer — I’ve been producing electronic music for over 20 years and working as a professional programmer (iOS, Full Stack Web, Rails, Phoenix, Meteor) for a lot of that time too.
I have always been fascinated with the creative potential of computers.
And what’s Shoebox all about?
It’s a music video made in code — about 7000 lines of CoffeeScript using Three.js and WebGL. I’ve had this idea of a ‘virtual band’ kicking about for years and this is the latest and most successful iteration. The original idea was to spice up live performances by projecting an extension of my physical presence to justify and give form to all the sounds the audience is hearing.
What are the biggest challenges?
The hardest thing was nailing down a deliverable! I have an online version ready to go but it’s not interactive enough to justify any hosting and cross-browser support concerns — I decided it would be better to render something out and put it up on YouTube for now. The whole thing has been very time-consuming — I wish I had another three of me to work on this.
I’ve also written a blog explaining it all in a bit more detail which I hope is interesting to your readers :)
What have you got planned for the future?
I’m releasing my new album and starting a couple of YouTube series. I’ll be talking about how to play electronic music live without a laptop and going over some live music streaming tips. I want to get an augmented reality version of Shoebox running on iOS in time for the iOS 11 release if I can. I’ve been porting elements of the code over to Swift when I get a chance but there are lots of different challenges to those I faced getting stuff working on WebGL.
How has tech impacted on what you do/how you do it and again, what future developments do you envisage?
I always prized originality in creativity and it seemed that being on the cutting edge of tech was a way to guarantee that I’m doing things nobody has ever seen or heard before. That said, I don’t like shallow cash-ins to exploit the latest buzzwords which is what you generally see people doing these days, so I tend to let the technology settle a bit before jumping on it these days. Tech for tech’s sake never leads to great things.
I was pretty amazed at how well WebGL performs on mobile (I didn’t expect this to run on my phone at all!) — and the Web Audio APIs are feeling pretty mature these days. Gone are the days where you had to rely on things like Flash to do interesting things.
I write a lot of iOS software but I’d started to lose enthusiasm over the last year or two. They’ve really brought me back around with the ARKit and CoreML additions to iOS 11 — these are both technologies around which I have a lot of ideas but I didn’t feel there were accessible or reliable SDKs available for either until now.
It feels like hardware is starting to become more democratised — you can get a handful of Arduinos for a few quid and make all sorts of interesting embedded systems without too much effort. I’d love to go out to Shenzhen and come back with a couple of my own custom musical instrument inventions. The iPad opened up a lot of musical possibilities a few years ago but I still prefer single purpose hardware devices with dedicated knobs and switches where possible, even if they’re all built around little computers these days.
Thank you so much Michael, we can’t wait to see what you come up with next :)
