QUIET-LAKE-23602, 2019,
Interactive Installation

Artificial Life, Sentiment Analysis, Real-Time Rendering

Quiet-Lake-23602 is an interactive installation composed of two components: a projection-based visualization and a web interface. The work explores the real-time simulation of ecosystems emerging from online communication, examining how human presence and interaction can be observed within digital networks. The project draws on the concept of media ecology, which examines how media and communication technologies shape human perception, behavior, and cultural values. Media theorist Neil Postman describes media ecology using the metaphor of a Petri dish, in which a medium functions as the environment within which a culture grows (Postman, 2000). In this framing, technology acts as the growth medium that influences the behavior of organisms within it.

Quiet-Lake-23602 applies this metaphor by constructing a virtual Petri dish representing an online community. The installation uses sentiment analysis and artificial life systems to generate autonomous agents that are created by, influenced by, and inhabit the medium of the internet. The system generates dynamic ecosystems by analyzing conversations from a chat application. Each statement is processed through sentiment analysis, and the resulting scores are translated into behavioral parameters for autonomous agents. Conversational elements are transformed into creatures whose behaviors are sentiment-driven, while fractal systems generate unique visual forms. Agent appearance and behavior are implemented in TouchDesigner using GLSL. As conversations evolve, new agents are generated, and existing agents adapt over time, interacting with one another within the visualization according to sentiment-derived behavioral rules. Quiet-Lake-23602 was developed as a proposed installation during an internship at Derivative, the Toronto-based company behind TouchDesigner.

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

Behaviour

The programming of this behavior was inspired by flocking behavior observed in Boids, an artificial life program developed by Craig Reynolds. In Reynolds’ simulation, the simplest model of flocking is governed by three basic rules: separation, steering to avoid crowding local agents; alignment, steering toward the average direction of movement; and cohesion, steering toward the average position (center of mass) of nearby flockmates.

In this project, sentiment scores are used to manipulate these flocking behaviors, producing emergent patterns associated with emotional states such as fear, anger, joy, and sadness.

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 as a speed limit to all the other behaviors, reducing the overall velocity. Sad agents 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 more likely to break away from the flock.

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 developed using Node.js, JavaScript, and HTML. The project includes a central server hosted on Heroku. A Node.js script uses socket servers to connect to and relay messages between socket-client web pages. To capture and transmit conversations, a middleware script running a socket client–server relays stored messages from the Heroku server to a local PC at the installation site. This script then broadcasts the messages to TouchDesigner using OSC. Sentiment analysis is performed and the visualization is rendered using TouchDesigner’s GLSL nodes. A diagram of the installation is shown 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 behavior and appearance.

An additional 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 behavior.

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 lifespan; as the lifespan increases, so does the complexity of the fractal.

Like the appearance, the behavior 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 developed by the National Research Council Canada. The lexicon contains 14,000 English words, each graded with sentiment values for fear, anger, anticipation, trust, surprise, positive, negative, sadness, disgust, and joy. Other lexicons and solutions were tested but proved impractical: many are business-oriented, have limited server calls, are expensive for paid tiers, and cannot account for negated statements.

The customized component works by tabulating the sentiment score of the individual words in each statement, although it also cannot account for negated statements. The video below demonstrates a test comparing the performance of the component. Since this project was completed in 2019, natural language processing and sentiment analysis tools have improved significantly, and the tools used in this project are now outdated.

hand, they those righteous

again anyone selection

because who endures

The haiku generator

Quiet-Lake-23602 also includes a haiku generator, which attempts to feed back into the system by creating haikus from words spoken in the conversations. The feature uses npm syllable to count syllables. When the total number of unique words stored exceeds 1,000, the server begins sending haikus over OSC to TouchDesigner for rendering. This was an experimental feature for generative text; it lacks natural language processing and contains many grammatical errors, though it occasionally produces interesting results. With modern tools, a haiku generator can be easily replicated using services like ChatGPT.

blame but matters pain

foresee demoralized toil

exercise, laborious

righteous loves avoid

nor denouncing advantage

abandoned pleasure

Sentiment analysis API/ Component