The EEGen Project by Galya Oberman is a concluding project created for the Design | Cultures + Creativity program at the University of Maryland.
The project aims to combine the worlds of neuroscience and art in an accessible, easy to understand, and relatively inexpensive way. It strives to allow even those with rudimentary knowledge of circuitry and programming to experience neuroscience in a new and exciting way through the derivation of open source material. By utilizing a homemade EEG circuit and program, brain waves are used to influence the generation of art which is displayed on this site in the form of videos and still images.
The code and circuit used for this project can be found at GitHub here:
HOW IT WORKS
The project is composed of two main parts: the circuit and the program. The circuit retrieves brain wave voltages from the scalp and sends them through an Arduino into a dual monitor computer system, where one computer runs the prompt system and the other runs the art program.
The circuit is created using two electrodes, an amplifier, a DC bias, and an Arduino.
The program is created using Processing, and is comprised of three parts: brain wave plotter, prompt system, and generative art output.
The circuit utilizes two electrodes: one for frontal lobe reading (at Fp2, as per the 10/20 positioning system) and one for ground. The ground electrode works to cancel out excess signal being received via muscle activity, and is placed on the mastoid process behind the ear.
The amplifier is composed of an op-amp and potentiometer, where the potentiometer allows for adjustment in the amplification of signal.
The DC bias adds a 2.5V bias to the brain signal, centering it between the Arduino’s analog input range of 0-5V to avoid signal clipping.
The Arduino then feeds the analog voltage information into the computer and communicates with Processing via the serial library.
The brain wave plotter simply plots the voltages being read onto a scrolling screen.
The prompt system is shown to the participant that is hooked up to the circuit. Prompts ask the user to speak out loud and perform a variety of small tasks to try to stimulate varying brain waves to trigger more events.
The generative art acts as a trigger system, in which events within the art are caused by a match between input brain wave voltage and the program’s randomly chosen values for each event. The art itself is derived from Attraction/Repulsion by Chris Riebschlager.
The program is composed of particles, attractors, and repellers, which work like magnets to push and pull particles across the screen, respectively. There are seven triggered events and variables that are influenced by the brain’s input:
- add an attractor – adds an attractor to the screen
- add a repeller – adds a repeller to the screen
- clear attractors and repellers – clears all atrractors and repellers currently onscreen
- add particles – adds a number of particles (randomized from 1 to 50) to the screen
- change particle color – changes the color scheme for the next set of particles that get added to the screen; is determined by pixel colors pulled from a series of twenty brain images:
6. particle color noise – variable that alters the amount a particle’s color varies as it moves around the screen
7. attractor and repeller noise – controls the amount of wiggle attractors and repellers have as they move across the screen.
The program saves frames of the art as it generates in real time, which are then converted into videos or published as still images on the site.
Posts are tagged by image type: video or still image. Posts can be filtered by type by clicking the 📷 Gallery or 🎥 Gallery links at the top of the home page. All posts are labelled with the initials of the participant who created the art, and those can be searched using the search bar in the footer.
In addition to the participant’s initials, videos are accompanied by a list of events that occurred during the art’s generation and the time at which they occurred. Keep in mind that the art program initializes at 45 seconds into the entire program’s run.