How can you take a year and a half to make a 3-minute music video? Like this:
It’s even more amazing when you know how they made it. There are no green-screens here, and every frame is created by hand…
This has been out for a while, of course, but old people like me have just discovered it. (Old people like me might also be reminded of Peter Gabriel’s ‘Sledgehammer’ video, which was pretty amazing a quarter of a century ago…)
Here’s my latest Raspberry Pi-based experiment: the CloudSwitch.
I don’t discuss the software in the video, but the fun thing is that the Pi isn’t dependent on some intermediate server – it’s using the boto module for Python to manage the AWS resources directly.
I decided to build the app slightly differently from the way I would normally approach a little project like this. I knew that, even for this very simple system, I would have several inputs and outputs of various kinds, some of them with big delays, and I wanted to make sure that timing hiccups or race conditions didn’t ever leave the lights displaying something that didn’t represent reality.
So this is only a single python file, but it runs several threads – one that looks for button presses, one that monitors and controls the Amazon server, and one that handles the lights – including flashing them in various patterns. They interact with the main thread using ZeroMQ messages, which is a lovely way to do inter-thread communications without all that nasty messing about with semaphores and mutexes.
Update: Here’s the very simple circuit diagram. The illuminated buttons I used have LEDs which take a little more power than the Raspberry Pi can really drive, so I put a couple of NPN transistors in there. It really doesn’t matter too much what they are – I used the 2N3904.
I finally got a chance to play with my RaspberryPi, so I threw together a quick experiment.
Update: A few people have asked me for a little more information. I’m happy to make the source code available, but it’s not very tidy and a bit specific to my situation… however, to answer some of the questions:
The enclosure for the Raspberry Pi comes from SK Pang Electronics, and it’s perfect for my needs. You can buy just the perspex cover, but they do a nice Starter Kit which includes the breadboard, some LEDs, resistors and the pushswitch. Definitely recommended.
For the graphics, I used the PyGame library, which has the advantage of being cross-platform: you can use it with a variety of different graphics systems on a variety of different devices. On most Linux boxes, you’d normally run it under X Windows, but I discovered that it has various drivers that can use the console framebuffer device directly. This makes for a quicker startup and lighter-weight system, though I imagine it probably has less access to hardware acceleration, so it’s probably not the way to go if your graphics need high performance. You can read about how to get a PyGame display ‘surface’ (something you can draw on) from the framebuffer, in a handy post here.
To load an image from a file in PyGame is easy: you do something like this:
im_surf = pygame.image.load(f, "cam.jpg")
where ‘f’ is an open file, and the ‘cam.jpg’ is just an invented filename to give the library a hint about the type of file it’s loading.
Now, with a webcam, we need to get the image from a URL, not from a file. It’s easy to read the contents of a URL in Python. You just need something like:
but that will give you the bytes of the image as a string. If we want to convert it into a PyGame surface, we need to make it look more like a file. Fortunately, Python has a module called StringIO which does just that: allows you to treat strings as if they were files. So to load a JPEG from img_url and turn it into a PyGame surface which you can blit onto the screen, you can do something like:
f = StringIO.StringIO(urllib.urlopen(img_url).read())
im_surf = pygame.image.load(f, "cam.jpg")
I’ll leave the remaining bits as an exercise for the reader!
I’ve recently switched to using GnuCash to manage my accounts, and have been quite impressed with it. A friend recently asked about software for simple bookkeeping, and I wondered whether GnuCash might be appropriate, but I didn’t find an introduction that took someone unfamiliar with accounting software through the absolute basics. So here’s my attempt to do so.
OpenCV is a wonderfully full-featured computer vision library. I’ve just written a very simple demo of the built-in face recogniser. It finds a face and scales it to a fixed size. If you watch my eyes in the viewfinder window, you’ll see they stay pretty much in the same place however I move around the room.
All sorts of things could be done to improve the frame-rate if needed, but this was just a quick test I put together over a couple of hours while learning about the library. Back in ancient history, when I did my PhD, this kind of thing would have taken weeks…
The title of this post, if you’re not familiar with it, is from the famous closing scene of Sunset Boulevard, which you can see here.
Of course, as soon as I thought of using this title, I realised that I could also grant Gloria Swanson’s greatest wish. So here’s my version…
It needs some smoothing, but still quite fun.
A close shave [Original Link] Well, I don’t generally promote products here (other...
As if it weren’t cold enough already at the moment, some friends and family gathered last week at my brother’s place to make ice cream. Not being advocates of the Slow Food movement, though, we did it with liquid nitrogen…
Frozen Bubble [Original Link] I’ve just discovered the Mac version of this...
Fun jobs? I drove to Swindon the other day. It’s good for...
Fun and beauty Jim Bumgardner, better known as KrazyDad, does some wonderful stuff....
The real interest of the Superbowl is not, for me, the sport, but the creativity that goes into the phenomenally expensive commercial breaks. The most famous example is Apple’s 1984 ad that introduced the Macintosh, but there have been many others.
This year’s most talked-about ad was from Old Spice, and I think it’s brilliant.
These days one immediately assumes that it’s all green-screen and CGI, but in fact there is almost no ‘trickery’. Isaiah Mustafa maintains this running commentary while bits of scenery move around him, and it’s a trolley, on which he sits part-way through, that transports him and deposits him on the horse. And he maintains this focus even though they eventually used something like the 57th take…