Fictional Lullaby

Licia He , 2023

Fictional Lullaby is a generative art program by Licia He, to be released through +GRAPH, a Feral File group exhibition curated by Casey Reas.

30 unique plotter-rendered paintings are created for this exhibition, along with millions of other compositions that are embedded in the original code. The exhibition opens on Nov. 9th, 2023, with 22 sets (physical painting + NFT) available to collect on Nov. 16th, 2023.

Follow @Licia_He and Feral File for project updates and collections information.

Fictional Lullaby is a generative painting algorithm that captures thoughts at night. It tells silent yet intense stories about the head-spinning journeys my mind takes when the last lamp goes off.

In these sleepless moments, I close my eyes to see. I see lifeless galaxies that trap me with all of their hostilities. I see uncertainty growing into monsters and anxiety devouring time. And the rain starts. I dissolve. But they are only part of the picture. I also see bright stars gleaming, colorful clouds dancing. Sparks are shining and blooming like fireworks. I move faster than light.

Fictional Lullaby depicts these thoughts. It paints emotional tales where laughter and tears intertwine, where I am both the heroine and the villain. It is my lullaby, murmuring "sweet dream!" and "why?"

This project page documents Fictional Lullaby with many (lazy-loading) examples. Almost all images displayed on this website are test outputs except for images in the Edition Section. Click the image to view a larger version. Click the button to view additional examples.

Sample Output
Background and Concept

I started Fictional Lullaby with the intention of creating a view where energetic curves and sharp lines coexist. While sketching and developing, I kept searching for my connection to this abstract and blurry view. Where did I "see" it? How did it appear in my mind?

One night, I realized that Fictional Lullaby is a piece about night, about how my thoughts wander and twist before the sun rises. I have never been a morning person. Evening hours are my work, play, and thinking time. While I enjoy being productive and creative before bedtime, insomnia becomes a frequent visitor.

When I cannot fall asleep, my mind speeds up. It can build vast universes or produce haunting sadness. It can travel to the most beautiful imagination, then instantly jump into the deepest fear. Fictional Lullaby is a piece about these moments when I am in between sleep and wakefulness, dream and reality. They are dark fairytales, science fiction, and self-memoirs to me.


Fictional Lullaby is an interplay of energetic curves and strong straight lines. Each output features the following elements: 1) A group of "free-flowing" curves that exhibit unique characteristics. 2) arcs and straight lines. 3) a triangle or a rhombus, symbolic of eyes. 4) dots, symbolic of stars.


There are 4 types of curves in the system. They are all long cubic B├ęzier curves, yet each exhibits unique characteristics.


To express the head-spinning feeling associated with Fictional Lullaby's theme. I created color palettes that are strong and contrasting. Fictional Lullaby features 10 sets of fully generative color rules. Each set consists of 5 rules that produce endless combinations of colors. If you want to read more detailed documentation about my color-selecting approach, head to the documentation of my open-sourced tool, Color Rules Generator, or this documentation of Drifting Dreams.

Plotting Fictional Lullaby

Fictional Lullaby is a piece intended to be viewed on screens and as plotter-rendered paintings. A selection of 30 outputs will be plotted with mixed watermedia on paper using Axidraws.

Connecting Screen and Paper

When I started creating plotter-rendered generative paintings in 2019, the difference between my digital renderings (SVG displayed on screens) and physical renderings (paints on paper) was substantial. The digital renderings were demo displays for me to preview the composition. They feature random and basic palettes, "speak" in the plotter language where only straight lines exist (plotting requires vector information. Therefore, plotter instructions mainly consist of arrays of coordinates, i.e., straight lines). During the plotting process, new color palettes would be assigned, and lines would merge into solid blocks.

In 2021, I released Endless Monologue through the -GRAPH exhibition. In that collection, my digital renderings were no longer merely demo displays. They became the primary outputs to be viewed through the online exhibition. I built connections between the digital and physical renderings by roughly aligning the use of color and transforming lines into solid blocks. The plotted results appear delightfully different from the digital results while sharing the same spirit.

