QUIET-LAKE-23602, 2019, Interactive Installation

Artificial Life, Sentiment Analysis, Real-Time Rendering

Quiet-Lake-23602 is an interactive installation that consists of two components; a projection display and a web component. This installation was an attempt to create a real-time simulation of ecosystems existing on the internet and an exploration of visualization of humans' existence and presence online. The term media ecology is a study of how media communications affect human perceptions, feelings and values also it examines how our interaction with media facilitates or impedes our chance of survival, as posited by media theorist Niel Postman, Postman utilizes the metaphor of a Petri dish to analogize the term media ecology (2000). A Petri dish is used as a container to hold a medium or growth medium and the medium is an analogy for technology, defined as a substance within which a culture grows. To summarise “a medium is a technology within which a culture grows” (Postman, 2000, p. 10). The project attempts to use sentiment analysis, and artificial life to create a virtual Petri dish of an online community, to observe the behaviour of creatures that are created by, influenced and inhabit the medium that is the internet.


The interactive installation generates ecosystems by analyzing conversations on a chat application, the statements in the conversation are processed using sentiment analysis, and the resulting behaviour is programmed into autonomous agents. The installation converts conversational elements into creatures by using sentiment analysis to derive behaviour and fractals to generate a unique appearance. The appearance and behaviour of the agents are all programmed in Touchdesigner’s GLSL. The agents' behaviour changes over time according to conversations. As the users converse each statement generates a set of agents whose behaviour is based on the sentiment analysis score of the statement. Inside the digital visualization, the user statements agents will interact with each other. Quiet-lake-23602 was a proposed installation that I developed as part of my internship at Derivative the Toronto-based company that developed Touchdesigner.

Role: Touchdesigner Developer (Intern)
Organization: Derivative
Technology:
Touchdesigner, GLSL, Python

Behaviour

The programming of this behaviour was inspired by flocking behaviour seen in Boids an artificial life program, developed by Craig Reynolds. In Reynolds’ simulation, the simplest variation has three rules in basic flocking rules Separation: steer to avoid crowding,  Alignment: steer towards the average movement and Cohesion: steer to move towards the average position (center of mass) of local flockmates. The sentiment score is used to manipulate various flocking behaviour to create fear, anger, joy or sadness behaviours.

Anger: An angry agent will push agents away. It still follows the other rules, but its presence disrupts the flow of the other agents in the flock. 

Sadness acts a speed limit to all the other behaviors reducing the overall velocity. Sad boids are unlikely to flock and are unable to flow with nearby flocks.

Fear: When a statement has a high fear score the agent created is more aware of predators. It is less likely to be eaten by predators and more likely to break away from the flock when a predator nearby

Joy: When a statement has a high joy score the agents will flock closer together and move at a similar velocity as its flock.

Data flow and installation diagram

The web components of this installation were created using Node.js, JavaScript, and HTML, the project contains a central server hosted on Heroku. The node.js script uses socket servers to connect and relay messages to the socket-clients web pages. To capture the conversation, a middleware script using a socket-client-server is used to relay stored messages on the Heroku server to a localized PC at the installation. This script then broadcast the messages to Touchdesigner using OSC. The sentiment analysis is performed and the visualization is rendered using Touchdesigner’s GLSL nodes  A diagram of the installation can be seen below.

Agents, Levels & Fractals

As a participant enters the chat room space a creature is created in the digital ecosystem. This creature is representative of the participant’s role in the conversation, to create and consume information. This creature emits smaller creatures that behave in a way that reflects the sentiment of the statements the participant creates. The other creatures consume these sentiments, and the sum of the sentiments is tabulated into a sentiment score. This score is used to modify their own behaviour and appearance. One more tier of life exists that acts like a collector to clear old statements and create space for new creatures to emerge. The statements are temporal and only persist through the appearance of the creatures that consume them and their behaviour. The appearance of each creature in this ecosystem is represented by a fractal. Each fractal is calculated in the material shader based on the sentiment score stored within each creature. The fractal iteration and size of the agent are calculated based on the life span. As the lifespan increases so do the complexity of the fractal. Like the appearance, the behaviour is determined by referencing the sentiment analysis score. The user's written statements are processed using a custom sentiment analysis component created in Touchdesigner.

Prey/ Words

Predator 1/ Users and Consumers

Predator 2/ Cleaner

Developing The Sentiment Component

The sentiment analysis component for this installation was a custom Touchdesigner component created using a lexicon created by the National Research Council Canada. A predetermined lexicon of 14,000 English words that are graded with sentiments values for fear, anger, anticipation, trust, surprise, positive, negative, sadness, disgust, and joy. Other solutions and lexicons were tested but were not practical to use, many solutions are business oriented and have limited calls to their server, are very expensive for paid tiers, and can not account for negated statements. The customized component works by tabulating the sentiment score of the individual words present in each statement but the approach also can not account for negated statements. The video below is a test of the comparison of the sentiment analysis component comparison. Since this project was completed in 2019, Natural language processing and sentiment analysis has improved significantly and the following tools are out of date.

hand, they those righteous

again anyone selection

because who endures

The haiku generator

Quiet-Lake-23602 also has a haiku generator, it attempts to feed back into the system with a series of haikus generated using the words said in the conversations. The feature uses npm syllable to count syllables. When the total number of unique words stored exceeds 1000 words the server starts sending haikus over OSC to Touchdesigner to render. This was a trial feature to experiment with generative text, it lacks natural language processing and has many grammatical issues though it does sometimes generate interesting results. In 2022, a haiku generator can easily be replicated using a service like ChatGPT.

blame but matters pain

foresee demoralized toil

exercise, laborious

righteous loves avoid

nor denouncing advantage

abandoned pleasure

Sentiment analysis API/ Component