Generative Dreaming
This project sets out to explore the dream as both production material and abstract representation - taking cues from the surrealist fascination with what was deemed as “life’s other fifty percent”, this ongoing series approaches dreaming not as a gap in consciousness but as the other pole of mental activity, existing in a fragmentary state of remembrance after its conclusion, with the aim to rework its base material through generative literary and visual approaches in order to extract new meaning.
produced by: Teodora Sinziana Fartan
Introduction
Initially inspired by an Albert Camus quote, who claims that “the absurd does not liberate; it binds”, this project sets out to explore the recollection of dreams as snippets of absurd imagery providing access to the unconscious mind, and aims to probe the potential of further abstracting these morsels of fictional, internalised experience through generating new fictional spaces in the form of textual and visual abstraction. Focused on generative and exploratory remixing of this unstable archive of the personal, already passed through the foggy filter of remembrance, this is an attempt to draw on an archive of the subverted mind and use its symbolism as raw material for further remixing.
Drawing on already existing attempts to grasp and interpret the subconscious through the harnessing of dreams, – the Surrealists most notably had been fascinated with the quality of dreams and drew heavily on their manifestations as glimpses into the subconscious mind – this endeavour attempts to form a contemporary continuation of that search for the new by looking inwardly, but adapted to our age of complexity where humans and machines are more intertwined than ever; if lines of code can access, log and interpret our personal data, why should they not be utilised to explore the deeper crevices of the dreaming mind? Therefore, the main exploratory thread of this project aims to provide an answer to the question: can computation be harnessed to rework and remix the unconscious? How can it substitute, and perhaps even surpass, other methodologies previously used by artists to find new sense and extract new meanings from recorded personal material, such as the cut-up method or action drawing? What methods can be used to achieve this, and what kind of abstraction can be achieved?
Concept and background research
This series of works stems from my year-long research project surrounding fictioning and the practice of exploring alternate imaginaries and modes of existence through computation. As human agents enveloped in an increasingly abundant flow of information, we find ourselves in a transitional state where artistic tendency is gravitating from living in and exploring a unified world towards navigating many scattered realities that dwell in abstract subspaces on the fringes of the real. My own art practice is centered around exploring what Russel Hoban, in his science fiction novel Riddley Walker, calls the “something in us that ain’t us”, namely this speculative fictioning quality that gives rise to new alternative worlds and ideas, enabling us to think beyond our current moment.
Thus, in an effort to explore fiction as an augmentation of reality, I chose to work with the base material of a different type of fiction that is produced and mitigated by the subconscious mind: dreams. Approaching memories of dreams as a different level of experience that can be known and, more importantly, liberated, I chose to work with remixing the ideas produced under the auspice of this other pole of mental activity in order to explore what new narratives, fictions and abstractions can be created through a fusion of different types of expression.
A collection of memories dreams over a period of one month is recorded in a personal archive, a base material that has already been passed through the filter sitting in between the conscious of unconscious mind – as Claude Cahun put it, memories are “choice morsels”, even more so when one attempts to remember and record a dream. In an effort to bring more of the subconscious into conscious life, the oneiric material becomes fictionalized by both the self and the machine, ultimately resulting into speculative textual and visual attempts to peer behind the veil and catch a glimpse of the submerged mind.
These remembered scenes and events are chronicled in text form, and the resulting text corpus is remixed using a Markov chain text generator, in order to investigate the potential of producing new fictions from these precarious recollections of the whimsical, already modified by the fluctuations of personal archival memory.
As an artist with a background in pictorial representation, I was extremely interested in exploring the abstract ‘landscapes’ of these dreams and ways in which they could be represented visually and symbolically. The resulting generative text is thus interpreted through a custom text analysis software based on numerology, in an effort to explore the use of computation in a spiritual – rather than functional – manner, whilst part-of speech recognition is used to single out certain words and employ them in the creation of pictorial language. The results are utilized as anchor points for generating abstract visual landscapes of these fragments of the subliminal, in an attempt to extract visual impressions from the remixed dream material.
Ultimately, the aim of this project is to kickstart an experimental search for meaning in the absurd quality of dreams using computation as a tool for extending and remixing the snippets of unconscious experience we have access to, whilst exploring the potential for using software to propagate abstract visual representations of these newly-produced fictions.
Technical
The technical approach for this project stems from my recent research projects into generative literature and ways of creating new meaning within literary expression through the use of computation as a fiction apparatus, with the aim to answer the question: what hidden rhythms lie hidden within the writing itself that could be brought to the surface? Extending this line of thought, I decided to explore beyond solely using a textual approach, turning to text analysis and practices of mystical computing in order to investigate what pictorial languages could emerge out of these text generation and categorization systems. The software for this project is a 2-part program, a ‘Dream Generator’ that outputs generative text from the recorded dreams corpus, and an ‘Interpreter and Visualizer’ that takes a .txt file as input, analyses the text and produces generative visuals.
Generating text with N-grams
In my previous explorations of methods of generating text using computational approaches, I found Markov chain models, or N-gram models, to be the most successful at creating output text that comes as close to coherent fiction as possible. The simplified working methodology of a Markov chain text generator is based on a probabilistic system where the input corpus of text is analysed in terms of the probability of occurrence of a word that follows in relation to the previous one – for example, if the initial word is “the”, a roll of dice occurs where the program chooses another word, a noun for example, that is likely to follow, due to it occurring after this part of speech within the input text; following words could be nouns such as ‘dog’, ‘girl’, ‘building’ etc – when one of these words is selected, another roll of dice occurs to choose a word that follows a noun in the same sentence structure within the input, and so on. What happens next is only determined by the current state, or more precisely, by the current word. The Markov chain forms word dependencies without the knowledge of the language syntax or semantics, but solely based on the statistical knowledge extracted from the text corpus, giving rise to some very interesting results in the output text.
Therefore, after collecting a selection of memories of my own dreams over a period of one month, I compiled these into one unified text corpus and proceeded to process them through a Markov chain algorithm in order to create “generative dreams”. The N-gram implementation that I used is the one provided by the Rita.js library (RiMarkov), which allows for further customization in terms of length of output and n-factor. Using the library was slightly challenging as documentation is somewhat limited and sometimes further referencing from the Java library was needed, but after becoming more accustomed with text processing, I was able to generate sections of text that I was pleased with (see above some examples of the generated texts).
Analysis by Numerology
After being successful at achieving generative text pieces out of the recorded dreams, I started thinking about ways in which I could break down the text and convert it to values in order to create visual dreamscapes. Having looked at mystical computing and working with software in an anagogic, rather than functional, manner. I thus decided to look at the practice of numerology as the divinatory practice approaching numbers as a universal language and linking them to places, occurrences and circumstances based on analysing the letters that make up a word. Following the idea that numerology as an ancient divinatory art can draw cosmic meaning and purpose, I decided to create visual microcosms for the generative dreams based on this practice of extracting values from words and interpreting them. Several functions were written in order to clean the text from punctuation, separate it into words, then letters; each letter corresponds to a number value between 1 and 9 (see diagram below) – further functions were written to get the values for each letter of a word, then add them together to obtain a number, then add the digits of the resulting number together until each word had a corresponding value between 1-9 stored in an array; in this way, I was able to extract specific numbers for each word based on diivinatory practices. Working on creating this software was a great learning curve, as I was unfamiliar with working with Strings, splitting and joining text, creating large string arrays and working with char variables – it was very enjoyable to play around with creating these functions, but also very valuable for further text-based experiments.
Visualising Generative Dreams / Creating Pictorial Abstraction from Text
After successfully calculating numerological values for each word of the generated text, I decided to use the values of certain parts of speech in order to drive different apects of the design. I was aiming to create abstract images reminiscent of paint, where symbolism can be gleaned from flowing and melting shapes. The base visual design derives from a happy accident derived from playing around with noisy lines in my previous generative design experiments, that I then adapted to create these pictorial abstract landscapes. They are essential points moving on the Y-axis according to a sine wave and different noise values, with other values affecting the colour and brightness, creating the paint-like effect. In order to make the design generative, I extracted different parts of speech from the text, based on the PENN tag system, and used them to drive certain aspects of how the visuals are formed – adjectives affect the hue and brightness change, nouns impact on the noise level and number of points, and verbs affect the speed and scope of movement. Colour is perhaps the most important aspect here, as the HSB hue change and brightness level creates the smooth shape impression.
The program is designed to output multiple visual versions for the same dream - parts of speech are selected at random to drive aspects of the visuals - I chose to work in this way because dreams are fluid, open to many interpretations and often remembered in multiple ways; I thus wanted to have several outputs for the same dream, in the same way there are many ways of remembering and interpreting a dreamed experience. See examples of dreamscapes below.
Future development
This project is a continuation of my year-long research exploration of fictioning as methodological approach and the development of the concept of ‘multiversal practices’, a term that aims to encompass those artistic practices that concern themselves with the exploration of alternate modes of existence and the production of fluctuating imaginaries through the use of computation as a conceptual and technical tool. Consisting of the most robust approach to this way of working yet, this project aims to kickstart a longer series that explores oneiric material as a base for hallucinating new stories and abstract spaces through the use of custom software based on mystical practice, in an endeavour to both explore the hidden subconscious as a source pool of multiple starting points for generative work and employ computation as a spiritual interpretation tool that enriches the artistic process. These first iterations will be followed by further investigations into how the machine can abstract the personal archive, with plans to widen the output from literary and visual results into generative sound and kinetic sculpture. I believe there is a much wider potential for approaching these dreamscapes, or fictional para-spaces, and translating them into artistic outputs, a thread which I aim to keep following withini my art practice.
Self evaluation
In terms of self-evaluation, undertaking this project was an interesting exercise in both furthering my coding skills and with regards to the decision-making process of creating an art installation. As somebody who has predominantly worked with interaction-based systems during the entire degree, this was a learning curve in terms of deciding how to present and produce self-standing pieces that lack the “magic” of interaction; moreover, I felt it was a good exercie in circling back to my fine art roots and finding a way to marry the traditional elements of my practice with the computational skills that I have absorbed in this course. In terms of technicalities, this was probably one of the lengthiest and most demanding programs that I have coded, and it has substantially enriched my knowledge of programming with text, working with strings, implementing and nesting custom functions and performing text analysis. Lots of good suggestions were made during the viva, which I will most likely implement when further showing the piece in public. In regard to what could have worked better, I struggled with whether to showcase a live demo of the visual element, and decided against it due to my belief that it would have subtracted the effect of the prints; moreover, I would have likes to create a more immersive space of contemplation for the works, where the audience would feel more integrated into these generative dreamscapes.
References
Concept:
Burrows, D. and O'Sullivan, S. (2018). Fictioning. Edinburgh University Press.
Camus, A. and O'Brien, J. (1991). The myth of Sisyphus, and other essays. New York: Vintage Books.
Dalí, S., Howard, R., Déon, M. and Ballard, J. (2017). Diary of a genius. 3rd ed. Creation Books.
Durozoi, G. (2002). History of the Surrealist movement. Chicago: University of Chicago Press.
O'Sullivan, S. (2012). On the production of subjectivity. Houndmills, Basingstoke, Hampshire: Palgrave Macmillan.
O'Sullivan, S., Hameed, A. and Gunkel, H. (2017). Futures and fictions. 1st ed. London: Repeater Books.
Reeves-Evison, J. and Shaw, T. (2017). Fiction as method. S.l.: Sternberg Press.
References for understanding Markov Chains and N-grams, particularly in the context of literature:
Rosettacode’s explanation of Markov Chain text generators [Available at: https://rosettacode.org/wiki/Markov_chain_text_generator ]
Visual explanation of Markov Chains [Available at: http://setosa.io/blog/2014/07/26/markov-chains/ ]
Rita.js n-gram tutorial on their Markov Chain implementation [Available at: https://rednoise.org/rita/tutorial/ngrams.php ]
Daniel Howe’s N-gram tutorial [Available at: https://www.rednoise.org/pdal/index.php?n=Main.N-Grams ]
Allison Parrish’s Markov Chains for literature programming tutorial [Available at: http://www.decontextualize.com/teaching/rwet/n-grams-and-markov-chains/ ]
Daniel Shiffman’s Markov Generation tutorial [Available at: https://shiffman.net/a2z/markov/ ]
Markov Chain diagrams (in technical section) references:
Javascript and Markov Chains [Available at: https://www.soliantconsulting.com/blog/title-generator-using-markov-chains/ ]
Markov Models Writing Fairy Tales [Available at: http://www.thagomizer.com/blog/2017/11/07/markov-models.html ]
Code:
Processing3 Tutorials - Strings and Drawing Text(1), Arrays(2), StringList(3), ArrayList(4)
[Links:
(1) https://processing.org/tutorials/text/
(2) https://processing.org/tutorials/arrays/
(3) https://processing.org/reference/StringList.html
(4) https://processing.org/reference/ArrayList.html . ]
Implementation of Markov model adapted from the Rita.js library "Kafgenstein" example [Available at: https://rednoise.org/rita/examples/p5js/Kafgenstein/#source ]
Timer implementation adapted after Daniel Shiffman's "14-1 Timer" tutorial [Available at: http://learningprocessing.com/examples/chp10/example-10-04-timer ]
Usage of createFont() function taken from the Processing reference [Available at: https://processing.org/reference/createFont_.html]
Java reference - for finding & understanding the functionalities of the StringList class [Available at: https://processing.github.io/processing-javadocs/core/index.html?processing/data/StringList.html]
Rita.js Reference - for using the RiTa library functionalities [Available at: https://rednoise.org/rita/reference/index.php]
PENN TAG SYSTEM - used for part-of-speech word extraction [Alphabetical list of PENN part-of-speech tags available at: https://rednoise.org/rita/reference/PennTags.html ]
Numerology Calculation - useful links:
(1) https://www.crystalinks.com/numerologypyth.html
(2) http://www.professionalnumerology.com/pythagoreansystem.html
(3) http://www.sevenreflections.com/more/pythagorean-numerology/