Development

MIDI controller to Philips Hue

By Juan 1 March 2013

We believe that in the not so distant future, simple everyday household objects will become part of a network of connected devices. Each device will communicate and work together to help us all live our lives more efficiently.

The hardware needed is already available at reasonable prices and will only get cheaper. Also a bunch of Open Software and Open Hardware platforms (Arduino, Ninja Blocks, Raspberry Pi, Teagueduino, BeagleBone…) have opened up the world of hardware development, so people like us (developers and designers) can get stuck in and bring a completely different mindset to the development process – a mindset centred around users.

We still have loads to learn, but we’re getting there. Have a look at the video below of our latest prototype that we’ve put together:

What you see is a combination of these:

Philips Hue lights

We bought these from a recent trip to our newly opened NY studio. The Philips Hue is set of LED lights that you can control the colour of by using its official app (iPhone, Android).

It didn’t take long for the community to figure out how to control them, which as it turns out is very simple to do through HTTP requests. In a clever, yet surprising decision for a big company, Philips decided not to lock down the hub or sue 3rd party developers. More so, it seems that the engineers at Philips either run or are very active in the unofficial support forums.

Behringer BCD3000 MIDI controller

Oldie but goodie, we typically use it for our DJ sessions in the London studio, but we thought it would be cool to use it to control the lights as well.

To make things simpler, Behringer offers decent documentation on their website.

UniMIDI

This is a fully cross-platform Ruby library to handle MIDI devices. Was refreshing to get it to work in Ubuntu without almost any trouble (we reported a potential issue regarding high CPU usage).

It had no trouble getting data from the Behringer and also from other MIDI devices that we have knocking around the studio, like the Novation Launchpad.

The only thing we couldn’t figure out was how to send commands to the controller, for example, to turn on its LEDs. Too bad we ran out of time!

RubyHue

We used RubyHue to talk to the Hue, which was good enough for this prototype, but we later found a more polished fork. As of today, neither library handles groups of lights, which might be a very important feature in future (read caveats below).

Caveats

The Philips Hue is a system designed for the house to help achieve a nice and warm range of coloured lighting and good radio coverage (using ZigBee’s mesh effect).

The downside to this is it’s very difficult to get colour changes occurring rapidly even with transition set to 0, especially on a busy network (you talk to the hub via HTTP calls) or with a high number of lights (~10).

This could be overcome by using the groups API, but most libraries don’t cover it yet.

Philips has not released the official SDK, which means it would be very risky basing a commercial product around it.

//

Anyway.

Although this was a proof of concept, we’ve learned a lot from it and if you’re interested in the code, you can check it out on Github.

We’re not sure what we’re going to do with the Hue, since we have other numerous ideas for other internal projects that could use a set of programmable lights.

By the way, we’re going to be testing (and blogging about) hardware a lot during 2013. We’re super interested in all the new emerging platforms and the almost endless possibilities and opportunities they will offer. Anyone sharing similar interests or with similar stories, please get in touch (juan __ ustwo __ co __ uk) or leave a comment!

Thanks : )

PS: credits to Alvaro Arregui for the video edit and elkiano for the soundtrack!

2013: The Year of Mobile Video? Redesigning Instagram

1 Comments

  • Nathanaël

    Nice project ! If you want to test the groups api, I implemented it in my library: https://github.com/studioimaginaire/phue I tested the groups API myself and it's not very stable, there is a lot of lag when changing parameters of a group which is probably why Philip's own app isn't using this API yet.  

    2013-03-04 17:02:00

Leave a comment

Your email address will not be published. Required fields are marked