[PPPPPPPP[PPPPPbAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/EhfxUubQUaaPp8DZ3_4ALhcZQUHC8HgWeQeAxfwUXoAvida y sombra y luz y muertehttps://highlight-creator-assets.highlight.xyz/main/base-dir/467b10e0-ab15-463d-b86d-60006850aa7a/onChainDir
variaciones del yo (variations of self) is a work where I have traveled many mental spaces, memories, reflections and emotions. It deals with affection, meaning and identity. It is visually based on the aesthetic principles of what I explored in Entretiempos, which was heavily based on the work of Sonia Delaunay and her husband Robert. I was interested then, as I am now, in expanding the possibilities of such aesthetical space (the conceptual space is something I can't get into, since it belongs in nature to the creator of the concept - I have rather went on to develop my own thoughts around these shapes and colours). But in this occasion I am more interested in the dynamics and interaction of the piece, on its flow, on its changing nature. This work that you read now about is made possible by the generous support and patronage of JDH, one of Entretiempos' largest collectors and a true patron, who commissioned a piece after Entretiempos' aesthetics and gave me all the freedom. To him goes my full gratitude. This is not a project to be grasped from a still, nor something to approach with a short clip.
This project is about life, and as such it requires the experiencer to allow themselves a moment of disconnection and to just watch for a while. The braver will perform it, since the project is like a little instrument that one can influence, instilling a rhythm to it, exploring its corners, expanding on its little infinite universe. I see it more like classical music, progressive rock, fusion jazz or any other rich and varied musical genre, than easy listening pop. I don't mean to undervalue pop at all. Just that the listening experience and the richness one may discover has typically more layers in other genres. Same with this artwork. A glance will not suffice. A still is a lie. You have to let it develop in front of your eyes, and let your mind wander. Progressive generative art. The time it requires may start with reading this text.
This note about the artwork can very well be read à la Cortázar's Rayuela: the parts are not meant to go in any particular order. Sadly, this is a static text: otherwise I would make it appear in a different order every time you read it. Thus is the nature of ideas that are intertwined, and the printing of them in a linear text is an illusion that brings the reader's mind to a false idea of causality, sequence or hierarchy. The same goes for the artwork itself. The succession of different parts in the piece is not dictated by some a priori meaning or a given temporal structure. The piece encourages the performer/viewer to give in to its nonlinear nature. With this warning, you can read every section at your own will. You can also not read anything, for the most important is how you react to the artwork and the dialogue you establish with it.
## Identidad / identity
I am interested in what identity is and how much is it related to our will about ourselves. As this piece shifts the view constantly, building up new angles and fragmenting the total scope of the work into smaller views that live next to each other, different realities seem to emerge. It's just details and points of view, of course, but these views are all we have to work with when we face our lives. We believe that we are grounded on some truths, yet they may be different according to either time, location, status and a long number of other things. We believe we are grounded in our identity, but if we see that other viewports paint a different image, is our view on life part of our identity, built by ourselves, or is it a given? Has it chosen us? As artificial entities develop a behaviour that is increasingly complex, we will start seeing approaches to topics that we thought were part of our nature. If a non-organic entity, not alive, develops similar approaches, what is it which makes us what we are? Is there anything specific, exclusive to us?
## Afecto + significado / affection + meaning
Affections are the fabric of life, a fabric that spans multiple layers of meaning. Meaning is the fabric of life, a fabric that spans multiple levels of affections. We are born into a system of meaning and affection, and as we mature it is our responsibility to build our own, taking or discarding what we are offered, and creating our distinct layers.
The process of crafting and giving our meanings is an interactive one with our life context. We have family, friends, work colleagues, people whose meanings are put in motion in the interaction they have with us. Meanings are built from our life experience, our emotions, our desires, our regrets, and their reciprocal action with the entities around. Meanings are imbued with affection: we have affection for those close to us, our important relationships, the ones that carry more meaning and possibly the ones that also help us realise our own meaning. Affection also means disease, which is an interesting concept: love can be paired with something that you need to cure from. The love meaning of affection is probably the best vehicle to navigate the disease meaning of affection in a broad sense.
The very many ways of meaning-making in life and the very many ways of living our affections are what this work wants to reflect upon. Concentric circles aim to represent people, animals, entities of all sorts with all their layers of meaning. As they get close to other entities, there are interactions, collision of meanings that create bursts of affection - be it fond affection or disease. But the encounter of different ways of making meaning creates always a situation for an affection.
## Afecto + identidad / affection + identity
Affection belongs to the category of emotional things. The affections we choose to give and those that we receive become over time a basis for what we call our identity. Who and what we are is a vehicle we build to stand firmly in it as we sail the waters of life. But emotions are time-based, developing creatures by nature, and hence our identities are subject to the same motion. Are they? Also, external affections end up shaping our identity: if that is so, is that our identity? The question of whether we are our identity or not arises: is the identity something we truly are, something that *is*, or is it something that comes to us?
## Significado + identidad / meaning + identity
The ways of making meaning we choose and express in our relationship to the world are part of our identity, maybe even building blocks of it. We decide how to make sense of situations, what to express from a given situation. We also receive much stimuli from our environment, and end up modifying, voluntarily or involuntarily, our ways of making meaning, letting the environment become a part of our identity. But is there a part of our identity that is isolated and fully independent from our environment? Are the ideas that surround us the ones that make our identity? We add them sometimes in their readily available form, sometimes after careful consideration (digestion?). But it seems that said ideas become part of us. Or do we flow over time as a collection of ideas that were before us? If our ideas existed before us, and we express them as a vehicle, as memes take over culture and mix and evolve into new ideas, what is that remains for us to be?
We are used to thinking about ideas, reasoning and also building identities as proof of self, typically confined to a subsection of all the living creatures. But if ideas preexist and can pop up in several different species, shaped by the degree of complexity of the system it emerges in, maybe they will start appearing in systems of complexity that we didn't see before, such as complex enough machines. If the machines that exhibit a most complex behaviour start developing and expressing the same ideas, is that a proof that ideas exist prior to us? They can also be a consequence of our environment and our systems of values (affections). If these affections, ways of making meaning pop up in different types of complex systems, what does that say about our identities? Will we share identities with those other affection - meaning expressing entities?
test output still; sometimes, the entities are all pixelated except for the main, moving entity - sort of a metaphor for one's own focus. Not everything can be in focus at all times - meaning, affection, identity
## Meaning
Meaning is not constant in all directions at the same time. One can't make sense of all the things that happen at the same time; rather, one needs to focus their attention to apply their affections + identity to the question in focus, to make meaning of it. Constant, absolute meaning doesn't exist - or maybe it does prior to us making it. Thus, perhaps meaning is something we don't make, we just discover. Or it comes to us.
## This work
From a visual & interaction standpoint, this work is built around the following concepts:
* Evolving variable spatial resolution: the work creates a non-uniform varying spatial resolution field, and it changes it in a cyclic manner and tied to the movement of one main concentric ring group (the self). Higher resolution will be centered around the self, and it will move around with it, while losing resolution (becoming a coarser representation of the underlying image) as we look further from the self center. This is a play at the fact that we can never fully see in life at full resolution in all directions, both literally and metaphorically. Human vision is detailed at the focal point, imprecise at the edges. Our perception of the events that take place around us follow the same logic: while we give our attention to a certain topic, person or moment, everything else is kept known but unattended. The work pixelates the views, again in cycles, offering views that range from broadly detailed to broadly coarse. Our emotions work in the same way: hard to describe precisely, but when in focus we can see them clearly with our inner self. The viewer / performer of the piece can alter the resolution parameter via the q keyboard command (see the controls section).
* Cyclic movement of the concentric ring groups and the partial painting of their intersections: these ring groups embody the notion of self and others. Many selves, of many different natures, crossing paths and sparkling interactions. Interactions are short lived: one can't make meaning of every interaction at the same time. Sometimes the moving bodies will stop and display a full interaction set at that moment in time. There is no such thing as, again, all the possible interactions at one single time. The bodies need to move to encounter themselves, in physical or idea space, to interact. The viewer / performer may trigger the full interaction set / motion with the f command.
* Variable zoom: the piece will forever shift zoom levels. Sometimes it will only show a closeup of the ring groups, while zooming out also to a broader view where the infinite fields that expand around our existence will show their own movement and patterns. The ripples of our existence, the echoes, or whatever it may suggest you. One can choose how to navigate their life. The work lets the experiencer zoom in/out with the a command, displace the view with the arrows (also click+drag) and, most importantly, it lets the experiencer perform the work. More on that below.
* Varying viewports: the work has different view states. There is a base image composed of the moving ring groups, which is then viewed through different lenses. A split view in 4 dynamic triangular sections, each with a different zoom, displacement and resolution values. A split view in a changing grid of rectangles that also exhibit different view values. We always perceive life in different ways, a perception altered by many factors.
* Performative nature of the piece: the piece will cycle on its own through all the possible combinations of states, and will do so in a way that it will never repeat one single combination ever. However, the most rewarding experience comes when one listens to music and performs the piece to it. Using the "r" command one gets a new set of view parameters (zoom, viewports), truly experiencing the progressive generative nature of the piece this way. Also consider playing with the resolution, speed, zoom & displacement (see controls).
* Auto-perform to a given rhythm: music is central to me, one of the most meaning-full and affectionate elements in my identity: to honor that, and since it's about affection and meaning, the piece lets you indicate a tempo (by following a beat pressing "i" repeatedly at least 8 times at the keyboard ) and the piece will then autoperform to that tempo. A way to sync it to a music you want to express some affection with, to explore your meaning, to possibly create bits of it as you interact with the output of your performance.
All these elements bring the artwork into an experimentation / interaction space that, as I mentioned at the beginning, brings to me ideas of progressive rock / classical music. For the lack of a better name, I like to call this progressive generative work. It's an artwork where time flows matter, where each different part in time is connected and builds up to a larger thing. It makes you travel through different visual scapes, much as a progressive rock track may have you wander in three or four different musical/conceptual landscapes through a 10 minute journey. Or classical music, where a symphony will create rich tapestries of different motifs and themes and variations, and will ultimately tie them all through some sort of composer's wizardry.
Finally, this piece is the first time I don't code any pre-selected palette. I left all colour to a little algorithm I wrote, which is in itself a palette generator. It is set so that the chance that there will be two pieces with the exact same colours is very low. Might happen, but almost impossible.
## Controls
The project exhibits a range of controls to interact with it / perform it (highly encouraged).
s save image
v start/stop saving video (webm).
0 (zero) toggle base image view/split.
8 fast mode,
9 normal auto mode.
r perform the piece (trigger a view change where several parameters change - or just think of it as getting a new perspective over your life).
f toggle stop/motion and paints all intersections when stopped.
"o" (as in Otello) followed by 1-4 to see all the layers that go into creating the artwork.
Keep pressed +/- after the following commands to alter them: k saturation, t timeline (move forward/backward in time), q pixellation/variable resolution, "a" field of view/zoom.
Use arrows to move around.
If you are listening to a song, press "i" with every beat of your song and after 8 consecutive beats the piece will autoperform to that beat.
Also, tune the image brightness, contrast, noise level, crispness and gamma using z, x, n, e, and g respectively, followed by keeping +/- pressed to alter their values.
## URL parameters
You can append some parameters to the live view URL to set/alter certain things. The first parameter must be appended with a trailing ?, the others with & (see examples below)
pd=N (N is 1 or 2 by default, depends on device). Sets resolution. Higher N, higher resolution. If you go too high, you will get a blank image (exceeded the capabilities of your hardware). Stills and video will be recorded at this resolution.
sh.kBW=N (N is 0.2 by default, can take between 0 and 1 in decimal numbers). Sets saturation. Set it to 1 if you want to see your piece in black and white.
qDK=N (N is between 0.01 and 0.15 by default, you can try anything and see the result). Sets distortion coefficients.
sh.shCon, sh.shBr, sh.shG alter contrast, brightness and gamma, respectively. E.g.: &sh.shCon=1.5&sh.shBr=-0.05&sh.shG=2.5
sh.shBlEqC=N (N=0.5 by default). Alters the amount of noise. Try any value.
For example, based on mint #0, we have:
Higher pixel density (4), full black and white (sh.kBW=1):
https://generator.artblocks.io/0x0000000a77593cda3f3434454ae534163fe1a431/0?pd=4&sh.kBW=1
Partially desaturated, increased gamma:
https://generator.artblocks.io/0x0000000a77593cda3f3434454ae534163fe1a431/0?sh.kBW=0.7&sh.shG=4
Finally, in life one has typically a narrow perspective. If you _widen_ your view, you may see life and its interactions broaden their palette into every possible colour.
variaciones del yo (variations of self) is a work where I have traveled many mental spaces, memories, reflections and emotions. It deals with affection, meaning and identity. It is based on the aesthetic principles of what I explored in Entretiempos, which was heavily based on the work of Sonia Delaunay and her husband Robert. I was interested then, as I am now, in expanding the possibilities of such aesthetical space (the conceptual space is something I can't get into, since it belongs in nature to the creator of the concept - I have rather went on to develop my own thoughts around these shapes and colours). This work that you read now about is made possible by the generous support and patronage of JDH, one of Entretiempos' largest collectors and a true patron, who commissioned a piece after Entretiempos' aesthetics and gave me all the freedom. To him goes my full gratitude.This is not a project to be grasped from a still, nor something to approach with a short clip.
This project is about life, and as such it requires the experiencer to allow themselves a moment of disconnection and to just watch for a while. The braver will perform it, since the project is like a little instrument that one can influence, instilling a rhythm to it, exploring its corners, expanding on its little infinite universe. I see it more like classical music, progressive rock, fusion jazz or any other rich and varied musical genre, than easy listening pop. I don't mean to undervalue pop at all. Just that the listening experience and the richness one may discover has typically more layers in other genres. Same with this artwork. A glance will not suffice. A still is a lie. You have to let it develop in front of your eyes, and let your mind wander. Progressive generative art. The time it requires may start with reading this text.
This note about the artwork can very well be read à la Cortázar's Rayuela: the parts are not meant to go in any particular order. Sadly, this is a static text: otherwise I would make it appear in a different order every time you read it. Thus is the nature of ideas that are intertwined, and the printing of them in a linear text is an illusion that brings the reader's mind to a false idea of causality, sequence or hierarchy. With this warning, you can read every section at your own will. You can also not read anything, for the most important is how you react to the artwork and the dialogue you establish with it.
Identidad / identity:
I am interested in what identity is and how much is it related to our will about ourselves. As this piece shifts the view constantly, building up new angles and fragmenting the total scope of the work into smaller views that live next to each other, different realities seem to emerge. It's just details and points of view, of course, but these views are all we have to work with when we face our lives. We believe that we are grounded on some truths, yet they may be different according to either time, location, status and a long number of other things. We believe we are grounded in our identity, but if we see that other viewports paint a different image, is our view on life part of our identity, built by ourselves, or is it a given? Has it chosen us? As artificial entities develop a behaviour that is increasingly complex, we will start seeing approaches to topics that we thought were part of our nature. If a non-organic entity, not alive, develops similar approaches, what is that makes us what we are? Is there anything specific, exclusive to us?
Afecto + significado / affection + meaning:
Affections are the fabric of life, a fabric that spans multiple layers of meaning. Meaning is the fabric of life, a fabric that spans multiple levels of affections. We are born into a system of meaning and affection, and as we mature it is our responsibility to build our own, taking or discarding what we are offered, and creating our distinct layers.
The process of crafting and giving our meanings is an interactive one with our life context. We have family, friends, work colleagues, people whose meanings are put in motion in the interaction they have with us. Meanings are built from our life experience, our emotions, our desires, our regrets, and their reciprocal action with the entities around.Meanings are imbued with affection: we have affection for those close to us, our important relationships, the ones that carry more meaning and possibly the ones that also help us realise our own meaning. Affection also means disease, which is an interesting concept: love can be paired with something that you need to cure from. The love meaning of affection is probably the best vehicle to navigate the disease meaning of affection in a broad sense.
The very many ways of meaning-making in life and the very many ways of living our affections are what this work wants to reflect upon. Concentric circles aim to represent people, animals, entities of all sorts with all their layers of meaning. As they get close to other entities, there are interactions, collision of meanings that create bursts of affection - be it fond affection or disease. But the encounter of different ways of making meaning creates always a situation for an affection.
Afecto + identidad / affection + identity:
Affection belongs to the category of emotional things. The affections we choose to give and those that we receive become over time a basis for what we call our identity. Who and what we are is a vehicle we build to stand firmly in it as we sail the waters of life. But emotions are time-based, developing creatures by nature, and hence our identities are subject to the same motion. Are they? Also, external affections end up shaping our identity: if that is so, is that our identity? The question of whether we are our identity or not arises: is the identity something we truly are, something that *is*, or is it something that comes to us?
Significado + identidad / meaning + identity:
The ways of making meaning we choose and express in our relationship to the world are part of our identity, maybe even building blocks of it. We decide how to make sense of situations, what to express from a given situation. We also receive much stimuli from our environment, and end up modifying, voluntarily or involuntarily, our ways of making meaning, letting the environment become a part of our identity. But is there a part of our identity that is isolated and fully independent from our environment? Are the ideas that surround us the ones that make our identity? We add them sometimes in their readily available form, sometimes after careful consideration (digestion?). But it seems that said ideas become part of us. Or do we flow over time as a collection of ideas that were before us? If our ideas existed before us, and we express them as a vehicle, as memes take over culture and mix and evolve into new ideas, what is that remains for us to be?
We are used to thinking about ideas, reasoning and also building identities as proof of self, typically confined to a subsection of all the living creatures. But if ideas preexist and can pop up in several different species, shaped by the degree of complexity of the system it emerges in, maybe they will start appearing in systems of complexity that we didn't see before, such as complex enough machines. If the machines that exhibit a most complex behaviour start developing and expressing the same ideas, is that a proof that ideas exist prior to us? They can also be a consequence of our environment and our systems of values (affections). If these affections, ways of making meaning pop up in different types of complex systems, what does that say about our identities? Will we share identities with those other affection - meaning expressing entities?
Meaning:
Meaning is not constant in all directions at the same time. One can't make sense of all the things that happen at the same time; rather, one needs to focus their attention to apply their affections + identity to the question in focus, to make meaning of it. Constant, absolute meaning doesn't exist - or maybe it does prior to us making it. Thus, perhaps meaning is something we don't make, we just discover. Or it comes to us.
This work:
The work shows an incessant change of views, in some passages faster, in others slower. At times it zooms out to give a broader view, in other it closes in to inspect in detail the minute consequences of the encounters. It also changes resolution in a cyclic manner: we can never fully see in life at full resolution in all directions, both literally and metaphorically. Human vision is detailed at the focal point, imprecise at the edges. Our perception of the events that take place around us follow the same logic: while we give our attention to a certain topic, person or moment, everything else is kept known but unattended. The work pixelates the views, again in cycles, offering views that range from broadly detailed to broadly coarse. Our emotions work in the same way: hard to describe precisely, but when in focus we can see them clearly with our inner self.
One can choose how to navigate their life. The work lets the experiencer zoom in/out, displace the view and, most importantly, it lets the experiencer perform the work. As if it were a visual instrument, the experiencer can summon the work to change at a given rhythm, can live perform it to the tune of some meaning-full activity to them, etc. The work cycles through different moments of performance itself. as life does if you don't take the reins. Music is central to me, one of the most meaning-full and affectionate elements in my life: to honor that, and since it's about affection and meaning, the piece lets you indicate a tempo (by following a beat pressing a key at the keyboard) and the piece will then autoperform to that tempo. A way to sync it to a music you want to express some affection with, to explore your meaning, to possibly create bits of it as you interact with the output of your performance.
The ring groups that move around may embody the notion of self. Many selves, of many different natures, crossing paths and sparkling interactions. Interactions are short lived: one can't make meaning of every interaction at the same time. Sometimes the moving bodies will stop and display a full interaction set at that moment in time. There is no such thing as, again, all the possible interactions at one single time. The bodies need to move to encounter themselves, in physical or idea space, to interact.
Controls (see project website for URL parameters)
s save image, v start/stop saving video (webm). 0 toggle base image view/split. 8 fast mode, 9 normal auto mode. r/double tap perform the piece. f toggle stop motion and paints all intersections when stopped. Keep pressed +/- after the following commands to alter them: k saturation, t timeline, q pixellation/variable resolution, "a" field of view. Use arrows to move around. o followed by 1-4 to see all images that are used to compose the final work. If you are listening to a song, press "i" with every beat of your song and after 8 consecutive beats the piece will autoperform to that beat.
Finally, in life one has typically a narrow perspective. If you _widen_ your view, you may see life in every possible colour.
siempre en mi, siempre en ti (“always in me, always in you”) is released as part of reGEN, a special charitable auction of generative art to raise funds for Cure Alzheimer’s Fund, curated by Alex Estorick and Foteini Valeonti in collaboration with The Giving Block. 100% of primary proceeds of this project go to the cause.
siempre en mí, siempre en ti (always in me, always in you) is a personal reflection on how Alzheimer's affects the lives of patients and those around them. The illness is in my family and in that of close friends of mine, and this work is more of a raw expression of emotion than anything else. Holding hands with a person who is fading away is a strong experience, one that allows oneself to recalibrate and to, in a way, regenerate one's vision of what life is, what a person is, what relationships are. It's commonplace to hear that a loved one who is already gone is still alive "in our memory". The truth is that this is the case when we are all alive and good as well, but only take notice when there is a crossing over event. We don't see the person almost anymore, but there's a body there that sometimes still reacts. How much of what we ignore that is going on is relevant? Is this song we just played relevant? What do emotions look like when the brain that processes them is failing? Are we ready to understand those, with our limited knowledge of what we are? Is the person still there when there is no sign of them? And when they are not there, why can we not cut the cord? The simple touch of their skin is enough to make the person come alive in that instant in our very memories. Maybe we are in theirs, in that moment, in a shape we don't comprehend.
Visually, the project merely projects faces. Fading, waving. Unstable, some smiling, some sad. A diversity of lives emerges in the piece, exploring with generative techniques the emotions of you, the experiencer of the piece. Maybe it does not resonate with you, but maybe it gives you a chance to connect with those feelings that are otherwise hard to get close to. We see a person and their dreams, their ideas, their memories as dancing colorful geometries. Their fears, ther recurring thoughts. But sometimes they look like a nightmare. Sometimes they are mute. We see some lines where the faces are enclosed. These are a template for a human, the lines that dictate where our facial features should be. But they dance with the memories as time passes by - is our notion of human also a moving target? Sometimes you will see more than one face, an expression of the many lives we might have lived. And at any time, we can summon a view of the piece where we see you in me. _You in me_.
Allowing ourselves to be a companion of someone else's difficult passage is a window into our own humanity. An occasion for regeneration.
Works best on Chromium browsers. Firefox macos has some problem with geometries drawn with p5.js in webGL mode. The piece is graphics intensive and requires a powerful setup to experience it best.
press s to save image
press v to start recording video, v again to finish and download (webm format)
press f to fast forward 100 frames
click mouse, tap on screen or press l (as in loop) to pause/resume the motion
type youinme to see how we all carry each other within ourselves
URL parameters - add a trailing ? if it's the 1st parameter you add, then & for the rest; e.g.
https://generator.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/477000000?pd=4&fs=1&fM=6
pd=N in live view URL to set pixel density to N (N>2 increase resolution)
fs=1 in live view URL to set the artwork to render adaptively to the current viewport size, instead of the default square aspect ratio
fM=x with x any number to make the animation stop at that frame number
pd=N in live view URL to set pixel density to N (N>2 increase resolution)
fs=1 in live view URL to set the artwork to render adaptively to the current viewport size, instead of the default square aspect ratio
fM=x with x any number to make the animation stop at that frame number
siempre en mi, siempre en ti (“always in me, always in you”) is released as part of reGEN, a special charitable auction of generative art to raise funds for Cure Alzheimer’s Fund, curated by Alex Estorick and Foteini Valeonti in collaboration with The Giving Block.
siempre en mí, siempre en ti (always in me, always in you) is a personal reflection on how Alzheimer's affects the lives of patients and those around them. The illness is in my family and in that of close friends of mine, and this work is more of a raw expression of emotion than anything else. Holding hands with a person who is fading away is a strong experience, one that allows oneself to recalibrate and to, in a way, regenerate one's vision of what life is, what a person is, what relationships are. It's commonplace to hear that a loved one who is already gone is still alive "in our memory". The truth is that this is the case when we are all alive and good as well, but only take notice when there is a crossing over event. We don't see the person almost anymore, but there's a body there that sometimes still reacts. How much of what we ignore that is going on is relevant? Is this song we just played relevant? What do emotions look like when the brain that processes them is failing? Are we ready to understand those, with our limited knowledge of what we are? Is the person still there when there is no sign of them? And when they are not there, why can we not cut the cord? The simple touch of their skin is enough to make the person come alive in that instant in our very memories. Maybe we are in theirs, in that moment, in a shape we don't comprehend.
siempre en mi, siempre en ti (“always in me, always in you”) is released as part of reGEN, a special charitable auction of generative art to raise funds for Cure Alzheimer’s Fund, curated by Alex Estorick and Foteini Valeonti in collaboration with The Giving Block.
Visually, the work merely projects faces. Fading, waving. Unstable, some smiling, some sad. A diversity of lives emerges in the piece, exploring with generative techniques the emotions of you, the experiencer of the piece. Maybe it does not resonate with you, but maybe it gives you a chance to connect with those feelings that are otherwise hard to get close to. We see a person and their dreams, their ideas, their memories as dancing colorful geometries. Their fears, their recurring thoughts. But sometimes they look like a nightmare. Sometimes they are mute. We see some lines where the faces are enclosed. These are a template for a human, the lines that dictate where our facial features should be. But they dance with the memories as time passes by - is our notion of human also a moving target? Sometimes you will see more than one face, an expression of the many lives we might have lived. And at any time, we can summon a view of the piece where we see you in me. _You in me_.
Allowing ourselves to be a companion of someone else's difficult passage is a window into our own humanity. An occasion for regeneration.
press s to save image
press v to start recording video, v again to finish and download (webm format)
press f to fast forward 100 frames
click mouse, tap on screen or press l (as in loop) to pause/resume the motion
type youinme to see how we all carry each other within ourselves
URL parameters - add a trailing ? if it's the 1st parameter you add, then & for the rest; e.g.
https://generator.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/477000000?pd=4&fs=1&fM=6
pd=N in live view URL to set pixel density to N (N>2 increase resolution)
fs=1 in live view URL to set the artwork to render adaptively to the current viewport size, instead of the default square aspect ratio
fM=x with x any number to make the animation stop at that frame number
siempre en mí, siempre en ti (always in me, always in you) is a personal reflection on how Alzheimer's affects the lives of patients and those around them. The illness is in my family and in that of close friends of mine, and this work is more of a raw expression of emotion than anything else. Holding hands with a person who is fading away is a strong experience, one that allows oneself to recalibrate and to, in a way, regenerate one's vision of what life is, what a person is, what relationships are. It's commonplace to hear that a loved one who is already gone is still alive "in our memory". The truth is that this is the case when we are all alive and good as well, but only take notice when there is a crossing over event. We don't see the person almost anymore, but there's a body there that sometimes still reacts. How much of what we ignore that is going on is relevant? Is this song we just played relevant? What do emotions look like when the brain that processes them is failing? Are we ready to understand those, with our limited knowledge of what we are? Is the person still there when there is no sign of them? And when they are not there, why can we not cut the cord? The simple touch of their skin is enough to make the person come alive in that instant in our very memories. Maybe we are in theirs, in that moment, in a shape we don't comprehend.
siempre en mi, siempre en ti (“always in me, always in you”) is released as part of reGEN, a special charitable auction of generative art to raise funds for Cure Alzheimer’s Fund, curated by Alex Estorick and Foteini Valeonti in collaboration with The Giving Block.
Visually, the work merely projects faces. Fading, waving. Unstable, some smiling, some sad. A diversity of lives emerges in the piece, exploring with generative techniques the emotions of you, the experiencer of the piece. Maybe it does not resonate with you, but maybe it gives you a chance to connect with those feelings that are otherwise hard to get close to. We see a person and their dreams, their ideas, their memories as dancing colorful geometries. Their fears, their recurring thoughts. But sometimes they look like a nightmare. Sometimes they are mute. We see some lines where the faces are enclosed. These are a template for a human, the lines that dictate where our facial features should be. But they dance with the memories as time passes by - is our notion of human also a moving target? Sometimes you will see more than one face, an expression of the many lives we might have lived. And at any time, we can summon a view of the piece where we see you in me. _You in me_.
Allowing ourselves to be a companion of someone else's difficult passage is a window into our own humanity. An occasion for regeneration.
press s to save image
press v to start recording video, v again to finish and download (webm format)
press f to fast forward 100 frames
click mouse, tap on screen or press l (as in loop) to pause/resume the motion
type youinme to see how we all carry each other within ourselves
URL parameters - add a trailing ? if it's the 1st parameter you add, then & for the rest; e.g.
https://generator.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/477000000?pd=4&fs=1&fM=6
pd=N in live view URL to set pixel density to N (N>2 increase resolution)
fs=1 in live view URL to set the artwork to render adaptively to the current viewport size, instead of the default square aspect ratio
fM=x with x any number to make the animation stop at that frame number
siempre en mi, siempre en ti (“always in me, always in you”) is released as part of reGEN, a special charitable auction of generative art to raise funds for Cure Alzheimer’s Fund, curated by Alex Estorick and Foteini Valeonti in collaboration with The Giving Block.
siempre en mí, siempre en ti (always in me, always in you) is a personal reflection on how Alzheimer's affects the lives of patients and those around them. The illness is in my family and in that of close friends of mine, and this work is more of a raw expression of emotion than anything else. Holding hands with a person who is fading away is a strong experience, one that allows oneself to recalibrate and to, in a way, regenerate one's vision of what life is, what a person is, what relationships are. It's commonplace to hear that a loved one who is already gone is still alive "in our memory". The truth is that this is the case when we are all alive and good as well, but only take notice when there is a crossing over event. We don't see the person almost anymore, but there's a body there that sometimes still reacts. How much of what we ignore that is going on is relevant? Is this song we just played relevant? What do emotions look like when the brain that processes them is failing? Are we ready to understand those, with our limited knowledge of what we are? Is the person still there when there is no sign of them? And when they are not there, why can we not cut the cord? The simple touch of their skin is enough to make the person come alive in that instant in our very memories. Maybe we are in theirs, in that moment, in a shape we don't comprehend.
Visually, the work merely projects faces. Fading, waving. Unstable, some smiling, some sad. A diversity of lives emerges in the piece, exploring with generative techniques the emotions of you, the experiencer of the piece. Maybe it does not resonate with you, but maybe it gives you a chance to connect with those feelings that are otherwise hard to get close to. We see a person and their dreams, their ideas, their memories as dancing colorful geometries. Their fears, their recurring thoughts. But sometimes they look like a nightmare. Sometimes they are mute. We see some lines where the faces are enclosed. These are a template for a human, the lines that dictate where our facial features should be. But they dance with the memories as time passes by - is our notion of human also a moving target? Sometimes you will see more than one face, an expression of the many lives we might have lived. And at any time, we can summon a view of the piece where we see you in me. _You in me_.
Allowing ourselves to be a companion of someone else's difficult passage is a window into our own humanity. An occasion for regeneration.
press s to save image
press v to start recording video, v again to finish and download (webm format)
press f to fast forward 100 frames
click mouse, tap on screen or press l (as in loop) to pause/resume the motion
type youinme to see how we all carry each other within ourselves
URL parameters - add a trailing ? if it's the 1st parameter you add, then & for the rest; e.g.
https://generator.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/477000000?pd=4&fs=1&fM=6
pd=N in live view URL to set pixel density to N (N>2 increase resolution)
fs=1 in live view URL to set the artwork to render adaptively to the current viewport size, instead of the default square aspect ratio
fM=x with x any number to make the animation stop at that frame number
siempre en mí, siempre en ti (always in me, always in you) is a personal reflection on how Alzheimer's affects the lives of patients and those around them. The illness is in my family and in that of close friends of mine, and this work is more of a raw expression of emotion than anything else. Holding hands with a person who is fading away is a strong experience, one that allows oneself to recalibrate and to, in a way, regenerate one's vision of what life is, what a person is, what relationships are. It's commonplace to hear that a loved one who is already gone is still alive "in our memory". The truth is that this is the case when we are all alive and good as well, but only take notice when there is a crossing over event. We don't see the person almost anymore, but there's a body there that sometimes still reacts. How much of what we ignore that is going on is relevant? Is this song we just played relevant? What do emotions look like when the brain that processes them is failing? Are we ready to understand those, with our limited knowledge of what we are? Is the person still there when there is no sign of them? And when they are not there, why can we not cut the cord? The simple touch of their skin is enough to make the person come alive in that instant in our very memories. Maybe we are in theirs, in that moment, in a shape we don't comprehend.
Visually, the work merely projects faces. Fading, waving. Unstable, some smiling, some sad. A diversity of lives emerges in the piece, exploring with generative techniques the emotions of you, the experiencer of the piece. Maybe it does not resonate with you, but maybe it gives you a chance to connect with those feelings that are otherwise hard to get close to. We see a person and their dreams, their ideas, their memories as dancing colorful geometries. Their fears, their recurring thoughts. But sometimes they look like a nightmare. Sometimes they are mute. We see some lines where the faces are enclosed. These are a template for a human, the lines that dictate where our facial features should be. But they dance with the memories as time passes by - is our notion of human also a moving target? Sometimes you will see more than one face, an expression of the many lives we might have lived. And at any time, we can summon a view of the piece where we see you in me. _You in me_.
Allowing ourselves to be a companion of someone else's difficult passage is a window into our own humanity. An occasion for regeneration.
press s to save image
press v to start recording video, v again to finish and download (webm format)
press f to fast forward 100 frames
click mouse, tap on screen or press l (as in loop) to pause/resume the motion
type youinme to see how we all carry each other within ourselves
URL parameters - add a trailing ? if it's the 1st parameter you add, then & for the rest; e.g.
https://generator.artblocks.io/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/477000000?pd=4&fs=1&fM=6
pd=N in live view URL to set pixel density to N (N>2 increase resolution)
fs=1 in live view URL to set the artwork to render adaptively to the current viewport size, instead of the default square aspect ratio
fM=x with x any number to make the animation stop at that frame number
(1+.2*R.dd())*this.MW;let h=R.sgn();this.MLP=cV(this.McP.x-this.MW/2+R.dd()*d.Wv,this.McP.y*(1+h*R.d()*.2)+R.dd()*d.Wv),this.MRP=cV(this.McP.x+this.MW/2+R.dd()*d.Wv,this.McP.y*(1+h*R.d()*.2)+R.dd()*d.Wv),this.MLCP=cV(this.McP.x-(this.MW-this.McW)/2+R.dd()*d.Wv,this.McP.y+R.dd()*d.Wv),this.MRCP=cV(this.McP.x+(this.MW-this.McW)/2+R.dd()*d.Wv,this.McP.y+R.dd()*d.Wv),this.MH=(.05+.1*R.d())*this.MW,this.LEyeP=cV(-this.LLSW*(.3+4*R.dd()*d.Wv),R.dd()*d.HH1v),this.REyeP=cV(this.LRSW*(.3+4*R.dd()*d.Wv),R.dd()*d.HH1v),this.LEyeW=(R.n(.2,.4)+2*R.dd()*d.Wv)*this.LLSW,this.REyeW=(R.n(.2,.4)+2*R.dd()*d.Wv)*this.LRSW;let a=this.LEyeW*(.75+.5*R.d()),n=R.n(.1,.3)*a,o=R.n(.1,.3)*a,l=a-n-o,c=R.n(.07,.125)*this.UH,L=R.n(.07,.125)*this.UH;this.LEye=new aDiamond(this.LEyeP,n,l,o,c,L,2.51,i),l=(a*=1+.15*R.dd())-(n=R.n(.1,.3)*a)-(o=R.n(.1,.3)*a),c=R.n(.07,.125)*this.UH,L=R.n(.07,.125)*this.UH,this.REye=new aDiamond(this.REyeP,n,l,o,c,L,2.51,i)}draw(){p.push(),p.translate(this.cP.x,this.cP.y);for(let t=0;t<this.nD;t++){this.drawSchema&&(p.push(),p.strokeWeight(.25),p.line(-d.sW/2+2*R.dd(),this.LEarP.y+5*R.dd(),d.sW/2+2*R.dd(),this.LEarP.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.ULP1.y+5*R.dd(),d.sW/2+2*R.dd(),this.URP1.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.ULP2.y+5*R.dd(),d.sW/2+2*R.dd(),this.URP2.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.ULP3.y+5*R.dd(),d.sW/2+2*R.dd(),this.URP3.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.CrP.y+5*R.dd(),d.sW/2+2*R.dd(),this.CrP.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.LLP1.y+5*R.dd(),d.sW/2+2*R.dd(),this.LRP1.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.LLP2.y+5*R.dd(),d.sW/2+2*R.dd(),this.LRP2.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.LLP3.y+5*R.dd(),d.sW/2+2*R.dd(),this.LRP3.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.LLP4.y+5*R.dd(),d.sW/2+2*R.dd(),this.LRP4.y+2*R.dd()),p.line(-d.sW/2+2*R.dd(),this.LLP5.y+5*R.dd(),d.sW/2+2*R.dd(),this.LLP5.y+2*R.dd()),p.line(this.cP.x+2*R.dd(),-d.sH/2,this.cP.x+2*R.dd(),d.sH/2),p.pop());let t,e,s,i=this.nK,r=[1,1],h=[0,0],a=this.c,n=0;p.noFill(),t=p5V.add(this.LEarP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.ULP1,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.ULP1,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.ULP2,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.ULP2,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.ULP3,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.ULP3,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.CrP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.CrP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.URP3,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.URP3,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.URP2,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.URP2,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.URP1,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.URP1,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.REarP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw();for(let d=0;d<4;d++)p.push(),p.scale(1-.05*d),t=p5V.add(this.REarP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LRP1,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LRP1,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LRP2,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LRP2,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LRP3,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LRP3,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LRP4,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LRP4,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LLP5,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LLP5,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LLP4,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LLP4,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LLP3,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LLP3,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LLP2,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LLP2,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LLP1,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.LLP1,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.LEarP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),p.pop();a=this.orC,t=cV(this.LEyeP.x-this.LEyeW/2,this.LEyeP.y+R.dd()*i+15),e=cV(this.LEyeP.x+this.LEyeW/2,this.LEyeP.y+R.dd()*i+15),(s=new polyLine(t,e,n,a,r,h)).draw(),t=cV(this.REyeP.x-this.REyeW/2,1.5*this.REyeP.y+R.dd()*i+15),e=cV(this.REyeP.x+this.REyeW/2,1.5*this.REyeP.y+R.dd()*i+15),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.NdUP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.NdLP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw();for(let d=0;d<5;d++)p.push(),p.rotateY(.2*d),p.scale(1-.05*d),t=p5V.add(this.NdUP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.NdLP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),p.pop();a=this.orC,t=p5V.add(this.NdLP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.NLLP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.MLP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(cV(this.MLCP.x,this.MLCP.y+this.MH/2),cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(cV(this.MLCP.x,this.MLCP.y+this.MH/2*(1+.1*R.dd())),cV(R.dd()*i,R.dd()*i)),e=p5V.add(cV(this.MRCP.x,this.MRCP.y+this.MH/2*(1+.1*R.dd())),cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(cV(this.MRCP.x,this.MRCP.y+this.MH/2*(1+.1*R.dd())),cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.MRP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(this.MRP,cV(R.dd()*i,R.dd()*i)),e=p5V.add(cV(this.MRCP.x,this.MRCP.y-this.MH/2*(1+.1*R.dd())),cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(cV(this.MRCP.x,this.MRCP.y-this.MH/2*(1+.1*R.dd())),cV(R.dd()*i,R.dd()*i)),e=p5V.add(cV(this.MLCP.x,this.MLCP.y-this.MH/2*(1+.1*R.dd())),cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),t=p5V.add(cV(this.MLCP.x,this.MLCP.y+this.MH/2),cV(R.dd()*i,R.dd()*i)),e=p5V.add(this.MLP,cV(R.dd()*i,R.dd()*i)),(s=new polyLine(t,e,n,a,r,h)).draw(),this.LEye.draw(a),this.REye.draw(a)}p.pop(),this.drawUnderSh(),this.drawShH()}drawUnderSh(){let t=this.nK+2*p.abs(p.sin(p.frameCount/50));p.push(),p.noStroke(),p.fill(p.gCwN(this.compC,.1,1)),p.translate(this.cP.x,this.cP.y),p.scale(R.n(.85,1.1)),p.beginShape(),p.vertex(R.dd()*t+this.LEarP.x,R.dd()*t+this.LEarP.y),p.vertex(R.dd()*t+this.ULP1.x,R.dd()*t+this.ULP1.y),p.vertex(R.dd()*t+this.ULP2.x,R.dd()*t+this.ULP2.y),p.vertex(R.dd()*t+this.ULP3.x,R.dd()*t+this.ULP3.y),p.vertex(R.dd()*t+this.CrP.x,R.dd()*t+this.CrP.y),p.vertex(R.dd()*t+this.URP3.x,R.dd()*t+this.URP3.y),p.vertex(R.dd()*t+this.URP2.x,R.dd()*t+this.URP2.y),p.vertex(R.dd()*t+this.URP1.x,R.dd()*t+this.URP1.y),p.vertex(R.dd()*t+this.REarP.x,R.dd()*t+this.REarP.y),p.vertex(R.dd()*t+this.LRP1.x,R.dd()*t+this.LRP1.y),p.vertex(R.dd()*t+this.LRP2.x,R.dd()*t+this.LRP2.y),p.vertex(R.dd()*t+this.LRP3.x,R.dd()*t+this.LRP3.y),p.vertex(R.dd()*t+this.LRP4.x,R.dd()*t+this.LRP4.y),p.vertex(R.dd()*t+this.LLP5.x,R.dd()*t+this.LLP5.y),p.vertex(R.dd()*t+this.LLP4.x,R.dd()*t+this.LLP4.y),p.vertex(R.dd()*t+this.LLP3.x,R.dd()*t+this.LLP3.y),p.vertex(R.dd()*t+this.LLP2.x,R.dd()*t+this.LLP2.y),p.vertex(R.dd()*t+this.LLP1.x,R.dd()*t+this.LLP1.y),p.endShape(),p.pop()}drawShH(){this.nK,p.push(),p.translate(this.cP.x,this.cP.y);let t,e,s,i,d,r,h,a,n,o,l=.1,c=[3,8],L=[-1.5,1.5],f=this.c;p.strokeWeight(.25);let u=.35;for(let m=0;m<1;m++){l=1e-4+1e-4*R.d(),r=50,h=(d=(t=this.LEarP.dist(this.ULP1))+(e=this.ULP1.dist(this.ULP2))+(s=this.ULP2.dist(this.ULP3))+(i=this.ULP3.dist(this.CrP)))/r,this.aP=p5V.lerp(this.LEarP,this.LEyeP,.9);for(let e=0;e<t/h;e++)a=p5V.lerp(this.LEarP,this.ULP1,l*R.dd()+e/(t/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+e/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();for(let s=0;s<e/h;s++)a=p5V.lerp(this.ULP1,this.ULP2,l*R.dd()+s/(e/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+(t/h+s)/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();for(let i=0;i<s/h;i++)a=p5V.lerp(this.ULP2,this.ULP3,l*R.dd()+i/(s/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+((t+e)/h+i)/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();for(let d=0;d<i/h;d++)a=p5V.lerp(this.ULP3,this.CrP,l*R.dd()+d/(s/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+((t+e+s)/h+d)/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();p.color(35,35,35,60),r*=.65,h=(t=this.LEyeP.dist(this.CrP))/r;for(let e=0;e<t/h;e++)a=p5V.lerp(this.LEyeP,this.CrP,l*R.dd()+e/(t/h)),n=p5V.lerp(this.NdUP,this.CrP,l*R.dd()+e/(t/h)),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();r*=.75,p.color(45,45,45,60),h=(t=this.NdUP.dist(this.CrP))/r;for(let e=0;e<t/h;e++)a=p5V.lerp(this.NdUP,this.CrP,l*R.dd()+e/(t/h)),n=p5V.lerp(this.REyeP,this.CrP,l*R.dd()+e/(t/h)),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();p.color(120,120,120,20),r*=.75,h=(d=(t=this.REarP.dist(this.URP1))+(e=this.URP1.dist(this.URP2))+(s=this.URP2.dist(this.URP3))+(i=this.URP3.dist(this.CrP)))/r,this.aP=p5V.lerp(this.REarP,this.REyeP,.9);for(let e=0;e<t/h;e++)a=p5V.lerp(this.REarP,this.URP1,l*R.dd()+e/(t/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+e/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();for(let s=0;s<e/h;s++)a=p5V.lerp(this.URP1,this.URP2,l*R.dd()+s/(e/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+(t/h+s)/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();for(let i=0;i<s/h;i++)a=p5V.lerp(this.URP2,this.URP3,l*R.dd()+i/(s/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+((t+e)/h+i)/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw();for(let d=0;d<i/h;d++)a=p5V.lerp(this.URP3,this.CrP,l*R.dd()+d/(s/h)),n=p5V.lerp(this.aP,this.CrP,l*R.dd()+((t+e+s)/h+d)/r),(o=new polyLine(a,n,201e-6,f,c,L,u)).draw()}p.pop()}}function rUP(){const t=window.location.search,e=new URLSearchParams(t);let s;for(var i of e.entries())"ft"==(s=i[0].split("."))?d.ft=parseInt(i[1]):null!=s&&(d[s]=parseFloat(i[1]))}var fboA,fboC,fboD,fboE,p5V;let sketch=function(t){p5V=p5.Vector,t.gC=function(e,s=255,i="rand",d=0,r=.1,h=!0,a=pltArrC){let n=a[R.c(e)];cS="rand"==i?R.c(n):n[d%n.length];let o=t.color("#"+cS+t.hex(t.int(s)).slice(-2));return t.color(t.red(o)*(1+R.n(-r,r)),t.green(o)*(1+R.n(-r,r)),t.blue(o)*(1+R.n(-r,r)),s)},t.gCwN=function(e,s,i=1){return t.color(t.red(e)*(1+R.n(-s,s)),t.green(e)*(1+R.n(-s,s)),t.blue(e)*(1+R.n(-s,s)),t.alpha(e)*i)},t.sAP=function(){d.nF=R.c([1,1,1,1,1,1,1,2,2,3]),d.rA=[],d.rA2=[],d.rndNx=R.i(2,30),d.rndNy=R.i(2,30);for(let t=0;t<100;t++)d.rA.push(R.d());for(let t=0;t<100;t++)d.rA2.push(R.dd());d.pd=t.pixelDensity(),d.looping=!0,d.bgColor=t.gC(["bgColors"],255,"rand",0,.05,!0,pltArrBg),d.iH=R.sgn(),d.lnRotF1=0,d.lnNoiseK2=.1,d.recV=!1,d.HHv=.01,d.HH1v=.101,d.Wv=.02,d.shapeW=R.n(.005,.1)*d.sW,d.shapeNS=R.i(3,7),d.grid=[];let e=R.i(1,7),s=R.i(e<3?2:1,7),i=cV(R.sgn()*R.n(.01,.3)*d.sW,R.sgn()*R.n(.01,.3)*d.sH);d.gridStep=R.n(.5,1.25)*d.shapeW;for(let t=0;t<e;t++)for(let e=0;e<s;e++)d.grid.push(p5V.add(i,cV(d.gridStep*t,d.gridStep*e)));d.fnD=[5,5,5,15],d.MPLsSN=.1,d.MPLsN=.5,d.embNKF1=.00125,d.wKo=R.c([1,1,1,1,3,3,3,10,30]),d.texScale=R.c([.35,.5,.6,.5,.6,.6,.7]),d.fbmStrength=R.c([.01,.05,.075]),d.fbmStrengthFreqK=R.c([10,50,200,500]),d.coordWK=R.c([.05,.25,.5,1,1.5,2]),d.shAB=!0,d.shBW=!1,d.shBx=(-1)**R.c([0,1])*1.25,d.shBy=(-1)**R.c([0,1])*1.25,d.shK=R.c([.5,1,1,3,5]),d.shT=.5*R.dd(),d.shBlEqA=.98049,d.shBlEqB=.6549,d.shBlEqC=.2,d.shG=1.6857,d.shBr=.0182,d.shCon=.6651,d.st=!1,d.fK=R.c([.001,.005,.01,.1]),d.utK1=1.5,d.utK2=.69525,d.e0=R.c([0,1]),d.e1=1==d.e0?0:1,d.e2=R.c([.5,1,1,1,1.5,3])*(R.d()<.17?1:-1),d.qK=R.c([0,0,0,1]),rUP()},t.setup=function(){window.p=t,document.title="siempre en mí, siempre en ti - edition "+tD.tokenId,R=new Random,cV=t.createVector,d={},t.frameRate(9),d.globalAspectRatio=1,d.artW=1024,d.artH=d.artW/d.globalAspectRatio,d.fM=-1,d.fs=0,rUP(),d.csW=d.fs?t.windowWidth:t.min(t.windowWidth,t.windowHeight),d.csH=d.fs?t.windowHeight:d.csW,d.sW=d.artW,d.sH=d.artH,d.scale=d.csW/d.artW;let e={colorFormat:"float",preserveDrawingBuffer:!0,alpha:!0,premultipliedAlpha:!1};/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(d.pd/=2,d.csW=t.min(t.windowWidth,t.windowHeight),d.csH=d.csW,d.fM=4,d.scale=d.csW/d.artW,e.size={width:d.csW,height:d.csH,pixelDensity:d.pd}),document.body.style="background-color:black;margin:0;overflow:hidden;display:flex;justify-content:center;align-items:center;",t.sAP(),t.pixelDensity(d.pd),cnv=t.createCanvas(d.csW,d.csH,t.WEBGL),t.scale(d.scale),t.setAttributes({colorFormat:"float",preserveDrawingBuffer:!0}),fboA=t.createFramebuffer(e),fboC=t.createFramebuffer(e),fboE=t.createFramebuffer(e),sh=t.createShader(shv,shf),console.clear(),console.log("\n\n\t\tsiempre en tí, siempre en mí\n\t\t2023 Marcelo Soria - Rodríguez, @msoriaro\n\t\tCC BY - NC - SA 4.0, https://creativecommons.org/licenses/by-nc-sa/4.0/\n\t\t\n\t\tthanks for supporting Cure Alzheimer's Fund research to find a cure for Alzheimer's. Your support matters.\n\t\t\n\t\tpress s to save image\n\t\tpress v to start recording video, v again to finish and download(webm format) \n\t\tpress f to fast forward 100 frames\n\t\ttype youinme to see how we all carry each other within ourselves\n\t\t\n\t\tURL params (append with a trailing ? if it's the first parameter, & for the rest)\n\t\tappend &pd=N in live view URL to set pixel density to N(N > 2 increase resolution) \n\t\tappend &st=1 in live view URL to set the default view to seeing how we all carry each other within ourselves\n\t\tappend &fM=x with x a number to make the animation stop at that frame"),t.setupObjects()},t.shU=function(e){let s=1;for(let e=0;e<5;e++)s+=d.rA[e]*t.sin(t.frameCount*e/(100+d.fbmStrengthFreqK));s/=10,d.shBx=1.5*s,d.shBy=1.5*s,e.setUniform("tS",[d.shT*(1+.5*t.cos(t.frameCount/10))/d.sW*d.shK,d.shT*(1+.5*t.sin(t.frameCount/15))/d.sH*d.shK]),e.setUniform("u_aB",1==d.shAB),e.setUniform("u_dir",[d.shBx*d.scale,d.shBy*d.scale]),e.setUniform("t1",t.frameCount),e.setUniform("n",10*(1+10*R.d())),e.setUniform("t2",300*d.rA[30]+t.frameCount%1200),e.setUniform("u_pA",d.shBlEqA),e.setUniform("u_pB",d.shBlEqB),e.setUniform("u_pC",d.shBlEqC),e.setUniform("u_bw",1==d.shBW),e.setUniform("u_g",d.shG),e.setUniform("u_br",d.shBr),e.setUniform("u_con",d.shCon),e.setUniform("u_inv",d.shInv),e.setUniform("uScale",d.scale),e.setUniform("uPD",d.pd),e.setUniform("uR",d.rA),e.setUniform("uR2",d.rA2),e.setUniform("uRes",[d.csW,d.csH]),e.setUniform("utK1",d.utK1),e.setUniform("utK2",d.utK2),e.setUniform("kT1",10*s),e.setUniform("kT2",d.fbmStrength*(1.5+t.sin(3*d.rA2[5]+t.frameCount/20)**2)),e.setUniform("uvWK",d.coordWK*(1+.25*t.sin(3*d.rA2[4]+t.frameCount/130)**2)),e.setUniform("wK",d.wK),e.setUniform("embNK",d.embNK),e.setUniform("e0",d.e0),e.setUniform("e1",d.e1),e.setUniform("e2",d.e2),e.setUniform("fK",d.fK*s*4),e.setUniform("qK",d.qK)},t.touchStarted=function(){d.looping=!d.looping,d.looping?t.loop():t.noLoop()},t.recStop=function(t){var e=new Blob(t,{type:"video/webm"});const s=URL.createObjectURL(e),i=document.createElement("a");i.style="display: none;",i.href=s;let d=new Date(Date.now());i.download="siempre_en_mi_siempre_en_ti_"+tD.tokenId+"_when_"+d.toISOString()+"_hash_"+tD.hash+".webm",document.body.appendChild(i),i.click(),setTimeout(()=>{URL.revokeObjectURL(s),document.body.removeChild(i)},0)},t.sV=function(){if(d.recV)d.recV=!1,this.media_recorder.stop();else{const i={videoBitsPerSecond:1e7,mimeType:"video/webm; codecs=vp9"};d.recV=!0;var e=[],s=document.getElementById("defaultCanvas0").captureStream(9);this.media_recorder=new MediaRecorder(s,i),this.media_recorder.ondataavailable=(t=>{e.push(t.data)}),this.media_recorder.onstop=(()=>{t.recStop(e)}),this.media_recorder.start(1e3)}};var e=[];t.keyTyped=function(s){if("l"===s.key)d.looping=!d.looping,d.looping?t.loop():t.noLoop();else if("s"===s.key){let e=new Date(Date.now()),s="siempre_en_mi_siempre_en_ti_"+tD.tokenId+"_when_"+e.toISOString()+"_hash_"+tD.hash;s.split(":").join("-"),t.save(s+".png")}else"f"===s.key?t.frameCount+=100:"v"===s.key&&t.sV();let i=e.slice(-1)[0];"+"===s.key?("g"===i&&(d.shG*=1.05),"z"===i&&(d.shBr+=.015),"x"===i&&(d.shCon*=1.05),"n"===i&&(d.shBlEqC*=1.05),"k"===i&&(d.shT*=1.05),"b"===i&&(d.shBlEqA*=1.03,d.shBlEqB/=1.025)):"-"===s.key?("g"===i&&(d.shG/=1.05),"z"===i&&(d.shBr-=.015),"x"===i&&(d.shCon/=1.05),"n"===i&&(d.shBlEqC/=1.05),"k"===i&&(d.shT/=1.05),"b"===i&&(d.shBlEqA/=1.03,d.shBlEqB*=1.025)):e.push(s.key),"youinme"===e.join("").slice(-7)&&(d.st=!d.st)},theFaces=[],t.setupObjects=function(){let e,s,i,r,h;r=cV(0,0);for(let a=0;a<d.nF;a++)i=t.gC(["all"],R.n(150,180),"rand",0,.1,!0),r=p5V.add(r,cV(R.sgn()*R.n(1,2)*e,R.sgn()*R.n(.3,2)*s)),e=R.n(100,400),s=R.n(200,400),h=new aFace2(e,s,r,i,R.c(d.fnD)),theFaces.push(h);i=t.color(30,30,30,200);for(let s=0;s<d.grid.length;s++)r=d.grid[s],e=d.shapeW*(1+.15*R.dd()),nS=d.shapeNS,i=t.gC(["all"],R.n(100,150),"i",s,.1,!0),theFaces.push(new aPoly(e,nS,r,i))},t.windowResized=function(){t.resizeCanvas(t.windowWidth,t.windowHeight)},t.draw=function(){if (t.frameCount===d.fM) {(t.noLoop(),d.looping=!1)}d.embNK=0;for(let e=0;e<6;e++)d.embNK+=t.sin(6.2831853072*(2*e+1)*d.embNKF1*t.frameCount)/(e+1);d.embNK*=1.2732395447,d.wK=d.embNK*d.wKo,t.background(t.gCwN(d.bgColor,.015,.3329)),fboA.draw(()=>{for(t.clear(),t.scale(d.scale),t.background(t.gCwN(d.bgColor,.015,.97)),t._renderer.GL.disable(t._renderer.GL.DEPTH_TEST),t.push(),t.noStroke(),t.scale(d.texScale),t.texture(fboC.color),t.plane(t.width,-t.height),t.pop(),t.push(),t.fill(t.gCwN(d.bgColor,.05,.3329)),t.noStroke(),t.plane(t.width,t.height),t.pop(),t.push(),t.push(),m=d.nF+1;m<theFaces.length;m++)theFaces[m].draw();for(t.pop(),m=0;m<d.nF;m++)theFaces[m].draw();t._renderer.GL.enable(t._renderer.GL.DEPTH_TEST),t.pop()}),fboC.draw(()=>{t.push(),t.clear(),t.scale(d.scale),t.shader(sh),t.shU(sh),t.scale(1,-1),sh.setUniform("globalK",.9),sh.setUniform("uS",!1),sh.setUniform("tex0",fboA.color),t.rect(-d.sW/2,-d.sH/2,d.sW/2,d.sH/2),t.pop()}),fboE.draw(()=>{t.push(),t.clear(),t.shader(sh),t.shU(sh),sh.setUniform("u_br",.95*d.shBr),sh.setUniform("u_con",.95*d.shCon),sh.setUniform("u_g",.9*d.shG),sh.setUniform("globalK",.99),sh.setUniform("tex0",d.st?fboA.color:fboC.color),sh.setUniform("uS",!0),t.scale(.5,.5),t.rect(-d.sW/2,-d.sH/2,d.sW,d.sH),t.pop()}),t.push(),t.texture(fboE.color),t.noStroke(),t.plane(t.width,(d.st?-1:1)*t.height),t.pop()}};new p5(sketch);
I}),o=e.max(o,i),n+=e.min(1e3*R.rmM(dP.hmM),1e3-n);let a=o*dP.tLR.length;dP.dLN=a>5e4?1:a>1e4?3:a>5e3?10:20,dP.lR=a>5e4?1:a>1e4?2:a>5e3?3:4,dP.tLR.push({thePosH:dP.sH,sW:void 0,dd:1,d1:2e3*dP.gAR/void 0}),dP.lp=!0,dP.totFrames=100,dP.rndArr=[];for(let e=0;e<50;e++)dP.rndArr.push(R.d());dP.shAB=!0,dP.shBx=(-1)**R.c([0,1])*1.25,dP.shBy=(-1)**R.c([0,1])*1.25,dP.shK=2.05,dP.shT=.4*R.d()*2,dP.shBlEqA=.4954,dP.shBlEqB=.648,dP.shBlEqC=1*(dP.shBW?.18:.25),dP.shG=2.5116*(dP.shBW?1.65:1.05),dP.shBr=.01515*(1+Math.log(dP.cK)),dP.shCon=.52*(1+Math.log(dP.cK)),dP.shBr=.15515*dP.cK,dP.shCon=.6,dP.shInv=R.b(.15),dP.shBW=R.b(.15),dP.shTime=1e3*R.d(),readURLParams(dP),(dP.oT>3||dP.oT<0)&&(dP.oT=0)},e.setupObjects=function(){let t,s,d,r,n,o,i,a;o=R.n(1,255);let c,u,h,l,P=R.dd()*e.PI;for(let o=0;o<dP.grid.length;o++)r=R.c(dP.objSides),a=R.rmM(dP.paintNmM),s=gC(dP.palettes,R.n(230,250)/a,"i",o,.1,!0),d=gC(dP.palettes,R.n(230,250)/a,"i",o+1,.1,!0),t=dP.grid[o].cP,n=R.rmM(dP.sWmM),i=e.min(dP.sW/3,e.min(dP.grid[o].w,dP.grid[o].h)),u=R.d(),l=R.d(),c=u<dP.prodDF,h=l<dP.prodDS,theObjects.push(new aP(r,s,d,n,c,t,i,P*(1+.1*R.dd()),R.rmM(dP.wKmM),r*R.rmM(dP.wKTmM),h,a))},e.drawRR=function(t){let s,d,r,n;e.push(),r=[R.c(Object.keys(pltLines))],dP.theLineColoursN=R.n(1,pltLines[r].length);let o,i=Math.sqrt();i=dP.lR;let a=a1=a2=a3=a4=!0;for(let t=0;t<dP.tLR.length-1;t++)if(0!=dP.ea||!R.b(dP.rndArr[45])){s=dP.tLR[t].sW,n=dP.tLR[t].oLK,d=R.i(20,150);for(let c=0;c<dP.tLR[t].numL;c++){for(let d=0;d<dP.lR;d++)e.push(),a=1==dP.ea||R.b(dP.rndArr[17]),a1=1==dP.ea||R.b(dP.rndArr[29]),a2=1==dP.ea||R.b(dP.rndArr[30]),a3=1==dP.ea||R.b(dP.rndArr[31]),a4=1==dP.ea||R.b(dP.rndArr[37]),e.strokeWeight(s*n*(.15+2*dP.rndArr[10]*e.sin(dP.rndArr[19]*(t+c)/20)+1.5*dP.rndArr[11]*e.cos(dP.rndArr[17]*(t+1.5*c)/30))),c>50&&c<70&&(tyty=!0),o=gC(r,e.constrain(c,0,dP.tLR[t].numL,100,dP.theLineT/i),"index",Math.floor(c)%dP.theLineColoursN,.1,!0,pltLines,1),e.stroke(o),e.line(dP.tLR[t].offset+a*c*s/dP.tLR[t].dd,dP.tLR[t].thePosH+a1*((dP.tLR[t+1].thePosH-dP.tLR[t].thePosH)*dP.lineStartK*R.d()),dP.lineSinK*(.25+e.cos(t*dP.rndArr[25]*dP.rndArr[33]))*e.sin(dP.rndArr[25]*(c/2+5+1*d/10)),dP.tLR[t].offset+a2*c*s/dP.tLR[t].dd+1*(dP.tLR[t+1].thePosH-dP.tLR[t].thePosH)*dP.tLR[t].inc,dP.tLR[t+1].thePosH*(1+.25*a3*R.dd()*dP.lineEndK),a4*dP.lineSinK*(.25+e.cos(t*dP.rndArr[25]*dP.rndArr[33]))*e.cos(dP.rndArr[25]*(c/2+5+1*d/11))),e.pop();(c+t)%d==0&&(r=[R.c(Object.keys(pltLines))],dP.theLineColoursN=R.n(1,pltLines[r].length))}}e.pop()},e.drawObjects=function(){for(let t=0;t<1;t++)e.push(),e.translate(2*R.dd(),2*R.dd(),2*R.dd()),e.drawRR(t),e.pop();e.push();for(let t=0;t<3;t++){e.translate(5*R.dd(),5*R.dd(),5*R.dd());for(let e=0;e<theObjects.length;e++)theObjects[e].draw(1,0)}e.pop()},e.setup=function(){if(window.p=e,R=new Random,fileNameBase="extranezas-",cV=e.createVector,(dP={}).gAR=.66,piAR=dP.gAR,e.windowWidth/e.windowHeight<=piAR?(dP.sW=e.windowWidth,dP.sH=e.windowWidth/piAR):(dP.sH=e.windowHeight,dP.sW=e.windowHeight*piAR),e.sAP(),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(dP.pd/=2,dP.pdA/=2,dP.pdC/=2,dP.pdD/=2),hC=/HeadlessChrome/.test(navigator.userAgent),e.pixelDensity(dP.pd),cnv=e.createCanvas(dP.sW,dP.sH,e.WEBGL),e.setAttributes({alpha:!0,premultipliedAlpha:!1}),sh=e.createShader(sh_vs,sh_fs),fboA=e.createFramebuffer({colorFormat:"float",preserveDrawingBuffer:!0,alpha:!0,premultipliedAlpha:!1}),fboC=e.createFramebuffer({colorFormat:"float",alpha:!0,premultipliedAlpha:!1}),fboD=e.createFramebuffer({colorFormat:"float",preserveDrawingBuffer:!0,alpha:!0,premultipliedAlpha:!1}),fboA.pixelDensity(dP.pd),fboC.pixelDensity(dP.pdB),fboD.pixelDensity(dP.pdC),e.smooth(),e.setupObjects(),e.loop(),fboA.draw(()=>{e.smooth(),e.translate(-dP.sW/2,-dP.sH/2),e.background(dP.bgC),e.drawObjects()}),fboC.draw(()=>{e.smooth(),e.translate(-dP.sW/2,-dP.sH/2);for(let t=0;t<dP.dLN;t++)e.drawRR(3*t)}),hC&&(dP.gameOn=!0),dP.gameOn){e.initgame();for(let t=0;t<dP.gameInitPos;t++)dP.gCDV=R.i(1,6),dP.gSDV=R.i(1,6),e.onePos()}document.body.style.margin=0,document.body.style.overflow="hidden",document.body.style.display="flex",document.body.style.justifyContent="center",document.body.style.alignItems="center",document.body.style.verticalAlign="center"},e.initgame=function(){e.ln=[],fboD.draw(()=>{e.clear(),e.resetMatrix(),e.push(),e.background(30,30,30),e.pop()}),dP.gamePosCount=0},e.onePos=function(t=!0){t&&fboD.draw(()=>{e.push(),e.translate(-dP.sW/2,-dP.sH/2),drawOne(t),e.pop(),e.loop()}),dP.gamePosCount++},e.shI=function(){e.shader(sh);let t=1+e.abs(e.sin(e.frameCount/10));dP.shBx=2.5*(-1)**e.frameCount*t,dP.shBy=2.5*(-1)**e.frameCount*t,sh.setUniform("tS",[dP.shT*(1+.25*R.d())/e.width*dP.shK,dP.shT*(1+.25*R.d())/e.height*dP.shK]),sh.setUniform("u_aB",dP.shAB),sh.setUniform("u_dir",[dP.shBx,dP.shBy]),sh.setUniform("u_time",e.millis()/1e3),sh.setUniform("u_pA",dP.shBlEqA),sh.setUniform("u_pB",dP.shBlEqB),sh.setUniform("u_pC",dP.shBlEqC),sh.setUniform("u_bw",1==dP.shBW),sh.setUniform("u_g",dP.shG),sh.setUniform("u_br",dP.shBr),sh.setUniform("u_con",dP.shCon),sh.setUniform("u_inv",dP.shInv),sh.setUniform("u_res",[dP.sW,dP.sH]),sh.setUniform("u_cK",Math.sqrt(dP.cK)),sh.setUniform("u_rndArr",dP.rndArr),sh.setUniform("o",dP.oT),sh.setUniform("gameOn",1==dP.gameOn)},e.draw=function(){if(e.push(),e.shI(),sh.setUniform("tex0",fboA.color),sh.setUniform("tex2",fboC.color),sh.setUniform("gtex",fboD.color),sh.setUniform("u_time",e.millis()),e.rect(-dP.sW/2,-dP.sH/2,dP.sW,dP.sH),e.pop(),2==e.frameCount){let e='You can interact with the piece. You can input commands by pressing keys in the keyboard, or set up the piece directly via the URL.\n\nKeyboard commands: press:\n\ns to save the current image\n\nv followed by 1,2,3 or 0 to see the different fragments that make up the whole piece. This piece uses 3 separate layers to compose the final image. You can see them with numbers 1,2 and 3, then use v 0 to see again the full, final result. If you press "s" at any moment, you will save the image you see (i.e., you can save all components of the artwork separately if you want)\n\nl to pause the piece. When paused, you will see a static image instead of the varying noise.\n\nIt has also colour controls: z for brightness, x for contrast, g for gamma, b for blur, n for noise followed by + or - (repeatedly if you want) to alter their values. You might get some simple variations that you might enjoy.\n\nAs stated, you can try to summon the piece to reveal its hidden _ game _ If you do, further instructions will be revealed in the browser console.\n\nURL parameters: in live view, you have to append the 1st parameter using ? instead of &, and the rest using & as indicated below\n\n&pd=N uses pixel density N to arbitrarily set the resolution. Go as high as your hardware allows you to. Nice for high resolution stills and if you intend to print.\n\n&oT=N with N being 1,2,3 or 0: sets the view of the desired component, or the final composed piece (it\'s 0 by default, no need to set that)\n\n&ea=0 tells the piece to skip certain instructions. It is 1 by default.\n\n&theSecretWayToSummonTheGame followed by "On" and equal 1: it shows the piece with the game on and also with some moves already made. For example, if the secret way to summon the game would be "learn", then the URL parameter would be &learnOn=1 (it\'s not learn... but surely a game is a way to learn)\n\n';console.clear(),console.log("extrañezas / marcelo soria-rodríguez @msoriaro 2023"),console.log("CC BY-NC-SA 4.0, https://creativecommons.org/licenses/by-nc-sa/4.0/"),console.log("uses p5js and p5.Framebuffer (MIT License) by Dave Pagurek (thanks so much)"),console.log("always try to find the little game in what you do"),console.log("for example, you can try to ask this piece for a game... the same way you introduce other commands (see below)... but a _game_... "),console.log(e),console.log("and thanks for inspecting the console!")}},e.ln=[],e.keyTyped=function(t){var s=new Date;if("s"==t.key)e.save(`extranezas_${tD.tokenId}_${tD.hash}_${s.toISOString()}.png`);else if("l"==t.key)dP.lp?e.noLoop():e.loop(),dP.lp=!dP.lp;else if("d"==t.key)dP.gCDV=R.i(1,4),dP.gSDV=R.i(1,6),e.onePos();else if("j"==t.key)e.onePos(!1);else if("r"==t.key)e.onePos(!0);else if("h"==t.key)for(let t=0;t<R.i(50,250);t++)dP.gCDV=R.i(1,6),dP.gSDV=R.i(1,6),e.onePos();let d=lt.slice(-1)[0];if(dP.gameOn&&-1!="123456789".indexOf(t.key)){if(e.ln.push(t.key),3==e.ln.length){dP.gSDV=e.int(e.ln[0]),dP.gCDV=e.int(e.ln[1]);for(let t=0;t<e.int(e.ln[2]);t++)e.onePos();e.ln=[]}}else"v"==d&&-1!="1230".indexOf(t.key)?dP.oT=e.int(t.key):"+"===t.key?("g"===d&&(dP.shG*=1.1),"z"===d&&(dP.shBr+=.03),"x"===d&&(dP.shCon*=1.1),"n"===d&&(dP.shBlEqC*=1.1),"m"===d&&(dP.shT*=1.1),"b"===d&&(dP.shBlEqA*=1.03,dP.shBlEqB/=1.025),"k"===d&&(dP.gOSK*=1.05),"w"===d&&(dP.gOWK*=1.05)):"-"===t.key?("g"===d&&(dP.shG/=1.1),"z"===d&&(dP.shBr-=.03),"x"===d&&(dP.shCon/=1.1),"n"===d&&(dP.shBlEqC/=1.1),"m"===d&&(dP.shT/=1.1),"b"===d&&(dP.shBlEqA/=1.03,dP.shBlEqB*=1.025),"k"===d&&(dP.gOSK/=1.05),"w"===d&&(dP.gOWK/=1.05)):lt.push(t.key);if("game"===lt.join("").slice(-4)){if(dP.gameOn)return;e.initgame(),dP.gameOn=!0,e.pi(),e.loop()}else"quit"===lt.join("").slice(-4)&&(e.initgame(),dP.gameOn=!1,e.loop())},e.pi=function(){g1&&(console.log('\n\n\n\nGreetings Professor Falken.\n\nHow about a nice game of creating your own piece rolling the dice?\n\nPress "d" to roll the dice two times: this will choose automatically a shape and a colour and draw the corresponding result.\n\nPress "h" to roll the dice a random number of times to create a random number of positions (like rolling a "h"eap of dices).\n\nYou can press "j" to jump a position without drawing anything.\n\nFinally, you can be in total control by choosing first the shape, then the colour and then the number of times you want that combination to be drawn. To do this, first press a number between 1 and 6 (chooses a shape), then a number between 1 and 9 (chooses a colour) then a number between 1 and 9 (repeats that combination the specified number of times).\n\nYou can also press "w" followed by + or - repeatedly to alter the line width of the shapes. You can also press "k" followed by + or - repeatedly to alter the scale factor of each shape size and position.\n\nTo clear your game, choose to _quit_ just like you summoned the _game_. You can enter into the _game_ again if you wish, doing the same thing you did to enter the 1st time.\n\nYou can display the piece directly in game mode appending the following parameters to the URL:\n\n&gameOn=1 to enable the game\n&gameInitPos=N to use N positions already randomly played. Go as high as you want with the number.\n\nIt\'s an exploration game. The only winning move is to learn. Much like in life.\n\n\n\n'),g1=0)}};new p5(sketch);
I have been long interested in education and generative art, approaching them separately most of the time. This artwork tries to get them closer in my practice, by letting the experiencer of the piece finish it by creating a part of it with a rule-based system, to mimic what the system does but at a smaller scale. This little game is not just a playful addition, but a fundamental part of the artwork, without which the piece is not complete. The title is drawn from the idea that generative art can take you to explore every corner of a given space of possibilities, finding the strange things (extrañezas) along the way. Also, exploring the what ifs when some rules are broken. And experiencing it in first person.
The piece aims to show various parts of how I create my pieces, by showing the different layers it is composed of and letting the experiencer finalise the artwork by having to recreate step by step what the algorithm has done to create the intermediate work. Art has this tremendous power to engage, to attract, to let the observer get carried away in their own inner world as a reaction to what the piece proposes. I believe the positive impact of a piece in the experiencer can be then increased if they can understand better the process that creates the piece.
The piece creates a base layer of colour shapes, rather informal and basic. It then uses vertical lines to add rhythm to it, and a distortion layer to generate a more intricate canvas. The lines layer is then used again to act as a mask, effectively creating windows into the layer with the simple shapes. The experiencer then has to find the way to ask the piece to play a game (hint: most of my pieces accept written commands). When they are rewarded with this possibility, the piece writes in the browser console (press cmd+shift+i / ctrl+shift+i to see it in most browsers) a set of instructions of what to to next. The experiencer can then finish the piece with their own intent. In a way, it's a performance of the piece. A way to make it more personal. Or to just wander around with no intention. Relaxing our thoughts with pure play is something we seldom do as adults, yet it is the source of new thoughts, ideas, or a way to find inner equilibrium.
Aesthetically, it is furthering the exploration of colour that I have been doing in most of my pieces. A clear reference to me is František Kupka series of paintings made of vertical lines, of which "The cathedral" is one of the best known. While I had this in mind, I abandoned my original intention of creating a tribute to that series, but ended up visually close in some outputs.
The piece allows for further control. The instructions are written to the browser console when loading the piece. They can also be found in the Display Notes section, or in my website, https://www.iillucid.com/extranezas. A quick summary: press s to save current image, v followed by 1, 2, 3 or 0 to see all the layers in the image. Please try to find the hidden _game_. The piece is not complete without it.
la caverna deals with the impossibility of seeing the absolute truth given our subjective minds and our subjective world. The title is a tribute to Plato’s allegory of the Cave, included in his work Republic. It does not only deal with the fact that what we perceive is affected by our senses and our mental state, which is a function of our genetic inheritance plus our life experiences, current and past, but it also is a reflection of today’s world, where a fabricated reality is no longer distinguishable from what it really is. What is reality today?
The artwork creates a set of basic volumes, inspired in the platonic forms, which represent a potential ideal reality. It then presents a distorted view of that reality through several steps of distortion. The artwork also presents, in separate tokens, the undistorted reality and a representation of the layer that transforms that reality into what the observer can see in the first token. The two tokens that represent these other elements will be available to redeem for free at a later stage to collectors who own the first piece (this token) at the time of claiming the rest of the triptych. The three tokens are included in the price of the first token’s mint.
The artwork allows to refine the view (simulating more light, creating stronger images) pressing "r". You can save the current image pressing "s". You can decrease/increase the resolution appending in live view the URL parameter ?globalResK=2 (for example). By default, globalResK is 1. You can go as high as your graphics card can handle.
Made with vanilla javascript and glsl, no additional libraries or external dependencies. Thanks to @greggman @iquilezles @piterpasma for sharing knowledge about webgl and raymarching. I hope I know something someday to share that little bit.
Tested to work fine on Chrome, Safari, Brave on macos, Chrome, Safari, Firefox iOS, Edge Windows. Firefox macos fails to render the image correctly. Please check before you purchase.