Friday 18th May was Light Night in Liverpool – a city-wide event of performances, exhibitions, installations, and workshops. As part of FACT’s current exhibition ‘States of Play: Roleplay Reality’ (co-curated by the superb Lucy Sollitt), the gallery transformed their interstitial spaces into exhibition space for small studios and artists.
Earlier in the year, I’d been approached by Gemma May Latham about the possibility of game/craft crossover exhibition, as part of her PhD research exploring the ways in which digital interactions (from CAD to gaming) cross over with more traditional crafts (from knitting to woodwork).
Keen to continue exploring single mechanics of gameplay as a focus in games, I put forward a QTE-centric game as a candidate; Hazuki was born. The game gives players simple on-screen prompts, which they must press quickly in order to increase their score. As with The Mashing, the mechanic is separated from narrative, yet remains oddly compelling. The twist with Hazuki Knit is that the pace of gameplay is entirely influenced by the speed at which the second player operates a knitting machine, leading to a varied mix of competitive and collaborative games, depending on the two players involved.
The roles of the two players flip common preconceptions of the two activities. Knitting becomes a relaxed, disengaged, repetitive motion (dragging the mechanical carriage from left to right) and gaming becomes an intricate, unpredictable experience, requiring accurate and fast moving finger finger coordination.
And let’s not forget that we were being productive all evening:
Once again, I’ve broken a promise I made to myself not make arcade machines anymore; for very good reason this time:
(photo credit: rachaelwatts)
I was approached by my friend Dan Hett a little while back about the possibility of putting a new commission of his into an arcade machine. Naturally, I couldn’t say no, and decided to try out a slightly modified design I’ve had in mind since assembling the last set of machines.
The game in question – The Loss Levels – is a very personal piece of work for Dan, reflecting on the loss of his brother Martyn in the Manchester Arena bombing of 2017. The commission came from Now Play This, and comprises 15 micro-games pertaining to Dan’s experiences in the wake of the tragedy. Each one is short and poignant, planting the player Dan’s shoes, who had to deal with loss in a very public way.
The work is some of the boldest I’ve encountered in the medium, communicating its message and overwhelming emotion in a simple and succinct way, juxtaposing colourful 8-bit graphics with a harsh reality that awakens the same sadness I felt this time almost a year ago. Game-skeptics I’ve spoken to about the work have expressed some confusion around why Dan decided to turn to games as means of exploring so serious. In an interview with Alan Wen, he clarified: “If a painter had a traumatic experience, you’d expect them to pick up their brush and try to express that through their work. With games, it’s really no different”. I’m glad that he did, and thank him for inviting me to help present the work.
You can play The Loss Levels now over on Dan’s itch page.
In January of this year, I was hit by a bus. Now, I can't actually verify that, but I'm going to assume that I must have been, or else I was clobbered around the head somehow and put into a coma, because everything that's happened since can only be attributed to accelerated brain activity, occurring while my unconscious body lies stationary in a hospital bed. To put it simply: life has been fabulous.
I quit my job
I've been giving a talk at various events over the last few months, which is various titled either "Oh shit, I actually built an arcade", or "Make cool shit, don't die". It's about my life, and refers to a moment last year when I realised I had to make a change. I didn't hate my job, in fact, for the most of the time I was there, I actually really enjoyed it. I do know that it wasn't the environment I'd thought I'd been destined for though, and for all of the fun stuff I did, there was a part of me that longed to be creating work that expressed who I was, or at least tickled my creative side as much as possible.
Around about the time I was at Digital Media Labs last year – or rather, exactly at that time – I knew that I wanted to commit myself to a creative career. It just so happened that a former employer of mine was offering a 'creative practice accelerator' programme, the likes of which had never really been run before. It offered the time, space, and financial support to make significant shifts in one's creative practice, which, in my case, meant pivoting to a full-time artistic career. This was the only way I was going to commit to 'making the leap', so I went for it, throwing myself into the unknown.
It actually worked
It's 9 months later, and it actually came together rather well. In that time, I've revived Physical Echoes for the National Media Museum, built the weirdest interactive instrument for Sound City festival – alongside Dave Lynch and Ross Dalziel – which I'll have to wait for a video of from Dave to explain, developed the Awkward Arcade – which was deemed worthy to appear at the Whitworth and DiGRA – and even installed some work at the National Football Museum. Importantly, I'm still waking up with a huge smile on my face.
What next?
I think I'm allowed to announce that I'm joining the team at The Landing, where I'll be getting a new maker space off the ground, helping businesses and local residents alike to harness desktop fabrication technologies, and ultimately making cool shit without dying! I'm also seeking further funding to evolve the Awkward Arcade, making it more robust and tour-able, primed for some specially curated shows in 2017. Finally, I'm assisting my good friend Gemma Latham to develop some cool creative and teaching resources for PatternCraft, starting with a composition for 120 punchcards, which I demoed at The Lowry just the other week! Posts on all three of these things to follow.
I've always been wary of writing roundups at the end of each year; looking back has a tendency to incite either complacency or disappointment. That being said, I've crammed enough into this year that it could - paradoxically - feel like a missed opportunity not to sum up the highlights of my year.
Stuff I got up to
This is a bit of an indulgent section, mainly to shout out to some of the great people that I've had the pleasure of working/talking with this year. Skip to my music/film highlights
Way back in April, Ross Dalziel's name popped up in my inbox, with an email mulling on the intriguing concept of a "farmer's market for music hacks". The event that eventually took place in May - Bring & Byte - may not have resembled the picture that had formed in my mind following Ross' initial proposal, but it certainly was an enlightening summit. I had the great pleasure of meeting Kate Stone, Brett Lempereur, Yann Seznec, Lucy Barker, Stuart Silver et al. to discuss future strategies for a viable music industry, with the aid of technology.
Having joined the wearable revolution around this time last year, I teamed up with my fellow wearable-wearing (ugh) colleagues, Lucy Buykx and Amy Higgott, to discuss our experiences at NUX Leeds & Manchester. Great discussions were had, and I had the pleasure of talking to Rick Threlfall, Kimberley Bottomley, and Barry Briggs at greater length. Aren't UX people lovely?
By far the most enjoyable event I attended this year was Digital Media Labs (if Dave's reading this, your CSS on that site has gone missing). I gave a fairly detailed roundup of how it went for me in my previous blog post, as well as in my artist diary on the DM Labs site. Suffice to say, the event's influence has been lasting, and I've decided 2016 will be the year when I take the plunge to start developing my own work full-time; more on that soon.
Music and film highlights
Music and TV dominated for me this year, games forgot the systems I own (getting a PS4 next year will probably resolve that), and, as ever, I read old books and programming documentation for most of the year.
Music
My favourite tracks from 2015 albums (predominantly singles, in playlist order)
Hurtin Class - King Khan (feat. Ian Svenonius)
Don't Wanna Fight - Alabama Shakes
Alright - Kendrick Lamar
On Fire Tonight - Blackalicious
Cockeyed Rabbit Wrapped in Plastic - SLUG
The Night Josh Tillman Came To Our Apt. - Father John Misty
Pretty Pimpin' - Kurt Vile
20/20 - Gaz Coombes
Beautiful Blue Sky - Ought
Breaker - Deerhunter
Fractals - Keep Shelly In Athens
Don't Breath Out - Roots Manuva
Come Home Baby - The Charlatans
(KEXP & 6Music have a lot to answer for)
Honourable mentions/late entries
Stranger In A Room - Jamie xx
Wide Open - Chemical Brothers (feat. Beck)
Cause I'm a Man - Tame Impala
Depreston - Courtney Barnett
Bulldozer - Dracula Legs
Lies - Low
Doing The Right Thing - Daughter
Biggest musical letdowns:
Horizons - Painted Palms - a complete re-hash of the previous album. Yawn.
Best gigs
Vessels @ Belgrave Music Hall, Leeds - March 18th
American Football @ Brudenell Social Club, Leeds - May 15th
The Replacements @ Paradiso, Amsterdam - May 30th
Wreckless Eric @ Cellars, Scarborough - December 12th
Film and television
My favourite films of 2015
Inside Out - I literally cried in the cinema...in front of children.
Ex Machina - It's got gender issues, but was fundamentally good sci-fi.
Star Wars - Undoubtedly a remake of ANH, but so entertaining that I couldn't stop smiling. Daisy Ridley is awesome.
My favourite TV series of 2015
Humans - Series 1
Top Coppers - Series 1
Cradle to Grave - Series 1
Mad Men - Series 7 (pt. 2)
Daredevil - Series 1
Jessica Jones - Series 1
Better Call Saul - Series 1
Silicon Valley - Series 2
Biggest television letdowns
Justified - Just STOP already.
True Detective - Looked and sounded great, just lacked the focus of series 1.
Books & Video Games
I read and played plenty of books and games this year, none of them were released in 2015...I guess Grim Fandango remastered semi-counts. Loads to look forward to next year.
Last week I was up in Barrow-in-Furness, having been invited to take part in Digital Media Labs 2015. It was a fantastic and fulfilling week of creativity and fun, punctured with thought-provoking conversation, plenty of laughs, and – more worryingly – Cliff Richard.
Alongside the process of development that the residency would facilitate, we were asked to prepare a presentation/workshop/skill-sharing activity that would act as our introduction to the other attendees. I'd originally come up with a half-baked idea about Electric Paint-powered modular name badges, which would have been impractical, slow, and messy. This thought dawned on me – conveniently – as I was falling asleep just a week before the Lab, and I realised that I'd have to do something different.
In my sleepy state, I thought that a game would be an excellent idea: one with simple, tried-and-tested mechanics, and an non-intimidating interface that everyone could grasp within a few seconds; The Mashing is a realisation of that tired thought.
The game is very straightforward: two teams of up to five players each have a designated button to press. On-screen are two coloured bars that increase in height with every press. Once a team's bar reaches the top of the screen, they win the game. I made a couple of controllers specifically for playing the game, built to take a good mashing.
I love button-mashing as a game mechanic. It single-handedly held up games like Track & Field, and Daley Thompson's Decathlon, makes for an inclusive – and alcohol-friendly – gaming experience in WarioWare, and is utilised in the Metal Gear series (a personal favourite) to create brilliant high-adrenaline tension; it even gets you out of 'I don't know any moves' situations in Street Fighter and Tekken. Lately though, it's become a symptom of underdeveloped gameplay in big budget console titles. GameSpot's Peter Brown said that, when playing the recent Mad Max video game tie-in, he was able to win fight sequences by not even looking at the screen and just hitting one or two buttons, belying complexity of the animations that are performed by the player character (Assassin's Creed has been hugely guilty of this too, in my opinion).
So The Mashing is – as I tweeted shortly before I completed the game – both a love letter to and a critique of button-mashing. It was also bloody good fun to play, and to behold. If you've got some spare buttons and an Arduino knocking about, download it and give it a try. It's also my admission that games are an important part of my life, and might possibly be part of my future work. Stay tuned.
Download it here (currently Mac only, sorry!)
The top photo was taken by either Benedict Phillips or Glenn Boulter. Make yourselves known!
I’m thinking about creating a kinetic version of Augio at the moment – bringing it closer to projects like the Mask Mirror and Physical Echoes – but for the time being I’ve put together some opaque boxes, which I hope to make modular and easy to connect and chain up. It’s notoriously difficult to film and photograph, but I’ll try and do a demo soon. Below is the stereo setup that I have on my desk:
Radio Then
Still tentatively titled, this is a decentralised, pervasive, and open story telling experience I’m creating for Pararchive. Read more about what I’ve been up to on the project site.
Just for me…
…I got a new phone recently, and had to finally ditch the iPhone 4 case I’ve had for the past few years (complete with Velcro on the back for attaching to my guitar). Not content to do a like-for-like swap with a case fitting the iPhone 5 form factor, I came across CaseApp and decided to design a case using a Processing sketch I’d been working on. I can certainly recommend their service!
Using 16 Adafruit Neopixels and more wire than I’ve ever had to measure and cut in my life, Augio is designed to produce colourful responses to the sound emanating from 8 speakers. Low, mid, and high frequency bands affect the brightness of the Neopixel’s red, green, and blue LEDs respectively. As well as providing an additional visual element to the sound performances, Manoli hopes that, given a little more development, this might also help hearing impaired audience members with the location and perception of sound.
I got some positive responses to the prototype I presented at the first Metanast* event, which was held at Underland on Wednesday the 9th of April, and learned a few lessons to take forward to the next revision of Augio. The Neopixels draw quite a lot of current, and they’re separated over a fairly long distance (5m between each speaker) so I have to reduce the maximum brightness a little to prevent crashes when there isn’t enough power to go around. I may eventually split the installation in half and power it from two supplies, and will also be working on some boxes to contain LEDs, in which I’ll put some reflective material or mirrors to spread the light around a little.
I wasn’t able to get any decent footage on the night – the overall darkness of the space confused my phone’s camera – but I got a brief bit of video while I was still in the process of soldering everything up:
It may not have been the best idea to test the system with drum loops and dance music, as the spectral variety and occasional intensity of electroacoustic music meant the LEDs were pushed a little harder on the night! Despite this, it was a good field test and I look forward to developing the project further. Stay tuned for updates.
*My heartfelt thanks to Manoli for letting me give this a trial run at his event, and for splitting the costs of Augio down the middle with me. The event was a great success, and I plan to write a review of it at some point in the next week!
Contrary to my lack of posts since October (!) I’m still alive and making things. Full-time employment finally came along for me, so I’ve not taken the time to sit and write about my work in a while.
Canvas Circuits
Working for Manchester Digital Laboratory, I’ve had the opportunity to teach people of all ages the wonders of Arduino, electronics, and general maker culture. Something I'm particularly happy with is a workshop I put together using Bare Conductive’s ‘Electric Paint’ and Adafruit’s tiny, Arduino-compatible ‘Trinket’ boards. Running the workshop for young people, I decided that breadboards were going to be off the table for a change, and wanted to do something a little more unusual:
I knocked up a neat little stencil – cut locally at Laserlea – picked up some 14cm2 canvases, and had participants paint on the circuit – conductive when it dries – and pierce through all of the components. It’s a little fiddly, and needs some refinement, but all in all it worked pretty well! The completed circuits in this instance were a little traffic light sequence – using a very simple program on the Trinket – although I want to make some varied, interactive circuits for future iterations.
Subversive Little Boxes
My previous blog post discussed the development of a new project: spoilerAlert. In the spirit of ‘subverting and augmenting my established digital experiences’ (how I’m now describing the Subversive Little Boxes project en masse), this little peripheral links up with a Chrome extension I put together to warn me when I may encounter spoilers when browsing the web. I’ve just packaged it up a little more neatly in a laser-cut enclosure, and added some smoother RGB-LED-powered flashes and slightly less shrill beeps. I’ll post a video demo soon after I’ve cleaned up and sanded the box a little:
Part Time Heliocentric Cosmo Drama After School Club
I’m still a musician! People who know me have commented recently that a lot of what I do doesn’t seem eminently musical anymore, which is true, although I’m still actively composing and performing quite a lot. One such example is the sporadic Sun Ra tribute act I’m part of. We’ve got a couple of gigs coming up, including the BBC 6 Music Festival on March 1st, and Threshold Festival in Liverpool on March 29th. If you like space jazz, come along and see us:
New Site
My website looks a little dated, and so it should, as it hasn’t changed significantly since 2010. As such, I’m putting together something fresher, cleaner, and to the point. I’m making use of Bootstrap, as my front-end development isn’t spectacular, and this has sped up the process significantly, so expect to see the results in the next fortnight:
After a considerable gap in development, I have decided to return to my Subversive Little Boxes project, and have started working on the second instalment in the series…
Introducing Subversive Little Box #2: spoilerAlert
“Nowhere is safe! Avert your eyes! Stay off web!” – a typical set of phrases you might hear in our house when we’re not up to date with our favourite television or film series. These are usually followed by various whoops and cries as I whip my head away from the webpage, having caught a glimpse of a familiar set of titles, names, or indeed any material linked with the show I’m trying to avoid reading anything about.
Wouldn’t it be nice if someone could look ahead down the page, and warn you that you might encounter such material? Even while developing this project, I was surprised to see content linked to one of my favourite shows in a place I’d never expect to find it (pictured below). Luckily for me, I had been warned in advance.
Enter spoilerAlert, a hardware-based early warning system for spoilers on the web. Utilising Chrome’s serial API, I have created a quick browser extension*, which will read the contents of a webpage as it is loaded, and provide visual and audible feedback should the content feature any ‘blacklisted’ words, names, or phrases (pictured below).
True to the properties of the first Subversive Little Box – Spotify Economy – a certain degree of human engagement is required. Just as the muting of adverts in Spotify Economy was not automatic, no material is automatically eliminated or hidden by spoilerAlert. It acts more like a smoke alarm than a sprinkler: you hear the beeps and tread with caution, not trusting judgement entirely to a fallible machine.
The warnings are threefold: an icon in the browser’s address bar, an audible alarm, and a pair of flashing LEDs. As with the previous instalment in the series, at this stage the box itself is still a repurposed empty tea box (see top image), although I plan to laser cut something similar to the first box as soon as I’ve refined a few things. Stay tuned for more.
*Unfortunately, standard Chrome extensions cannot make use of Chrome’s serial API, therefore I’ve created a packaged app, which runs in the background, and listens for alerts from the main extension:
'Return of the Mutant Kettle!' - developing my Geo Kettle
The main benefit of the idea was that I could switch on the kettle without dropping whatever I was doing, and save a bit of time when going to make a cup of tea. The idea wasn’t complete however, as I’ve often felt it would be useful to save this time when I get home and make myself a brew (pretty much the first thing I do when I walk through the front door…whatever the weather). Even back in February, I envisioned a more responsive, data-informed version of the remote activation, and that’s what I’ve just put together over the past couple of days.
I’ve started including a suite of extra features that should make the remote activation respond to both my needs, and the needs of the kettle. For a reason I won’t disclose in this post, I’ve even put together some informal diagrams to set out the functionality I’m trying to achieve:
Application Flowchart/State Machine Diagram
I’m not that well versed in formal UML, but the flowchart below partially adheres to the conventions of a state machine diagram, describing the various stages and states* encountered when using the remotely operated kettle application:
The crux: the user can open the web app on their mobile, and tell the kettle where they are – determined automatically using the phone’s GPS location – and concentrate on getting home. The back-end of the system will work out when it needs to switch the kettle on – based on the user’s location, and data from the kettle – so that it will be coming to the boil as they walk through the front door.
Hardware Overview
In lieu of a formal UML deployment diagram, I’ve made a diagram outlining roughly ‘what does what’ in the overall remote activation process. The images are ‘for illustrative purposes only’, as there are numerous alternatives to what equipment I’m using (in fact, I’m not even using an Uno), hence I’ve labelled them fairly generically:
A little more detail about the technology: the user front-end is just a basic webpage, using the HTML5 geolocation API to locate the user, and the Google Maps API to offer some visual feedback. When the user confirms that they’re heading home, their coordinates are forwarded to a Flask application – running on a Raspberry Pi, served using Apache – and the user’s interaction with the system effectively ends. The Flask script relays the coordinates to the Directions API to determine the journey time, and gets information about the kettle’s water level and temperature from the microcontroller – in this case the AlaMode Arduino shield that I’ve posted about before – thus determining how long the kettle will take to boil. This data allows the application to make an informed decision about when to tell the Arduino to switch the kettle on.
I tested the system out earlier today after walking out to pick up some groceries. Despite having already tested it with a few dry runs – no pun intended – I was still in awe of the fact that it was coming to the boil the moment I entered the kitchen**. There are still a few elements missing – detailed below – and I’m sure there are plenty of improvements I will make, but the prototype is certainly working exactly as I’d expect it to!
Current Status
Right now I’m basing the activation time solely on the phone’s GPS location and static water data, meaning I’m not actually taking any data from the kettle yet. I’ve measured an average boil time at the kettle’s minimum water level – which happens to be just enough for about two cups – so I’ve only been testing it with around 500ml of water in for the time being. I had thought about using a voltage divider and measuring the water level via an analogue pin on the Arduino, but it’s a little impractical having additional wires running into the kettle. I’ll probably end up using a load cell to determine the amount of water externally, and I’ll also try to position a temperature sensor such that it can give as accurate a reading of the water temperature as possible.
As I expected, the geolocation API isn’t without its caveats, and I occasionally have to update my location a few times before it’s accurate. Obviously, a full-blown native iOS application would allow me to continuously track the user, but the web app is working well enough at this stage. Happily, it grabbed an accurate location instantly on my test run earlier, which contributed to my satisfaction with its first perfect field test. I could also do with adding more style to the web app anyway, and I’m still yet to implement the option to cancel the current boil request.
Finally, as a hangover from my previous artistic sentiment, I’m still using a little micro servo to flick the switch. While a little impractical, this does allow standard use of the kettle when I’m not activating it remotely. I’ll be considering if there’s a more sensible but non-invasive way to change this part of the mechanism.
I’ll see what I can do about capturing some video footage, although it might have to be heavily edited so I’m not revealing, to the Internet, where I live! Code will appear when it's finished!
*There’s actually a step missing at the beginning to let the user cancel the ‘in progress’ state.
**Remember Doc Brown at the end of Back To The Future when he dances down the street after transporting Marty through time? I was almost that hysterical.
Last month was a fairly busy one for me. I’ve started working on a new batch of projects – some adapted from earlier prototypes – and I’ve been spreading word of my work the world over…sort of.
MadLab, in conjunction with the Whitworth, Manchester Museum, John Rylands, Jodrell Bank, and The Martin Harris Centre, ran a weekend dedicated to hacking audio resources with digital tools. Among the workshops taking place that weekend, I ran a whistle-stop introduction to audio processing with Max, unofficially titled ‘audio processing unplugged’. My workshop focused on using a semi-plugged-in jack cable – that is, with one end plugged into the soundcard – to create music using just a handful of familiar audio processors and a bit of basic patching*.
I met some great people over that weekend, and picked up a few new ideas while I was at it, all whilst consuming some great food and beer. While I didn’t manage to get the ideas into practice using any of the audio material provided, I’ll definitely be making use of them in future projects. The opportunity to sit and discuss ideas really helped me nail down a few things I’d never given enough time before, such as deploying Pd patches to iOS.
Thanks to Dave and Hwa Young for inviting me, and thanks to Dan Hett, Ross Dalziel, and Mark Pilkington for giving everyone an insight into some of their work.
*For the audio nerds, I was using the noisy ‘clicks’ of the jack cable as a noise burst for the Karplus-Strong string synthesis algorithm, using amplitude peaks (and even some webcam input) to trigger random or pre-programmed pitches; Mary Had A Little Lamb performed on a jack cable seemed to go down well!
24-29th June – Ionian University’s Audiovisual Arts Festival, 2013
http://avarts.ionio.gr/festival/2013/
Following the success of my Physical Echoes installation at MediaCityUK earlier this year, I was approached by Professor Stephen Davismoon to travel with the University of Salford’s group of delegates to the Ionian University in Corfu, Greece. The group I was travelling were primarily composers and performers, although I’m told Steve wanted to diversify the contribution with some varied art pieces**.
My contribution would be a lecture on the development of my work, and the concepts and strategies I developed during my MA, as well as a presentation of the piece alongside a 10-minute saxophone performance by Nathaniel Mason (as we had done in Salford). Unfortunately, I discovered that some of my sensors and motors were giving me problems during my setup and, despite a few hours troubleshooting and improvising, the hardware just wasn’t coming through for me***.
Despite this unfortunate turn of events, I was grateful to have an interested and attentive audience at my lecture the following morning. It sounded as though some of the principles I’d gathered during the research and development of the piece were taken onboard and appreciated by students of other disciplines, so I feel vindicated that my presence at the festival was worthwhile, even without the actual installation being shown!
Thanks to Nikos for hosting me at his wonderful venue, and for helping me keep a cool head while I frantically tried to fix things, and thanks to Andreas for being so unbelievably laid back about everything while we were there.
**I was particularly fond of Manoli Moriaty’s Symbiosis collaboration with Joseph William Beech.
*** At one point, following a necessary shutdown, my laptop wouldn’t boot for 15 minutes! I was livid!
Various projects in the works
I’ve begun working on a handful of new projects – too many to describe all of them in detail – which are helping me continue developing a number of different skills. I’ve started to get some location-influenced audio-generators – built in Pd – working with MobMuPlat****, something made possible after its developer, Daniel Iglesia, kindly acknowledged my request for access to GPS data from devices. Awesome stuff.
Additionally, I’ve recently decided to revisit my ‘remotely boilable kettle’ idea. I’ve just coded up a prototype web application that tells the kettle – or rather the Raspberry Pi – where my phone is, so it can judge how long it’s going to take for me to get home*****. This, coupled with knowledge of the average boil-time with the current water level and temperature, should mean that my kettle could be coming to the boil as I walk through the front door. It’s crazy and convoluted, but if it can be done, then I’m going to do it!
****I’ll never have to do battle with RjDj again. Hurrah!
*****Using HTML5 geolocation, Flask, and the Google directions API.
I’ve also got a couple of potential collaborations that I will be revisiting as soon as I can put my mind to them properly (in case those involved are reading!)
Practical Interlude: improving the modern classic gaming experience
I've decided that alongside my creative projects - which seem to be in a constant state of unbloggable flux lately - I'll post a few of my more practical, technical tinkering projects on here; trying to keep them as interesting as possible. First up, using classic controllers on modern consoles with the help of Arduino:
Alongside my recent foray into the world of unusual game controllers (more of which to come in the next few weeks) I’ve also ended up attempting to bridge the sizeable collection of classic gaming hardware in my house with some of the newer gear currently holding fort underneath the TV.
A bit of context
The aforementioned collection of gaming goodies in my house includes every generation of Sega, Nintendo, and Sony console – amongst some other oddities, rarities, and a fairly comprehensive bunch of game libraries – which, despite getting pretty regular playtime, are no longer permanently hooked up to the TV. The reasons for this are primarily practical: juggling various connectors and plugs with limited TV inputs and power outlets can be a royal pain. Even when consoles, controllers, and connectors are organised on shelves/in boxes, the practical hassle of rooting around behind the TV can halt classic gaming on a whim*.
Luckily, modern consoles provide a lazy/convenient alternative for the 21st century gamer. Nintendo’s Virtual Console offers a wide range of Wii-compatible classic games (including Sega, Neo Geo, and Commodore 64 titles), and all versions of the PS3 still run PSX games – via disc or download – which also boasts a nifty Mega Drive compilation disc.
So, the classic games are available for current gen hardware, which helps to make the retro experience a little tidier and more convenient. There’s just one primary element missing: authentic controllers. Nintendo’s own Classic Controller might be versatile, but it’s generic, and full of obstructive, superfluous controls if, say, you’re only playing a NES game. Likewise, when it comes to playing PSX titles, I wish I could pull off the Dual Shock 3’s analog sticks for some purely digital action.
As well as being a crucial element of the classic gaming experience, the controllers are also the easiest items in our hardware collection to quickly identify, grab, and plug in. It was for these reasons that I decided to bridge the gap between old and new.
Interfacing with modern consoles
The two consoles permanently hooked up to our TV are a PS3 and Wii, so I set out looking for a way to hook up old school controllers to these systems. I was aware of a number of basic, undocumented converters knocking about – found with the most obvious of Google searches – but my first thought was to make use of an Arduino - as you may have guessed from the top image - with the hope to create custom button configurations for things like ‘Home’ buttons found on modern controllers.
Fortunately, I discovered that two great libraries exist for impersonating PS3 controllers and Wiimote extensions (peripherals plugged into the Wiimote) using an Arduino: Unojoy and Peter Brinkmann's arduino-wiimote. These libraries are fairly straightforward to use, and are pretty well documented. Any minor problems I encountered are listed at the end of this post.
The photo below shows a Wii extension connector - cut from a knock-off 'nunchuk' attachment - soldered up to an Arduino protoshield. This allows me to send messages from the Arduino to a Wiimote (using I2C). These messages can be triggered using any console controller as an input. Unojoy connects directly to the PS3 via USB.
Plugging controllers into the Arduino
With Arduino to PS3/Wii communication taken care of, I just had to work out how to get classic controllers talking to the Arduino. Pinouts.ru turned out to be a great resource to take out some of the guesswork when it came to what each controller’s connector pins expect/output. As usual, the Arduino Playground was the best single source information, coupled with libraries for most controllers. Such a library wasn’t even necessary for the delightfully simple Mega Drive controller, as you'll see in my example code.
Armed with knowledge of each controller’s connector, I started looking for cheap sources of console-end ports. It struck me that salvaging parts from a console or looking for spare parts might be more effort than it was worth, so I’ve been picking up controller extension cables instead; harvesting the required ends for the controllers to plug into. Just as with the nunchuk connector above, I’ve been stripping the wires and soldering them up to cheap protoshields for a tidy, modular method of connecting controllers to the Arduino.
The photo below shows a female PSX connector ready for use with the Arduino, and a Mega Drive-compatible 9 pin D-SUB connector:
Some code
Right now, I’m still tweaking and tidying the code for all of our various controllers, so below are just two examples for using the Mega Drive pad on a PS3, and for using a NES pad on a Wii. Note that you’ll need to download Unojoy, the NESpad library, and arduino-wiimote:
Small issues with libraries
I found only a couple of small issues with the libraries I used for these projects, most of which can be solved with the same lines of code. Firstly, wherever you see “#include <WProgram.h>” (in the .h or .cpp files), replace it with the following code to make it compatible with the newest versions of the Arduino IDE:
Secondly, I noticed that the most recent version of Unojoy scuppers OS X users by including a Windows .bat file (mislabelled as .command) for reflashing the Arduino. Fortunately, you can get the compatible version from an older release.
Finally, I had tried using the SNES library (offered by the author of the NES library) only to find it incompatible with PAL pads, or so I gather. I’ll be tracking down a US pad to double check this.
Stay tuned for more updates on my more creative projects. I hope this was of interest to some.
A laser-cut, wooden enclosure for Subversive Little Box #1: 'Spotify Economy'. Thanks to Jerry & Jason @ Pure Fine (the men with the cutter). More details.
Having sat on a box of Digisparks – some very small Arduino variants – for the past few weeks, I finally decided to give them a quick test for this week’s ‘Monday Night Hack’:
I received the Digisparks a little while ago, after backing their Kickstarter campaign. I was drawn to the low cost and small form factor of the device, figuring they’d be useful for leaving in small projects that only required a few inputs/outputs.
Wanting to put their smallness to the test, I decided to cram one into an empty Nespresso tube and have some fun playing games. Having successfully made Super Mario Bros. harder to play around this time last year, using a Kinect, I thought I’d give Pac-Man a go.
The long and thin Nespresso tube put me in mind of a Wii remote, so I decided to the make this a ‘motion’ controller. With only a simple tilt sensor to hand, my options were limited, but this only added to the fiendishness of the end result.
What I have created is an orientation-sensitive, two-button controller, which means that the same buttons perform multiple actions, depending on how the controller is held. Holding the controller horizontally allows you move left and right, holding it vertically allows you move up and down. The sensor I’ve used knows when it’s upright or tilted but not which way it’s tilted, meaning it’s hardly intuitive, but it certainly puts your reactions to the test.
I doubt I’ll be pursuing this particular controller much further, but I’m keen to continue making games harder than they need to be. If I amass enough of these projects, I may even open my own Awkward Arcade (I better get that trademarked now).
I haven’t included a schematic/illustration for this project, but I’ve wired up the tilt sensor to the Digispark’s pin #0, the left/up button to pin #1, and the right/down button to pin #2. The program uses the Digispark’s ‘DigiKeyboard’ library and is a little dirty, but works. Rather than simulating the press and release of keys, the library sends individual key strokes repeatedly, which works well enough for Pac-Man:
Suggestions for future Awkward Arcade projects welcome.
The ‘Mood Lamp/Email Indicator’ – snappier name suggestions welcome – combines two things I’ve been interested in creating for a while: a homemade, adjustable-hue lamp, and a dedicated notification indicator. Underneath the opaque lampshade – which I’m currently borrowing from my bedside – are four LEDs: red, green, blue, and white. These LEDs randomly vary in intensity, smoothly changing the overall colour.
Every 10 minutes, the control program checks for new emails in my personal inbox, and changes the lamp to a magenta colour when unread emails are found. As well as indicating the presence of emails by colour, the lamp pulses to indicate the number of emails present. I’m currently working on augmenting the code a little so that multiple email accounts can be represented by different colours, and may even include an option to assign different colours to specific senders.
While this project may seem slightly at odds with the ‘moving parts’ fascination described in my previous post, the notion of a physical object in my home that can literally blend in with my furniture and simultaneously notify me of events going on in the digital world is something that I’m keen to explore. I’ve also got a more kinetic follow-up project planned, so things will be moving again soon enough!
The AlaMode has been performing pretty well, and it certainly improves upon just using the GPIO pins alone. As with my previous Arduino/Pi combination, I’ve been using Standard Firmata on the Arduino and pyFirmata to communicate between it and Python.
The code is still a bit messy, mainly because I was experimenting with a few different things before merging it all into one program. To create the lamp yourself, you don’t need an AlaMode or a Raspberry Pi, although the connection method certainly makes it a neat and integrated solution, especially if you have a protoshield to sit on the top. You’ll need to adjust the code to include your email address and relevant IMAP settings, as well as the correct serial port for your Arduino. I’ve made the program access the email password from a text file – ‘pw_file.txt’ – in Raspbian’s home directory, just in case you inadvertently give the code out with your password inside:
With Standard Firmata uploaded to the Arduino, and the relevant adjustments made to the code, setup the LEDs as shown below and run ‘python mood_lamp_email_indicator’ from the command line. I run my Pi headless and use GNU Screen to start the program so that I can logout and leave it running independently.
This is the first thing that I’ve made since coming out of hospital recently. It’s not overly ambitious but it’s fun, and has raised (or re-raised) some interesting questions for me:
Last night I quickly knocked together something that I’ve been thinking of creating for a while: a remotely boilable kettle, that is, a kettle I boil from anywhere I that can access the Internet. The hack was super simple, but it worked exactly as I planned, and I was able to turn the kettle on from all of the rooms in my house in under an hour; 10 minutes more work and I’ll be able to access it globally.
Americans: I understand that electrical kettles aren’t the norm in the US – something to do with your 110v power, perhaps – but that’s how most of make our tea here, so that’s what I’m using.
My pleasure at remote boiling aside, what really got me thinking was something I that typed into the YouTube description box after I posted a quick 30-second clip of the hack, which I’ll get to shortly. When I first voiced my idea to friends – at the pub, where all of the best ideas are born – the first suggestion given for realising the task was to use a power relay. While this will probably be a pretty obvious solution to most engineering types – it even crossed my mind, briefly – the picture in my mind was different, and that picture was of the kettle’s existing ‘on/off’ switch still being pressed, even when I’m 100 miles away from it.
I didn’t want to control the kettle directly, I wanted a middleman, and that’s exactly what I made.
Using some electrical tape, I attached a micro servo to the top of the kettle and positioned the attached lever so that it would press the button when rotated (see video below). I plugged the servo into my trusty Arduino Duemilanove – still going strong after nearly 4 years – and wrote a quick Python script incorporating pyFirmata to tell the board what to do, and used Flask to create a remotely accessible web interface. The operation couldn’t be simpler: press the button on webpage and the motor presses physical button on the kettle.
At this point, the electrical engineers are probably a little nonplussed – as well as being aggravated by my use of a servo without a protective diode – and wondering why I didn’t just go with the power relay option. In my YouTube description I say “because servos are more fun”, but I think it goes a little deeper than that. The majority of my recent artworks and creations have included some kind of physical actuation or moving part to do what they do, and when things move – and I’m talking about physical movement, not just the changing of pixels on a screen – my brain gets excited.
Maybe it’s my inner artist – or roboticist – but the technically unnecessary inclusion of a moving part made the process so much more interesting and visually entertaining, and enhanced the satisfaction of the task being performed. I touched on this subject in my accompanying paper for my recent Masters project, and argued – in a few thousand words – that this was the ‘human’ element of the machine’s operation. In the case of my remotely boiling kettle, the machine performs the human version of the task, not the machine version. Efficient or not, it appeals to our fascination with all things robotic and mechanical, presenting an analogue process that we can decode visually*.
*In part, I think this methodology adheres to Rafael Lozano-Hemmer’s proposed concept of ‘Adapting the Digital to Reinterpret the Analog’, something that I’ve been keeping in mind when making anything recently.
Note: while this post might seem a little like me giving myself a great review, what I really want to get across is how blown away I was by the response I got at the Creative Technology Showcase opening last Thursday evening. Thanks to everyone who came along and made the event a success, and...