August 6, 2014
02:55 PM

CINDER 0.8.6 RELEASED

Cinder 0.8.6 has been released today, with a slew of new features and enhancements.

New Audio API

A from-scratch rewrite of the audio API led by Rich Eakin is included in this version, featuring a modular, pluggable, node-based API. It ships with a number of generators and effects, including band-limited wavetable synthesis, buffer playback, filtering, panning, and delay. It also includes file decoding support for WAV, MP3, Ogg Vorbis and others. High-end users are also able to encode at 24 and 32-bit precision. Microphone input is supported, as well as multichannel output, with functionality for selecting non-default devices. Also included are cross-platform DSP tools for FFT, high quality samplerate conversion, a non-blocking ringbuffer, biquad filtering, and vector based math operations. The audio::Param class allows for extremely precise sample-accurate parameter interpolation. For more straightforward needs a higher level Voice API allows for "fire and forget" audio file playback and simple processing. The features of this new API are exercised by a number of new audio-centric samples.

WinRT and DirectX

Thanks to a huge contribution from the Microsoft Open Technologies Group, Cinder now has experimental support for WinRT and DirectX. This allows targeting the Windows App Store with Cinder, as well as the Surface and Surface Pro hardware. Furthermore, the new renderer allows normal Cinder desktop applications to use DirectX 11 for graphics. TinderBox also includes templates for WinRT now.

64-bit Windows and Visual C++ 2013

Cinder now ships with support for targeting 64-bit Windows. This release also adds support for Visual C++ 2013 and its compiler, the v120 toolset.

Unicode

New Unicode APIs allow Cinder to make use of UTF-16 and UTF-32 strings easily via the std::u16string and std::u32string C++11 types, and to convert between UTF-8, UTF-16 and UTF-32 strings. Additionally, Cinder's internal file path operations have all been updated to support non-ASCII file paths, allowing full "il8n" support with regards to file saving and loading.

Path2d Functionality

New methods on Path2d allow for calculations of tangents for a given t-value. Additionally, new functionality allows fast iteration of Path2d's as parameterized by arc length. Users familiar with Bézier curves know that naive interpolation of t-values typically results in undesirable acceleration and deceleration. These new APIs allow for interpolation that accounts for arc length, allowing predictable usage of Path2d for animation. This is demonstrated by the new BezierPathIteration sample.

App Activation and Resignation Events

New event signals allow Cinder apps to handle users foregrounding and backgrounding the application.

Various Enhancements

As usual, a number of smaller improvements and bug fixes are included in this release. There's update callbacks and an improved interface for the Params API. Functionality for iOS keyboard input and an iosKeyboard sample to demonstrate it are included as well. Also a convenient CI_ASSERT macro for dealing with asserts in a cross-platform manner. A new ci::Color constructor allows construction of colors based on their HTML names. New math functionality includes ci::frac() and ci::isPow2() functions. And improvements in the handling of exceptions in the ImageIO API's, among other improvements.

FallingGears Sample

This new sample demonstrates how to create physics-driven sound synthesis using the new audio API and Box2D.

Updates

Cinder's dependencies, include Cairo, Boost and Oscpack have all been updated to new versions.

As ever thanks to the Cinder community around the world for all your hard work in putting together this release. On to the next...

June 29, 2013
01:29 PM

CINDER WINS INNOVATION LION

A pretty remarkable thing happened recently. Cinder won the highest honor in the advertising industry, a Grand Prix at the Cannes Lions festival. In fact, Cinder was awarded the first ever Grand Prix for a new brand-new category, Innovation. We're obviously quite proud of this fact, and have been amazed at all of the new attention Cinder is getting.

You can read all about it in various publications like Fast Company, Creativity, and Advertising Age.

April 24, 2013
03:59 PM

CINDER 0.8.5. RELEASED

We're excited to announce the latest Cinder release, version 0.8.5. This is the most significant upgrade to Cinder to date. Here's what it contains:

New TinderBox

TinderBox has been rewritten from scratch and now includes support for integrating CinderBlocks (prepackaged libraries of code for use with Cinder). Generating an app to experiment with technologies like the Kinect or OpenCV now requires just a few clicks. You can read more about CinderBlocks here and TinderBox is documented here.


Redesigned Window/Event Systems

Cinder's windowing and event subsystems have been rewritten to support multiple windows in a single application. Cinder's event-handling implementation is now built around Boost.Signals2. This allows thread-safe mechanisms for connecting multiple handlers to a given app-level or window-level event and interoperates easily with lambdas and std::function.


Visual C++ 2012 support

Cinder and TinderBox now have full support for Visual C++ 2012 (including both the v110 and v110_xp toolsets).


New Icons

New icons for Cinder apps and TinderBox.

C++11 Features

By standardizing on Xcode 4.4+ we can ensure the universal availability of unique_ptr, lambda functions, move semantics and several other powerful tools in C++11. Additionally, Xcode and Visual C++ 2012 users can take advantage of newer features like range-based for-loops.
A traditional for-loop like this:

vector<DisplayRef> displays = Display::getDisplays();
vector<DisplayRef>::const_iterator displayIt;
for( displayIt = displays.begin(); displayIt != displays.end(); ++displayIt )
    console() << "Resolution: " << (*displayIt)->getSize() << endl;

Can now be written as

for( auto display : Display::getDisplays() )
    console() << "Resolution: " << display->getSize() << endl;

Screensavers on Mac and Windows

A redesigned Screensaver app type has full support for Mac OS X and Windows. A new TinderBox template makes the process of creating a cross-platform screensaver with Cinder quite simple.


Cocoa-driven GUI application type

