2.2. Eines de programació creativa
2.2.6. Cinder
Cinder, llançada el 2010, és un llibreria de programació en C++ de codi obert creada per Andrew Bell amb aportacions de Hai Nguyen.
La llibreria permet crear programes independents emprant dades obtingudes a internet o generades a partir de la interacció amb el teclat, el ratolí o pantalles tàctils, entre d’altres.
Es poden crear gràfics en 3D, formes generades amb algorismes, processament d’imatges, treball amb text i tipus de lletra personalitzats i edició d’àudio i vídeo. A més, Cinder és una multiplataforma, de manera que el mateix codi funciona en MacOS, Windows, Linux, iOS i Windows UWP. Per les seves característiques, es compara sovint amb openFrameworks i també es considera una alternativa per a C++ d’altres entorns com ara Processing (basat en Java), Microsoft Silverlight o Adobe Flash. Cinder s’empra sovint en instal·lacions interactives i basades en les visualització de dades o la simulació de propietats físiques.
Entorns evolutius
El 2011, l’estudi FIELD va crear una sèrie de vídeos i animacions generatives pel video wall de la seu del Deutsche Bank de Hong Kong. Una de les animacions, desenvolupada amb Cinder, simula l’efecte d’una ona amb petites partícules que es desplacen per la pantalla. Podeu visualitzar-ho a l’enllaç https://www.field.io/project/hi-res-realtime-artworks/.
Si bé presenta similituds amb Processing o openFrameworks, Cinder resulta una mica més complex d’utilitzar i no és la millor opció per qui comença a crear projectes de programació creativa.
Els mateixos creadors afirmen que és millor començar amb exemples creats i anar aprenent a partir d’aquests, per la qual cosa és possible accedir a nombrosos programes de mostra (allotjats a GitHub) i també emprar les eines Tinderbox, pensades per a facilitar la creació de nous projectes i Cinderblocks, una col·lecció de llibreries i codi que es combinen amb Tinderbox per a integrar ràpidament certes funcions en un projecte.
Crear un projecte amb Cinder requereix estar familiaritzat amb el llenguatge C++ i l’ús d’OpenGL. Hi ha tres funcions principals que estructuren qualsevol projecte:
setup( )
inicialitza les variables quan arranca el programa.update( )
modifica aquestes variables.draw( )
visualitza el resultat a la pantalla.
Per mitjà d’aquestes tres funcions es defineixen els elements del programa i les rutines que s’executen en un bucle infinit.
A aquestes funcions, cal sumar-ne dues més:
prepareSettings
permet definir diversos paràmetres del programa abans d’iniciar-lo, com ara la grandària de la finestra o els fotogrames per segon.shutdown
se situa just quan se surt de l’aplicació, per a alliberar memòria o apagar dispositius.
Cinder usa l’espai de noms (namespace) de C++ per a distingir les funcions, de manera que tots els elements emprats en aquesta llibreria estan dins de l’espai de noms cinder:: (abreujat ci::). L’ús d’aquesta convenció exemplifica com el treball amb Cinder es basa en un coneixement previ de C++, i és que, a diferència d’altres entorns, aquí cal escriure codi coneixent la sintaxi i els diferents recursos que disposa la llibreria. En el lloc web es facilita una llista de referències per categories que pot servir per a trobar una funció concreta, però (com sol ocórrer amb altres llenguatges de programació) és mitjançant exemples ja realitzats com es poden descobrir millor les possibilitats de Cinder.
En aquest sentit, el primer ús de Cinder passa per crear un projecte nou amb Tinderbox i explorar algun dels projectes de mostra. Amb Tinderbox escollim la localització i el nom del projecte, i també el tipus de projecte a realitzar i, finalment, triem un compilador (XCode o Visual C++2010). El programa crea el projecte i les referències a la llibreria de Cinder, a més d’un codi de mostra i un exemple amb què es pot començar a treballar. A més, la guia Hello Cinder ofereix un recorregut informal per les fases de creació d’un projecte, des de la creació de la finestra en què es mostraran els resultats a la inserció i manipulació d’imatges, extracció de dades, control per mitjà del teclat i ratolí, creació d’un entorn en 3D i treball amb partícules aplicant regles, entre d’altres.
Primers passos i receptes de Cinder
La complexitat de Cinder fa recomanable explorar les guies pas a pas, com ara el tutorial Hello Cinder de Robert Hodgin (https://libcinder.org/docs/guides/tour/hello_cinder.html) i els llibres com, per exemple, Cinder Creative Coding Cookbook de Dawid Gorny i Rui Madeira (Packt Publishing, 2013), que facilita l’aprenentatge de Cinder per mitjà d’una sèrie de «receptes» que porten l’usuari novell a descobrir pas a pas les diferents possibilitats que aquest li facilita per a crear tot tipus de projectes.