The opening reception at MakeArt in Poitiers, France last night was great – over 100 people, and enough participated in my Drawn Together project to animate the first 20 seconds of Chris McCormick’s energetic track “Sphereflake” twice over:
Area of Interest// blog
MakeArt 2010
Hey all, I’m off to MakeArt 2010 in Poitiers, France for the next 5 days to show a completely free/open source version of Drawn Together!
Drawn Together, post-AND Festival
The newest version (description of the project here), about 80% of the way done, thanks to another 90 frames drawn by some lovely people at the Interface Amnesty exhibition at the NoiseLab in Manchester, as part of the AND Festival.
Halloween Lightbox
Using the Dimmer Plug and a Jeenode to create a box of LEDs that blinks when tilted, with a brightness control (and future wireless capability…)
Check the PCA9635 data sheet for programming details.
Took me a bit to figure out how to vary the brightness of each LED individually, and to turn them on in the first place (have to send the right message to each LED bus).
Yeah, it’s a bit dodgy looking. Just needed to whip up a quick box out of foam board, will do a nice laser-cut encased version at some point, time-permitting.
Code for Arduino:
// Dimmer with accelerometer attached to port 4 analog in and // standard potentiometer attached to port 3. // 2010-10-30 <evan@openlabworkshops.org> http://opensource.org/licenses/mit-license.php #include <Ports.h> #include <RF12.h> // needed to avoid a linker errorPort three (3); Port four (4); PortI2C myBus (1); DimmerPlug dimmer (myBus, 0x40); // variables: int sensorMin = 1023; // minimum sensor value int sensorMax = 0; // maximum sensor value int level; byte frame = 0; // leds are connected to pins 2 (DIO) and 3 (GND) with a series resistor void setup() { Serial.begin(57600); dimmer.setReg(DimmerPlug::MODE1, 0x00); // normal dimmer.setReg(DimmerPlug::MODE2, 0x20); // blink dimmer.setReg(DimmerPlug::GRPPWM, 0x40 ); // duty cycle 25% dimmer.setReg(DimmerPlug::GRPFREQ, 3); // blink 4x per sec dimmer.setReg(DimmerPlug::LEDOUT0, 0xFF); // LED 0 blinks (all 4 - 3 bits on for each) dimmer.setReg(DimmerPlug::LEDOUT1, 0x03); // LED 1 blinks (only the 1st) dimmer.setReg(DimmerPlug::LEDOUT2, 0x00); // LED 2 off dimmer.setReg(DimmerPlug::LEDOUT3, 0x00); // LED 3 off dimmer.setReg(DimmerPlug::PWM0, 0xFF); // initial brightness to full for each individual LED dimmer.setReg(DimmerPlug::PWM1, 0xFF); dimmer.setReg(DimmerPlug::PWM2, 0xFF); dimmer.setReg(DimmerPlug::PWM3, 0xFF); dimmer.setReg(DimmerPlug::PWM4, 0xFF); three.mode(INPUT); four.mode(INPUT); } void loop() { int val = four.anaRead(); int val2 = three.anaRead(); // calibrate during the first five seconds if (millis() < 6000) { // record the maximum sensor value if (val > sensorMax) { sensorMax = val; } // record the minimum sensor value if (val < sensorMin) { sensorMin = val; } } else { int sensorValue = map(val, sensorMin, sensorMax, 2, 18); //++level; ++frame; byte frameOdd = frame % 2; // just add some "spice" to the blinking dimmer.setReg(DimmerPlug::PWM0, val2* frameOdd); dimmer.setReg(DimmerPlug::PWM1, val2); dimmer.setReg(DimmerPlug::PWM2, val2* frameOdd); dimmer.setReg(DimmerPlug::PWM3, val2); dimmer.setReg(DimmerPlug::PWM4, val2* frameOdd); // dimmer.setReg(DimmerPlug::GRPPWM, 0x30 ); // vary the blink rate with the tilt sensor value (y direction, in this case) dimmer.setReg(DimmerPlug::GRPFREQ, sensorValue); // delay - we don't need to do this all the time, the LED driver does most of the work delay(100); //Serial.print(sensorMin); // Serial.print(":"); // Serial.print(sensorMax); // Serial.print(":"); // Serial.println(sensorValue); } }
Creative Pact Day 8
I swear I did something, but I ran out of time to post it.
First, I registered FLKR as a merchant on the Android Marketplace, so I can start selling games. Second, I added some much needed difficulty to the SeaGame prototype, so a giant fish swims by occasionally and blocks you from collecting treasure, and the treasure itself now moves about as it shrinks/expands. The trick with these games is to make them simple, repetitive, but (slightly) physically difficult.
For now, my time is about to be absorbed by the CGA (Computer Game Arts) degree at UCA Farnham, where we have induction of the first set of first year students ever for the course. I’m a little excited, and also intimidated by having to instruct 32 students who probably are more up to date with games than an old fogey like myself. We received a shipment of new kit – Playstation 3, Wii, XBox360, Nintendo DSi, PSP, etc – and it took 3 of us to find the “on” switch for the PSP. Ah, Sony, and their deliberately opaque sense of design. If you can’t turn the blasted thing on, you aren’t cool enough to use it.
Creative Pact Day 7: Auduino
Originally uploaded by da mad pixelist
Today was prep day for the first One Button Devices workshop for Openlab Workshops, so I dusted off the Arduino and sensors to make this simple “theramin-style” synthesizer using an infrared distance sensor and the Audiuno code form the lovely folks at Tinker.it.
Creative Pact Day 6: SeaGame v001
Today (for Creative Pact 2010) I took my little game engine and created a fully working game out of it. I finished some more assets – rocks and shells and things you find near the water, traced from some pictures I took on the banks of the Thames. The goal is to collect the buried treasure by clicking on it, as fast as possible. It’s a start – the next version will have shake sensors and other moving characters you need to click on.
Writing a game, you realize that the coding part of the time is tiny compared to the “figuring out what the heck the game should do and creating all the visual assets” time. Especially the visual assets, mostly because I prefer to draw them by hand and not take from other sources. I like that cartoony aesthetic in a video game, as you can probably tell.
If you have an android phone, you can install it from here.
Creative Pact Day 5: Beach Game
I have this idea of doing a game where you dig in the sand and find buried treasure. Trying to get it done in a day is tricky… I basically finished making some assets today (only have about 1.5 hrs or so to do it in). Here are a few cute lil’ images I whipped up in Illustrator. Please be aware that, as of now, they are copyright Evan Raskob 2010 (and not free – yet).
Creative Pact Day 4
So, today I didn’t do anything for the creative pact. Marcus and I were doing some filming tests for his Tiny Dancer project, which involves a bunch of live tracing of people’s outlines while dancing. It’s written in OpenFrameworks (well, C++ really) and uses a serious amount of multi-threaded asynchronous queues so that it can both write and save audio data at the same time as performing some intensive video analysis, all in realtime, all without skipping, and all the while guaranteeing that it saves data in very particular and uncorrupted formats.
What we’re doing now is gathering a lot of data on people dancing, using background subtraction and infrared lighting to isolate the dancers’ outlines. The people at the Arcola Theatre right across the street were nice enough to let us borrow a studio to film in.
So that’s what I did today; some days you gotta work and have no time for anything else, especially on a gorgeous Friday.
I think this picture sums it up.
Creative Pact Day 3: Knocking Things About
Result – this is actually game-like!
Today’s lesson in that things are always more difficult than they seem. Tried adding a MotionEvent.ACTION_MOVED detector to the onSceneTouchEvent() method of my TouchSprites so they could detect when a finger dragged over them and subsequently would knock them about, but had a bit of trouble. Apparently, as I’ve learned on the excellent AndEngine forum, an object needs to first catch an ACTION_DOWN event before it will start to receive subsequent ACTION_CANCELED or ACTION_MOVED events. This makes sense in hindsight, but it also make things a bit more difficult when you’ve started thinking about it from the other way, as if these events were just globally propagated down the chain of objects that are subscribed to receive them, until one steps up and handles it.
The solution is to create another physics object that’s hidden, and move it about to knock the other objects around when necessary. Also, I had to update it in a different thread, and I still get some crashes occasionally due to memory errors. Need to look at those…
So it looks like “kicking” an object (a cat, in this case) is going to be all I can get done today, because tonight is the opening at The Brick Box in Brixton Market and I’ll be showing Drawn Together there amongst some other visual and artistic goodness.
I did add simple scoring to this version – this should be handled by a GameLogic class, which I’ll work on a bit tomorrow if I get a chance (have some other stuff to do).
Here’s today’s app. (I overwrote yesterday’s, because, well, it sucked)

