Tag Archives: ARM

Fluxus on the Raspberry Pi

After getting acquainted with the BeagleBoard while working on the Swamp bike opera I decided to have a look at the similar Raspberry Pi, and particularly it’s graphics systems. The Android/PS2 version of fluxus, called nomadic is ported after a bit of fiddling, but no mouse or keyboard input yet (build it with ‘scons TARGET=RPI’). The graphics driver for the Pi’s VideoCore GPU doesn’t work quite like you normally expect with X11, you get access to it via a custom display manager called dispmanx which allows crazy things like alpha compositing on top of the X display like this:


Everything you need to develop for the Pi’s GPU can be found inside /opt/vc/ (before finding that I installed a bunch of generic OpenGL ES stuff that wouldn’t work). You need to use the headers and link to the driver libraries there. There are some useful examples inside the hello_pi directory – one important thing is to call bcm_host_init(); and link with libbcm_host.so to initialise BroadCom’s driver before you can do any GPU related calls. I started off by trying to port GlutES to the Raspberry Pi but I got further using the example code – I might come back to that as a way of getting more functionality working along with X11.

I’m also experimenting with a new fluxus editor for nomadic, based on Kassen Oud’s work – a text editor written in fluxus for fluxus that you can see in the screenshot. This will eventually be useful for the standard version too, as it will give much more control over the livecoding environment while livecoding :)

The Swamp that was, a bicycle opera

Day one on a new project – with Kaffe Matthews, and a collaboration between FoAM & Timelab, “The Swamp that was” is an opera where bicycles become a way to hear stories of the past in the city of Ghent.

I’m picking up the software side of things from Wolfgang Hauptfleisch, which involves using BeagleBoards – low power self contained open hardware ARM computers, a good follow up to my experiments with the considerably more closed NDS and less general purpose Android.

This is my test BeagleBoard xM in a custom laser cut housing from Timelab.

The “swamp” system is based on lua scripts calling proteaAudio for realtime audio processing. Lua has a tiny footprint and is great as an embedded interpreter (despite indexing from 1 and other minor gripes). Everything seems to be up and running, and I’ve set up a project on gitorious with the sourcecode.

Some random things I’ve learned include: flags to speed up dd copying images to extremely slow usb SD memory cards:

sudo dd if=swamp0-1.img of=/dev/sde oflag=dsync bs=1M count=1024

List ip addresses of devices attached to your local router:

sudo arp-scan --interface=wlan0

I’m using the Ångström distribution on the beagle board, which uses opkg for package management – it took me a long time to figure out the best way to search for packages is simply:

opkg list | grep alsa