Cinder is a peer-reviewed, free, open source C++ library for creative coding.

Our Philosophy

Cinder provides a powerful, intuitive toolbox for programming graphics, audio, video, networking, image processing and computational geometry. Cinder is cross-platform, and in general the exact same code works under Mac OS X, Windows and a growing list of other platforms — most recently the iPhone and iPad.

Cinder is designed to take advantage of platforms’ native capabilities whenever it’s possible, and relies on a minimum of 3rd party libraries. This makes for much lighter, faster applications, and means Cinder apps get free performance, security and capability upgrades whenever the operating system does.

We also have worked hard to create a library that feels familiar and intuitive to C++ programmers, building on the idioms and techniques the C++ community has developed over its long history. Cinder’s modern internal memory management virtually eliminates leaks, not only of memory but also of resources like OpenGL textures. We make use of the exceptional Boost libraries to fill in any gaps, and always favor techniques built on features which are currently or soon will be standard C++ (such as std::thread or std::shared_ptr).

We are proud of Cinder, and while we think you’ll be hard-pressed to find a more powerful environment for creative coding, we’re just getting started. We hope you’ll take the time to experiment with Cinder yourself, and if you like what you see, come join our community.

FAQ

  • Why C++?

    Great question. Let’s be honest. C++ is not the easiest language in the world, and can occasionally be confusing even for the experts. But there are some solid reasons we think C++ is well worth mastering.

    First, when it comes to power and performance, C++ is still the language to beat. Cinder is designed not only to take advantage of that power, but to do it in a way that happens automatically whenever possible. And while C++ is a very mature, stable language, it is by no means sitting still. Some of the most brilliant programming brains on the planet are hard at work improving the language, adding features and tying up the loose ends. The Cinder team is not shy about taking full advantage of their work, evolving and improving our own designs to match.

    C++ also opens the door to countless libraries for creative coders to use. Everything from computer vision to sound synthesis to GPU-based computing to multitouch interfaces to... you name it. C++ is still the best place to be when you’re looking to explore cutting edge technologies and libraries in the way creative coders always are.

    And last, C++ offers the most options in terms of the kinds of projects it makes possible. In addition to creating standalone applications which can run without an external runtime environment, C++ is the only native way to develop things like music visualization plugins or screen savers, among many others.

  • I’m experienced with Processing, but I think I’m ready to try something new. Is Cinder right for me?

    Very possibly. First though, be sure you really need to move on to Cinder. Have you already experimented with using an external IDE like Eclipse? Are you using native OpenGL calls instead of PGraphics? What about experimenting with Toxi’s excellent libraries? You’ll learn some things that will make an eventual transition to Cinder much easier, and as much as we’re into C++, it’s easy to underestimate how far Processing can take you. All that said, don’t let us talk you out of this either — if you’re excited about learning Cinder, we’re excited to have you, and we bet you’ll find it’s easier to get started than you might imagine.

  • I’m excited about creative coding, but I’m just getting started. Is Cinder right for me?

    Actually, probably not. While we’ve worked hard to make Cinder as natural and intuitive as possible, it’s not the best way to learn programming from scratch. Fortunately, there are a couple of great projects that are. Probably the most popular choice is Processing, which we cannot say enough good things about. As a tool for learning creative coding, it is masterful. You should also definitely check out the openFrameworks project, especially if you are specifically interested in C++. It’s got a bunch of very smart people working on it, and they’ve done an extraordinary job creating a C++ library that is approachable for beginners.

  • What do I need to get started with Cinder?

    If you’re using a Mac, you’ll want version 3.1 or later of Xcode, available free from Apple, and you’ll need an Intel machine running Leopard or later. If you want to develop for Cocoa Touch (either the iPad or iPhone) you’ll want to make sure you’ve got Xcode 3.2.2 or later, along with version 3.2 of the iPhone SDK, which requires Snow Leopard.

    For Windows development, you’ll need to get Visual C++ 2008. The free Express Edition works great. You’ll also need to download the Windows Platform SDK. The Cinder docs will walk you through how to do that.

  • What platforms can I target with Cinder?

    Cinder allows you to create standalone applications for Mac OS X Leopard (Intel) or later, and applications for Windows XP (Service Pack 2) or later. You can also create proper screen savers for both of these platforms.

    While we’re just getting started on it, Cinder can already target the iPhone and the iPad as well.

    Cinder is also carefully designed to live happily as a standalone library. So if you’ve got something else entirely to use it for, it can play nicely in a lot of different contexts.

    We’ve got ambitions for Cinder to run on as many platforms as possible. If you’ve got experience with a platform we don’t support yet and you’re up for helping out, definitely let us know!

  • How is Cinder licensed?

    Cinder itself is licensed under the Simplified BSD License. That makes it a great candidate both for open and closed source projects. Basically you can do whatever you’d like with the code, as long as you don’t remove its copyright notice or pretend you are the original author. If you want to make money with it, that’s totally cool with us. If you make something awesome with it we’d love to hear about it.

    Also, while one of the design philosophies is to rely on a minimum of 3rd party libraries, we do make use of a few. None of these libraries restricts development in ways significantly different from our own BSD license, though if you are doing commercial development you’ll want to vet the dependencies to your own satisfaction. The one exception to this is Cairo, which is dual licensed as both LGPL and the Mozilla Public License. However the latter makes provision for static linking, so for the vast majority of users there should be no issues.

  • Who makes Cinder?

    Cinder began its life at The Barbarian Group as an internal project to create a library for commercial interactive advertising projects. However it is now open source, and is currently actively developed by a community of programmers and artists.

    Cinder's original author and current lead architect is Andrew Bell, and significant portions of Cinder were derived from a library he coauthored with Hai Nguyen. For a complete list of contributors please see the Credits file included in the Cinder distribution.

  • Why did The Barbarian Group open source Cinder?

    In their own words, “we decided to open source Cinder for a few different reasons. The first is that we believe in open source philosophically, and have benefited over the years from some great open source projects ourselves, in particular Processing. We wrote Cinder because we couldn’t find a library that would allow us to do the sort of work we needed to for our clients. However we have both personal and professional interests in seeing work of this sort flourish. Our hope is that open sourcing Cinder will give rise to new work from individuals artists and other companies, which will in turn create a wider interest in creative coding as a whole. A rising tide lifts all boats.”

  • This is awesome. How can I help?

    Well, there’s a whole bunch of ways really. If you’re a rock-solid C++ coder, we’d love to have your help hacking on Cinder’s internals. If you’re familiar with Cinder but aren’t ready to code on it yet, join us in the forums! We can definitely use your help answering questions. Also, if you’re a good writer, we absolutely need help documenting Cinder, either in its reference docs or tutorials.

    Also, if you’ve got an idea for a feature, or you run across a bug or a particular API is driving you crazy, tell us about it! Cinder is just getting rolling, and there are all kinds of things to be added, improved or replaced. Your contributions and ideas are what open source is all about.