Openframeworks

watershed open

Saturday, April 14th, 2007 by André Sier

the nip workshops got a great head start with a heads up on each others work. we started off with building bridges, literally with spaghetti, and metaphorically, grouping and coming up with ideas for new instruments in performance, or what new instruments by means of hacking-programming circuit bending may generate new interfaces. it’s very nice to see that machines are winding everyones brains into a twirl in computation, hacking or building interactive devices to operate with.

we were at watershed in bristol, a great space with rooms to work and present, a nicely crowded bar, some cinema rooms, and a lively open wireless network.

the presentations in the afternoon accounted for our group diversity; very interesting presentations by everyone, relating their projects to the themes of research in creating new engaging works that challenge and dazzle the users.

throughout the day there was a nice atmosphere of opening and sharing experiences. and of how to learn to build from there. how to use cameras, circuits, controllers, algorithms, video, sound, weird joysticks and midi connections, there was a nice buzz in the air.

the next few days were all around programming in zach’s openframeworks project, a great simple powerfull raw level of computation with all this nice libraries being wrapped. the whole thing displays direct through opengl and is very very fast, no other layers other than the code and the libraries. it’s all written in c++, directed at mac and windows platforms with linux coming up. here’s a picture of what i was having fun, feedback and array fun (there’s also a broken graphics card here…)
offun_012.jpg

we were on our way to handy computer vision code, started looking at how to make centroids, camera configurations. mostly exploring code from morning to evening, going through the examples, modifying them, learning how they’re built, creating new stuff from simple examples.

nip uk, day 2: afternoon

Saturday, March 31st, 2007 by Teresa

In the afternoon Tom V and I worked together (Tom’s Mac did not have the updates to handle OF). We kept it simple, manipulating images, playing with fonts and effects such as rotation, grabbing simple pixel data and playing with it. Doing these basic exercises helps to get to know the program.

As a relatively novice programmer (ie with some previous background in Processing) I found OF had an easy to use interface and structure. For example, as everything sits within two folders ‘apps’ (applications) and ‘lib’ (libraries), the structure is easy to follow and you can get your head around where the information for each project sits. This is a real help, when starting out programming, plus simply labeled navigation bars such as ‘build and go’ all assisted getting into the flow. As a group, we’d all different levels of expertise in programming (most had done some) but there was three or four who worked more at the hardware level or in collaboration with programmers and had little previous experience of line-by-line coding. Some also used other programs (mainly MaxMSP), which they felt still served there needs well. While others had reached their limits and needed to extend their knowledge and OF provide the next-step and means.

The good thing was that no matter what level you we’re at there was something to be learnt, for example, how to play with data at this level and how to be able to use OF. Also Zach’s approach to teaching and his clarity in conceptually explaining how programming works, personally made different parts of the jigsaw fit together in my mind.

nip 07 workshop, bristol

I guess, if anyone is thinking of using OF, it is good to know the basics of C++, particularly how to read the language. Once you start to know how to read it you can slowly begin to write. I’m at this point, which is a good feeling but you need to keep going with it, otherwise you loose your fluency and understanding - it’s no different than learning any language you gotta keep practicing. So basically to use OF, it’s a good idea to get familiar with C++. Also in comparison for example to Processing, which is at a more advanced developmental stage (i.e. around since 2005, more users using it, well developed community forum and online help section), OF is still an infant. There is a small community already playing with it but the project is still in development and not yet publicly launched. So for those expecting to pick up and run with it - like any programming language you need to take small steps, before you can run head long into creating sophiciated pieces - it all takes time !

nip uk, day 2: morning time

Saturday, March 31st, 2007 by Teresa

So after the mighty fine start to yesterday’s artist presentations, we set out on our first day with Zach and his world of computer vision. Kicking off the session Zach began with a general introduction to Openframeworks (OF). OF is a programming language that Zach has co-developed with Theodore Watson and the Openframework community. As a language it focuses on providing the means to developing bottom up, computer vision effects, which can be used to create interactive real-time audio-visual works.

At a basic level, OF is a C++ (C++ is one of the most common software programming languages) library, which wraps together several other libraries openGL for graphics; rtAudio for audio input and output; freeType for fonts; freeImage for image input and output; quicktime for video playing and sequence grabbing) under one roof. It’s miminal design (few classes and functions) allows for easy cross platform use and complier compatibility.

openframeworks

As OF is built using C++ it can provide a high degree of creative, programming freedom and control. Within other programming packages, such as Processing and MaxMSP you can also achieve some similar video and audio interactive results and outcomes to OF. However the downside is that you have to operate within the structures and bundled functionality that these packages provide for you. OF simply allows more freedom and control (ie you can write/code what you want) at a basic level.

Built in the tradition of open source and DIY approaches to creating software OF follows in the path of Processing and the work of John Maeda and the members of the Aesthetics and Computation Group at Massachusetts Institute of Technology (MIT) Media Lab, whose work has been leading in the field of interactive design.

nip crew getting down with openframeworks, bristol

Once we’d all installed the software (half the group with PC-ing it; half we’re Macin’), Zach lead us through the reasons for developing OF, namely he had hit the ‘wall’ with other languages, which he found did not allow him to access to at the core building blocks, which he needed to build his ideas. Learning C++, provided the access from which he could write the necessary computer functions and commands. So OF was borne out of the need to get to the heart of the materials, to be able at a basic level to grab image and sound data and from this create complex manipulations and to create a language, which allows to be able to do this as well.

A quick whirl tour through the different OF libraries, showed how they wrapped different programs and provided the ability to:

  • audio input - access to the the computer audio buffer and sound card
  • audio output - request audio data from external sources
  • events - respond to incoming events or actions
  • fonts - load type and fonts and treat them as textures
  • graphics - create and draw graphics (wraps openGL)
  • image loader - load images and movies and grabs basic pixel data and control it
  • movie grabber - receive low level data from live cameras feeds
  • movie player - controls how the plays, the properties of the movie and pixel data per frame
  • During the morning session, we also had a quick look through some projects (other than those created by Zach, such as Drawn), which have used Openframeworks namely:
    Theodore Watson, Audio Space
    Graffiti Research Lab, L.A.S.E.R Tag
    Chris Sugrue and Matthias Bauer, Le Sacre du Printemps