In Fictional Lullaby, I further strengthened the connection between my digital and physical outputs. My goal is not to make the digital and physical outputs look identical. They each have their unique characteristics that I want to amplify and cherish. My robots are not here to replicate but to create. I enjoy adding improvisations during the plotting process. For instance, instead of using more standard and stable mixing formulas like CMYK to achieve more accurate replications of the digital rendering, I prefer to create palettes with a diverse range of paints and pigments intuitively, resulting in colors that are related but not identical to the digital version.

With that said, I do hope to provide viewers with more clues to connect the physical and digital presence of this piece. By default, the Fictional Lullaby software renders in the [ Paint Rendering Mode ], where a painterly texture is displayed. In the software, press the "R" key to toggle between this texture-rich view and the [ Structure Rendering Mode ].

These clean, vector-like outputs in the [ Structure Rendering Mode ] are closer to what a plotter (the machines) would "see." But in reality, plotters only "speak" the language of straight lines. To plot these digital renderings, I wrote a Python-based algorithm to transform shapes into lines. Each shape becomes a collection of hatch lines, where the size of my brush determines the thickness of the line. The [ Line Rendering Mode] outputs represent instructions for plotters. After this conversion, plotters and art materials perform the magic of physical rendering together, creating the final paintings.

Finding the Perfect Material

Physical outputs of Fictional Lullaby are created with mixed watermedia on watercolor paper (Arches, 300gsm hot pressed). They are 25.4 cm (10 in) wide and 35.6 cm (14 in) tall, with 1.5-3cm (0.6-1.2 inch) borders on each side (paper size: 30.5 x 40.6 cm / 12 x 16 inches). Because of their complexity and intricacy, they are the most challenging pieces I have plotted so far.

The first significant difference between Fictional Lullaby and most of my previous works is the number of unique colors used. I have been using a 6-color palette previously, whereas Fictional Lullaby needs to have more colors to create a chaotic and magical vibe. As a result, each Fictional Lullaby utilizes a 16-color palette. In these 16 colors, there are three specialty colors. 1) Stars are created with 2 colors that have shimmering/glittering effects. 2) Eyes are created with liquid leaf: a metallic, reflective paint that needs to be applied manually.

So far, most of my plotter paintings are made with 6-color palettes. Each color is a mixture of fountain pen ink and Akua liquid pigment (a printmaking paint formulated for monotype printing). Palettes created this way are vivid and lightweight, as the dye in the fountain pen ink directly binds with the paper.

Although I was happy with the vivid color, I wanted a denser mixture. Fictional Lullaby is a collection about night, so I envisioned something stronger, heavier, and more textured. To find the most ideal paint for this collection, I went through many rounds of testings using various water-based medium, mixing methods, and plotting settings.

Eventually, I chose a dense mixture of concentrated watercolor and acrylic medium. This thick mixture requires constant stirring and refilling. The brush refills after every inch (2.54 cm) of plotting, which pushes the plotting time to be in the 15-24 hours range. Yet, the intense pigmentation and glossy view depict the vibe of Fictional Lullaby perfectly.

Development History

Fictional Lullaby is a Javascript program with dependency to the Javascript Clipper Library. WebGL is required for viewing.

There are two built-in interactions in Fictional Lullaby: 1) press the "R" key to toggle between paint rendering view and structure view. 2) press "Space" or "Enter" key to generate a new output. Depending on the complexity of the output, it could take 3000-15000 ms to render the new output.

Here are some chronically ordered debugging views, each serves as a milestone for this adventure.


While the Fictional Lullaby software can create endless variations, only 30 outputs will be plotted. These 30 outputs are curated from roughly 5000 outputs. Here are these selected editions in their different rendering modes. From left to right: 1) Paint Rendering, 2) Structure Rendering, 3) Line Rendering, 4) Physical Rendering, and 5) Additional records (color chart, test plot, etc.).