Archive for December 2011

Mitocondrion Mark 4.1 Build: Main PCB

I’m working away on the next version of the Mitocondrion. In an effort not to do everything myself, the next version uses assorted bits and bobs from others but everything comes together and gets wired up by the one main board. This holds the Arduino, the big DC-DC converter that powers the LED strips, the little DC-DC converter that powers everything else, the status indicators, the motion sensor board, the battery monitoring, the extra memory, and the audio analyser. It also joins together the two battery packs, the LED strips, the power, programming, and reset connectors, and the microphone. It’s busy.

So, here’s the board being made, from design, through masking, etching, building and testing the step-down power converter, and then once that was checked and working, populating the rest.

Great big pic under cut

Andrea performing her new aerial apparatus this Saturday… come along!

From :

The Wellington Circus Trust is celebrating christmas and their move into a new venue, in true carnie style, by putting on a show!

This coming Saturday evening, will be doing the first ever performance on her new aerial dance apparatus. She’s been developing this work semi-secretly for the last 6 months and I personally think it’s rather awesome. There’ll also be a short show from the Wellington Youth Circus, followed by a cabaret of work by adult professionals and advanced students. There’s some lovely work going on and I think it’ll be a really great show. After the show, there’ll be a party of some sort …. it’ll be a fun night, and it’d be great to see you there!

Date: Sat 17 Dec
Time: 6pm start
Place: Te Whaea National Dance and Drama Centre Theatre, 11 Hutchison Road, Newtown, Wellington, NZ
Koha entry (I think)

Perlin noise, simplex noise, and interpolation

Most programming these days seems to consist of banging other people’s code together until it all behaves. This wasn’t much different.

I’ve been playing around with some algorithms for the Mitochondrion, Mark 4.1. For one mode, I want smoothly flowing and random patterns. There’s a kind of noise that suits called Perlin noise, invented by Ken Perlin and used to generate natural patterns like clouds in possibly every movie ever.

So, I found an implementation for Arduinos by some guy on a forum, tried it, horribly slow. Like a couple of hundred times too slow to give me a smoothly changing pattern on the hardware I’m using. There’s another kind of noise called simplex noise, also by Ken Perlin and faster. Found someone’s implementation in Java, ported it, tried it, faster, but still not fast enough. Scratched my head for a while, slept on it, had a shower and in the shower came up with the only original idea here, which is to just run the simplex noise for a few of the LEDs spaced out along the LED strip and just interpolate to fill in the gaps. Tried it, total speed up of around three hundred and now I’ve a hundred LEDs all doing what I want.

So cubic interpolation makes me happy, although to be honest, I wouldn’t have thought of doing it like this if I hadn’t asked Ranty Dave an entirely different answer a few months back and received the answer that “Catmull–Rom splines, mate, see you right”. And it’s not exactly a new idea to say “slow algorithm is slow, so only do slow algorithm occasionally and use fast algorithm to fill in the gaps”.

Anyway, here’s a vid of the Perlin, simplex, and interpolated modes. (On anything less than 720p it’s a little jerky, but that’s Youtube’s compression, not my code.)
http://www.youtube.com/watch?v=vtO0A0CRxo8

Question for people who actually know about this stuff: Perlin and simplex noise produce noise with a (roughly) normal distribution, i.e. across the interval from -1 to 1, but mostly clustered about zero. What if I want smooth noise with a flat distribution, i.e. with equal probability of occuring in the interval from 0 to 1? I ask as I’m changing the above code from RGB to HSV so that I can control the saturation (coz max saturation FTW) and I’d like to pick hues with an equal chance of getting any hue.

Is there an algorithm that does smooth noise with a flat probability? I haven’t found one, but I don’t know where to look. Right now I’m just expanding, scaling, and clipping the simplex noise, which isn’t really very flat at all.