This version of Cinder adds support for creating Cocoa-based GUIs on Mac OS X, along with a corresponding TinderBox template. This is a powerful technique for apps that require a sophisticated interface, and it's quite easy to implement for users already familiar with Cocoa.


libc++ on Mac OS X and iOS

libc++ is the STL replacement for libstdc++ that has been developed in parallel with Clang. It provides a modern redesign that is C++11-centric and often significantly faster.


LocationManager Support

Support for the LocationManager support on both iOS and Mac OS X. Screenshot is from the included LocationManager sample.


Console on Windows

Windows apps can now benefit from an optional external console window for displaying std::cout.


Retina Displays on iOS and Mac OS X

We've improved existing iOS support for the Retina display and added support on the Mac OS X implementation. This includes supporting dynamic pixel density when a user drags a window between a Retina and non-Retina display, and a system for writing Retina-agnostic draw logic.


Support for armv7s

New devices from Apple including the iPhone 5 use the armv7s architecture natively, and Cinder 0.8.5 adds support for targeting it.


iOS External Displays

iOS external displays via HDMI/VGA adapters and AirPlay are now supported using the same APIs as the desktop versions of Cinder. In practice the Cinder application creates multiple windows and can draw completely different content on the device's native display and an external one.


iOS Additions

Numerous additions and improvements to the iOS implementation of Cinder, including:

  • International Keyboard Support
  • MotionManager support for accelerometer + gyroscope integrated orientation
  • Proximity sensor signals
  • Battery level and plug state change event signals
  • Dynamic hide/show status bar
  • Full suite of foreground/background/memory warning event signals
  • Runtime detection of device type
  • Camera Improvements

    Support for addressing front or rear camera, and for higher resolution capture.

  • Integration with native Cocoa GUI

    The iosNativeControls sample demonstrates how to integrate Cinder into a larger Cocoa-based application on iOS.


Convex Hull Calculation

A new convex hull implementation can calculate the hull of a group of points, a PolyLine2f, a Path2d or a Shape2d. The implementation is able to calculate the extrema of a cubic or quadratic Bézier curves to avoid costly and inexact curve tessellation.


OSC Refactored

OSC has been wrapped into a CinderBlock and no longer depends on a static library. Multicast options have been added as well.


ASIO Integration

ASIO is a powerful Boost library designed for use with asynchronous operations of all sorts, with a special emphasis on networking. Cinder Apps now maintain an ASIO io_service for simpler integration with this library.


FMOD CinderBlock

An official CinderBlock wrapping the FMOD library and matching app template is included with this release.


MTL File Parsing

Support for .mtl files in ObjLoader courtesy of Nick Porcino.


Stereoscopic Cameras

Stereoscopic rendering support and matching sample courtesy of Paul Houx. Several stereo rendering formats are supported including interlaced, split frame and red/cyan anaglyph.


Kaleidoscope Sample

A new Kaleidoscope sample courtesy of Greg Kepler demonstrates multithreaded downloading of Instagram images.


Architectural Changes

We've added support on Mac OS X for 64-bit applications (minus QuickTime). We now require Mac OS 10.7+ for deployment and Xcode 4.4 for development. iOS requires iOS 5.0+ for deployment.


Upgraded to Boost 1.53

A list of what's new in Boost is available here.


As always, we're incredibly indebted to The Barbarian Group, who have continued to support Cinder via its Technology Research Fellowship program. Additionally, Barbarian Rich Eakin is responsible for much of the work in this release.

May 17, 2012
03:17 PM

CINDER 0.8.4 RELEASED

The Cinder team is pleased to announce the release of Cinder version 0.8.4. Features in this release include:

SVG Parser

A full-featured parser of the SVG vector graphics file format, including support for gradients, embedded images, and compressed SVG (SVGZ). Includes both a Cairo and OpenGL rendering pipeline, as well as full DOM-style access to element data.


Timeline API

In the spirit of the popular TweenLite engine for Flash, the new Timeline API allows sophisticated animation of arbitrary properties. Support for a large library of easing functions as well as custom easing, callbacks and fire-and-forget tween management.


JSON Parser & Writer

Courtesy of Stephen Schieberl, Cinder now includes a powerful JSON reader/writer called JsonTree, similar to our XmlTree XML parser.


Assets System

A new alternative to resources, assets in Cinder provide a convenient method for including data with your application which requires no setup code. Read more here.


Numerous New Samples

Many new samples demonstrating multithreaded network I/O, advanced frustum culling as well as the new SVG and Timeline APIs.


Polygon Boolean Operations

Polygonal booleans supporting the calculation of arbitrarily complex polygons' union, intersection, XOR and difference.


Shape2d Hit-Testing and Precise Bounding Boxes

Simple determination of whether a point is inside of a Shape2d, as well as the precise or "tight" bounding box of a Shape2d. Suitable for click detection, for example in determining which region a user clicked in a map.


Standardization On fs::path

All file I/O routines now use fs::path (shorthand for Boost.Filesystem paths) in place of bare strings.


Base64 Encode & Decode

Built-in support for encoding and decoding Base64, necessary for things like MIME attachments and embedded images in SVGs.


ConcurrentCircularBuffer

An STL-style container which simplifies safe data exchange between threads, especially well-suited for implementing a producer-consumer pattern.


New Math Classes

Including new classes for representing planes, frusta and affine matrices in 2D.


Fixes and Improvements

A number of other enhancements and bug fixes including new Cairo functionality, gaussian-distributed random numbers, runtime vertical sync and window position control.


Cinder is the work of an ever-growing community of developers, and we are grateful for everyone who helped out with this release. Github reflects commits from 32 contributors now. And finally, Cinder is incredibly indebted to The Barbarian Group, who have generously underwritten the majority of the code in this release. Thanks TBG!