09
Automatic Writing:
EEG to Text
07.10.2024 ~ 13.10.2024
Surrealist Techniques
Now that the research proposal has been submitted, I am moving back into making without worrying about the structural integrity. And with more idea derived from surrealist techniques.
Surrealist techniques weren’t meant to create art as we typically understand it; they were meant to access something more raw, more chaotic, letting the unpredictable subconscious drive the creative process.
Automatic writing is one such approach: the writer lets their hand move freely across the page, spilling words without censorship, tapping into streams of thought that usually stay hidden beneath rational filtering.
Then there’s the Exquisite Corpse, a group exercise where each artist adds to a drawing or text without seeing the whole, letting randomness and collaboration steer the outcome. It results in a piece that’s unpredictable, something that a single mind could not construct.
There are more well known techniques like frottage and grattage. Max Ernst would rub a pencil over a textured surface or scrape layers of paint off a canvas, revealing unpredictable textures and forms.
Decalcomania pushed this further—paint is squished between surfaces, pulled apart, and what’s left is strange, organic imagery, as if the material itself has intentions or forms waiting to emerge.
These surrealist techniques were as much about exploring new modes of thought as about creating art. They embraced randomness, letting machines of their time (like cameras and record players) play a role in bypassing conscious thought.
I would like to say that these techniques show that creativity is more about discovery than invention, more about welcoming what the mind tries to hide than constructing what it already knows.
Automatic Writing
As mentioned above, automatic writing is a technique where a person lets words flow onto the page without consciously directing the process. I would like to reinterpret this technique using EEG as input.
To do this, I’d need to first create an index of words, then define a method to map the data to specific words and translate that into text. First, to define my word list, I began looking for a relevant ‘dream dictionary’.
The Dream Dictionary
One possible option was the DreamBank, an online archive of dream reports gathered from various sources over the decades. It organises thousands of dreams by demographics, themes, and contexts, making it a suitable resource for studying patterns in dreams across different populations.
Although this could be a fun and extremely comprehensive option, it felt overwhelming to use as a part of an exercise. To use this, I would need a very well structured and justifiable method just to extract the words. So, I moved on to looking for a more concise index of words related to dreams.
Ten Thousand Dreams Interpreted is a popular dream interpretation book written by the American author Gustavus Hindman Miller, originally published in 1901. The book is a reference for symbolic interpretations of a wide range of dreams, cataloging thousands of different symbols, scenarios, and objects commonly encountered in dreams and the possible meanings for each.
While Ten Thousand Dreams Interpreted is now considered somewhat dated and lacks a scientific approach, it has inspired subsequent works on dream interpretation. As I am not necessarily looking for a scientific and grounded index, I actually like that Miller’s approach is rooted in the beliefs of his time, since it can be connected to 'non-rational' ideas (from our vantage point in history) such as folklore, early psychology, and mysticism.
Creating the Index
For the grammar, I divided the index into specific word lists: adjectives, nouns, verbs, adverbs, prepositions, and phrases related to places. These words were stored in arrays and loaded from text files so I can map specific brainwave values to different words.
The main reasoning for this was the grammar, but because it is crucial choice in creating the outcome, it will definitely be revisited later on. Especially if I choose to use a more grounded approach that reflects the psychological state.
Translating to Text
As usual, the code receives real-time brain wave data across four channels from the EEG device. For this experiment, I chose alpha and theta values to align with the surrelist concept. The two particular wave types reflect the relaxed and light sleeping state, and where the consciousness drifts on to the unconscious.
Then, I "constrained" each of the brainwave channel’s value to fit within a range of 0 to 1, making it easier to work with. These values are then multiplied by the length of a word category list to select a specific word. For example, if an alpha channel is 0, it will select the first adjective from the list, whereas a lower value would select one further down.
Sentence Structures
Each time a new sentence is generated, a random structure is chosen from a few options (e.g., “The [adjective] [noun] [verb] [adverb]” or “The [noun] [verb] [adverb]”). I tried to add variety to each sentence while keeping it grammatically correct.
Each sentence is appended to the ongoing text to create a continuous narrative or "novel." The program automatically advances to the next word in the sentence at a different speeds. First, once 3 seconds, then by the typing speed of the type animation.
StreamDiffusion
The text by itself feels a bit dry. Although I have yet to complete the novel generator, I am also exploring real time prompting as a side quest. In trying to find ways to visualise the generated text, I turned towards diffusion models. A diffusion model is a type of generative model, where the goal is to produce data that resembles the training set, typically images or text.
The model starts by training on data that has progressively added Gaussian noise, essentially corrupting the original data until it resembles pure noise. In reverse, during generation, it learns to progressively "denoise" the noisy input, removing small amounts of noise in each step to reconstruct the original-like data from random noise.
I set up StreamDiffusion, a model designed specifically for generating images in real-time, making it especially useful for interactive applications. Unlike older models like StableDiffusion that require a lot of computing power to generate one complete image, StreamDiffusion is optimised for faster performances that can result in continuous outputs.
I have started experimenting, but I am unsure if and when I would implement this into my dream journal. There were some unexpected imagery from the diffusion model, but I feel that my lack of understanding how the model works made it less appealing. I might start with a simpler approach, maybe by looking into real time prompting.
Moving On
Now that my RPO is finished I can finally start to explore deeper into surrealist automatism without worrying about the structural integrity. This will be extended to around week 14, since by then my plan is to be brainstorming and Prototyping for my first iteration of the interface that will be used for my dissertation.
Although this week's experiments are not finished yet, I will be moving on to other experiments and prototypes so I can touch upon different areas within the semester. Next week, I plan to start another experiment, this time based on automatic composition. I could explore different ways of creating music as output.