C4: a creative-coding API for media, interaction and animation

Although there has been widespread proliferation of creative-coding programming languages, the design of many toolkits and application programming interfaces (APIs) for expression and interactivity do not take full advantages of the unique space of mobile multitouch devices. In designing a new API for this space we first consider five major problem spaces and present an architecture that attempts to address these to move beyond the low-level manipulation of graphics giving first-class status to media objects. We present the architecture and design of a new API, called C4, that takes advantage of Objective-C, a powerful yet more complicated lower-level language, while remaining simple and easy to use. We have also designed this API in such a way that the software applications that can be produced are efficient and light on system resources, culminating in a prototyping language suited for the rapid development of expressive mobile applications. The API clearly presents designs for a set of objects that are tightly integrated with multitouch capabilities of hardware devices. C4 allows the programmer to work with media as first-class objects; it also provides techniques for easily integrating touch and gestural interaction, as well as rich animations, into expressive interfaces. To illustrate C4 we present simple concrete examples of the API, a comparison of alternative implementation options, performance benchmarks, and two interactive artworks developed by independent artists. We also discuss observations of C4 as it was used during workshops and an extended 4-week residency.

[1]  Jeffrey Heer,et al.  D³ Data-Driven Documents , 2011, IEEE Transactions on Visualization and Computer Graphics.

[2]  Jeffrey Heer,et al.  prefuse: a toolkit for interactive information visualization , 2005, CHI.

[3]  Jeffrey Heer,et al.  SpanningAspectRatioBank Easing FunctionS ArrayIn ColorIn Date Interpolator MatrixInterpola NumObjecPointI Rectang ISchedu Parallel Pause Scheduler Sequen Transition Transitioner Transiti Tween Co DelimGraphMLCon IData JSONCon DataField DataSc Dat DataSource Data DataUtil DirtySprite LineS RectSprite , 2011 .

[4]  Nicolai Marquardt,et al.  The proximity toolkit: prototyping proxemic interactions in ubiquitous computing ecologies , 2011, UIST.

[5]  Benjamin B. Bederson,et al.  Jazz: an extensible zoomable user interface graphics toolkit in Java , 2000, UIST '00.

[6]  HeerJeffrey,et al.  D3 Data-Driven Documents , 2011 .

[7]  Saul Greenberg,et al.  Toolkits and interface creativity , 2007, Multimedia Tools and Applications.

[8]  Steve Freeman,et al.  Evolving an embedded domain-specific language in Java , 2006, OOPSLA '06.

[9]  Ira Greenberg,et al.  Creative coding and visual portfolios for CS1 , 2012, SIGCSE '12.

[10]  Sebastian Boring,et al.  The HapticTouch toolkit: enabling exploration of haptic interactions , 2012, Tangible and Embedded Interaction.

[11]  Benjamin B. Bederson,et al.  Toolkit design for interactive structured graphics , 2004, IEEE Transactions on Software Engineering.

[12]  Saul Greenberg,et al.  Phidgets: easy development of physical interfaces through physical widgets , 2001, UIST '01.

[13]  Jean-Daniel Fekete,et al.  The InfoVis Toolkit , 2004, IEEE Symposium on Information Visualization.

[14]  Jeffrey Heer,et al.  Protovis: A Graphical Toolkit for Visualization , 2009, IEEE Transactions on Visualization and Computer Graphics.

[15]  Saul Greenberg,et al.  Enhancing Creativity with Groupware Toolkits , 2003, CRIWG.