I've long known that openFrameworks was a really strong platform for my type of work. But my friend and collaborator Gene Kogan has now convinced me that the community is really a great place to be too, so I've decided to invest a little time.
Along with SuperCollider these are now the platforms I'm seriously considering in preparation for the I-Park residency.
Having used neither openFrameworks nor C++ before, there are some hurdles to jump. In this post I want to present my experience installing and getting started with the platform, so that it might help others who are starting out.
Given that I already use Visual Studio for web application development, it seemed the natural choice. But after a couple of frustrating hours scanning scant support information online, I backtracked on that decision. CodeBlocks is the openFrameworks "preferred" IDE for Windows, articles are usually written with reference to it (when they are not written about XCode), and being new to C++ and openFrameworks I realised that I need those kinds of articles. Once I backtracked and switched to CodeBlocks, things became easier.
So that's the reason this article is written about CodeBlocks!
Step 1: Install CodeBlocks
So as discussed, step 1 becomes install CodeBlocks.
Step 2: Download openFrameworks for CodeBlocks
Download the appropriate (CodeBlocks) zip file from the openFrameworks download page. You can extract it to any directory you like. This will also become your working directory (you will build your apps inside here, it will be discussed in the tutorial below), so it's best to keep it somewhere easy to get to and easy to back up. For now, I just extracted it to a new directory 'C:\ofx\'.
Step 3: Set up CodeBlocks to work with openFrameworks
Follow the instructions on this page to set up CodeBlocks for openFrameworks. I found these to be simple and self-explanatory.
Step 4: Follow the openFrameworks tutorial
The openFrameworks guys have written a tutorial. If you're not sure yet what openFrameworks is, or what C++ is (and so on), you might appreciate the general introduction, but either way you should get going as quickly as possible with the tutorial.
Depending on your previous experience these links may seem overly basic or a little bit daunting. The tutorial goes through orientation, preferred practice (in terms of working directories and default project layout), right through to a fairly detailed discussion of basic programming constructs (the usual: sequence, selection, iteration, types and arrays etc. which are the subjects of so many programming books).
It also discusses how this applies in openFrameworks, and in media programming in general - all in one really long page! This is why it could seem a little daunting, although as an experienced programmer I was able to skip most of the material.
When you are done with that, you can zoom out to the main tutorials section and pick more topics from the left nav. I've included a couple of useful links from this section at the bottom of this post.
A bias to XCode
Unhelpfully, the IDE examples in the tutorial are all for XCode - for CodeBlocks all you get is 'Coming soon!' However if you read the XCode examples it's pretty easy to figure out how it applies to CodeBlocks.
The power of openFrameworks is in mixing and matching various community-contributed addons. In my case, to begin with, I'm interested in using my openFrameworks project for projection-mapping and real-time generative graphics, and talking to SuperCollider to achieve a Synesthetic effect.
I'll talk more about my experience with addons in the next post. In the meantime though, it's worth pointing out a few useful resources that may help:
- The openFrameworks wiki
- Introduction to openFrameworks for Processing users
- The site for sharing and finding openFrameworks addons, and a (currently quite poorly written) tutorial for how to add addons
- Creating your first particle system
- Slides from presentations. These can function as quick little intros to basic subjects, and cover the following topics: Sound, Video, Graphics, Events, 3D, OpenGL, Utils
- Vector maths
- For developers: Patterns, Layout & types of Classes, and Git & openFrameworks (also, a git / oF cheat sheet)
If you are trying to get started, good luck!
- Jaaga Residency (17)
- Jaaga (15)
- I-Park Residency (12)
- Process (12)
- V4W (10)
- Personal Development (10)
- Installation (10)
- VVVV (9)
- Field Research (8)
- Freemote Threshold (7)
- SuperCollider (7)
- Long (7)
- Freemote (7)
- Reflections (6)
- Audio / Visual (6)
- CAC Residency (6)
- Arduino (5)
- Tutorial (5)
- Influence (5)
- Max/MSP (5)
- Jaaga Sound and Lights (4)
- openFrameworks (4)
- Motor (4)
- Kinect (4)
- Projection Mapping (4)
- Portable Projection (4)
- Gravity (4)
- michael fairfax (3)
- Roman Moshensky (3)
- Rocks (3)
- Jee Soo Shin (3)
- Land Art (3)
- Picture This (2)
- Phenomenology (2)
- Git (2)
- Measure (2)
- Projection Bombing (2)
- Presentation (2)
- Creative Context (2)
- Natural Textures (2)
- Tess Martin (2)
- Scott Wilson (2)
- Alpha-Ville (2)
- Review (2)
- Untitled (Picture This) (2)
- Ralph Crispino (2)
- Cosm (2)
- Mac (2)
- Boaz Aharonovitch (2)
- C# (2)
- Mobile Projection (2)
- Memo Akten (2)
- Judith Stein (2)
- Generative Art (2)
- 3D (2)
- Residency Begins at CAC Troy
- Installation Sketch at Open Studios
- Roman Moshensky's Mirror World
- Open Studios at I-Park
- Perception as a Creative Process
- The I-Park Graveyard
- Scoping Out the Land
- Residency Begins at I-Park
- Residency at Contemporary Artists Center
- Stephen Lumenta's SC TextMate Bundle
- Adding OF Addons (ofxSuperCollider)
- Setting up SuperCollider with TextMate
- Switching to MacBook Pro
- QuickRef for SuperCollider
- Getting Started with SuperCollider
- Getting Started with OpenFrameworks
- Overtones, Harmonics and Additive Synthesis
- Visit to Cold Spring
- The Final Exhibition
- Playing with Particles
- Responsive Granular Sound
- Kinecting to the Network
- First Working Day
- Designs for Freemote
- Freemote Utrecht
- Untitled - Picture This (2011)
- The Wider Context?
- Trading Time for Space
- Talk at Goldsmiths Digital Studios
- Intro to Marius Watz
- Practical Guide to Generative Art
- Cosm, Collision Detection and Volume
- Vector-Base Amplitude Panning
- Intuition, and Direction of the Project
- Reflections: What is Jaaga?
- Going Further with Ambisonics
- Introduction to Ambisonics
- Surface (2010)
- Servo Motors and Transistors
- Spinning a 12V DC Motor
- Spinning a 5V DC Motor
- First Week at Jaaga
- Presentation Style
- Beginning the Jaaga Fellowship