Project guidance: OF + arduino + cellular automata + l-systems + supercollider


This is my very first post here at the forum, and I wish I can explain exactly what I need.

I’m a brazilian design student currently working on my final graduation project. Speaking roughly, it consists of a “living” sound sculpture, where the user can interact with it through a tangible malleable interface, producing generative feedback. More info can be seen at (only in portuguese), or (where I post the tangible instrument development status).

Bellow is a basic schematic of how I’m planning it to function (on the technical level).

I’m actually on a stage that I need to define which language is best suited for me.

The only things really well defined at my basic setup is the use of a Lilypad Arduino (witch 5 accelerometers parsing data through bluetooth), and on the audio output, Supercollider. I have some background using Processing - and I’m really afraid that I’l need a more robust programming language to handle all that at a good rate speed. As this is an interactive project, it is really important that the feedback is consistent and fast enough.


  • Is Cinder a well suited language for my project? - It should be able to communicate easily with Arduino, parse all the data, handle the cellular automaton system, generate the visual output and generate data outputted to Supercollider. The visual feedback will be as complex as it can get with the responsiveness I get.

  • Does anyone have any idea, trail or have seen a similar project that can contribute with my development?

  • Can you indicate some “key-libraries” for what I’m intending to do, or even programming concepts and frameworks suitable for this?

I’m REALLY open to whatever contribution you might have to me at this stage. Hope someone can bring me some light!

My time schedule for the production of this project is really really short, and though that, I’m really excited on putting my hands on this! :smiley:



Hey looks like a fun project!

Which platforms you use really depend on how complex your sound and visuals engines need to be.

C++ / openframeworks is very powerful, but can be a challenge when you’re under time constraints - and working for a university I know how quickly student deadlines come up!

Have you ever used MaxMSP or Pd? The way you are planning it you will have 3 applications running at the same time which could prove a bit of a stress… Since you probably want quite complex sound and video manipulation as well as serial communication and you don’t have forever to do it I would recommend something like MaxMSP for a prototype which can handle all of this stuff and will at least make your sound engine a LOT easier to make.
You can interface with arduino and generate visuals too.

If you are already confident about using OF (not a huge jump from processing) then definitely explore the possibility of doing everything in OF. I have just found sound to be a real issue.


Hello Matt!

Thanks a lot for your answer!

You’ve got right into the main point of my concerns.
MaxMSP is really great, but has a problem for me: it’s not free and open source. To my project, that is really important. All of it will be open source - the tangible interface, the cellular automata system and also the output modules.

As for the other alternatives (PD, vvvv, quartz composer, etc). I’m really afraid that they can’t handle all the complexity of the “low level processing”, and also work well with both visual and sound generation.

What I really need is something that could handle nice complex generative visuals, right next to the Cellular automata system - which I think is a tricky processing thing to do. That’s why I’ve turned right into openFrameworks or Cinder, since c++ has the highest performance. However, do you think one of those other languages could handle if not better, similarly?

I’ve been thinking of trying to write a rough of the whole project in Processing, and then evaluate if it is really necessary to turn into another (more robust) language afterwards, since I already have some experience working in it…

Do you think this posterior “adaptation” would be difficult?

Thanks a lot, again!

Hmm those are big probs with Max- it is expensive and not open source. It may also be a bit unintuitive to program cellular automata stuff in Max since it doesn’t quite work on a ‘loop’ like written programming languages.

One benefit to doing it in Processing is that it would be much easier to port to something like OF in the future if you wanted to. Unfortunately I haven’t come across any really good sound libraries for processing, so I think that would be a problem for you.

I have just started using ofxPd which is an addon for OF that essentially allows you to control a Pd patch hidden inside your program. Pd will most likely be able to do anything you will want it to and you can easily send data to/from it. For me this has been essential to the stuff I’ve been making and a really neat solution.

If it were me working on this project I would use ofxPd and ofArduino to do everything inside OF. If you are up for it - and it sounds like you are more than capable - I would spend a couple of days getting OF up and running with a really simple program using ofxPd and ofArduino. If you can do that in a a few days I’m sure you will find it pretty straight forwards. Plus this forum has helped me loads getting to grips with it.

Pd can be a bit of a nightmare to do what you need if you’re new to it but it will be able to do what you need I’m sure.


Thanks a lot Matt!

I think I’ll give it a try them, like you suggested.
I was thinking of using SuperCollider because it is a little easier to use (to a beginner in sound generative like me) than PD. However, I’ll take a look at the ofxPd and see what facilities it brings rather than communicating with SuperCollider through OSC.


Just giving you guys some feedback:

I’ve decided to go with Processing for now (since I already know the language), and on a near future, if needed, convert it to C++!

Here is the development blog:

And here is a video I’ve made with a first prototype of the malleable interface: