Like Ulysses’ house, Pome was built around a bed.
As soon as Caballero composed the lines “I’m a child at the foot of your bed…hoping to be let in,” she felt occupied by them, writing them down over and over as she searched for ways to shape them into a poem.
Caballero realized they were an endless draw loop—scratching my surface in new ways with each run.
She drafted Pome’s verse as she wrote the code behind its visuals, which are meant to evoke the emotional entrapment of longing. Every single word that functions as a javascript command is embedded into the lyrical text, celebrating language’s elasticity— words faithfully serve both technical and artistic expression.
Code is a scripted set of instructions. Poems are scripted sets of suggestions. Yet, the visuals code generates are open to interpretation, like poetry.
From concrete orders—such as code, grammar, and syntax—open-ended, emotive communication emerges. Biology, too, functions according to strict rules, with infinite outputs. From the procedural, the visceral.
Generative artworks typically consist of the visuals that result from underlying instructions. But Pome is designed to look like an actual p5.js work screen, where both input and output are given equal weight.
The effort to compose can be as meaningful as the compositions we create.
Released on the occasion of the Tribute to Herbert W. Franke.
+
//**************
// Pome
//**************
let Word = "want" // I'll create the background of this canvas once,
let Want = "everything" // so listen up--
let Everything = "unthinkable" // it was startling yet sought, like the striking of a match.
function setup() { // Now, burnt, I can't reset to a point before red begins.
createCanvas(1920, 2160); // I am drawn to, drawn by, drawn from--
background(' ghostwhite') } // a newly unveiled translation of original sin.
function draw() { // Word as want but also as the cliff of my throat unable to say
fill (' red'); // how everything hides in the ghost white bite of your teeth.
translate (960, 1080); // I unthink to function, delete so I might breathe.
rotate (frameCount/15); // But no matter how I stand I remain
textFont ('perpetua'); // a child at the foot of your bed,
textSize (160); // dragging a tattered indigo rabbit,
text (Word,0,0); // hoping to be let in.
fill (' indigo'); // If I type in another language, can I frame truth less brutal?
translate (220, 0); // No. Si lo cuento en español, juro que es peor.
rotate (frameCount/80); // Es peor.
textFont ('brutal type'); // Dark fonts cycle through me
textSize (80); // like urgent news demanding to be printed--
text (Want, 80, 0); // algorithmic, parasitic, and yet, lyric.
fill (' darkred'); // I rotate the viral vowels of your name forming tercets,
translate (250, 50) // couplets. Become the only contestant in a daytime gameshow
rotate (frameCount/200); // who spins the wheel, yells the phrase, takes the prize--
textFont ('news cycle'); // until, filled and resized, I find
textSize (90); // I've played hard enough to exorcize.
text (Everything, 180, 0); // I shout loud to be heard beyond perpetual gyre:
}
// someone, please, text me the code
// that shuts this circuitry off.