Vector Bending
Last updated
Last updated
Circuit bending is the act of interrupting electrical connections using various switches, potentiometers, or even just a few static resistors. By doing this, the user is able to modulate the electrical signals passing through the circuit. In practice, usually in audio applications this can result in strange drone-like sounds. In 2018 Youtuber Sam Battle or Look Mum No Computer took this to an extreme with the creation of “The Furby Organ''. Housed in a traditionally oak finished electric organ composed of 44 furbys each with the ability to be keyed to a different octave. With the flick of the “collective awakening switch”, the furbys all spring to life in unison. Their eyes start to blink, their furry groans of 90’s nostalgia begin to sync. A looping-freeze button sustains them into an endless tone - reminiscent of the jarring sound of a computer program freezing. The guts of the machine are a nest of wires and terminal strips connected to each Furby’s PCB board.
Oddly enough, this idea of bending signals can be applied to digital applications as well. Digital images or video are composed of data. Opening a .jpeg into a text editor results in a seemingly incomprehensible series of characters. By modifying this text even a little results in a jpeg with large sections of recolored areas of the image. Modifying this text significantly might result in the image being corrupted. Below is an example of a .jpeg file opened in a text editor:
.SVG files [vectors], opposed to .JPEG files [rasters], are based on XML and are human readable when opened in a text editor. Looking closely at the code that makes up an .SVG file we’re able to recognize recurring syntax. The "Fill" for instance refers to the colors used in the vector file. “Path” refers to the specific node handles that make up each vector shape. Vectors are simply shapes determined by points. Similar to a connect the dots puzzle. Each “node” represents a dot, with the string of numbers corresponding to where these nodes exist on the virtual canvas. Since vectors rely on geometry rather than pixels, they are infinitely scalable. There are no low quality images, simply shapes and paths filled with a color. A vector could be scaled from the size of a sheet of paper to the side of a building. Below is an example of a .svg file opened in a text editor:
Hypothetically, if given the correct information - any image could be created using these methods. This might be humanly impossible, however since vectors are a lot more human readable this feels a little easier. By modifying existing node handles we can visualize change within the file. By automating this process, a dataset could be applied and the changes could be generative and more quickly recognized. For the purposes of this text I will be using the programming language Processing. Initiated in 2001 by Casey Reas and Benjamin Fry, Processing is an open-source programming language for artists. I will be assuming you’ve familiarized yourself with some of its concepts for this next part.
Global Settings
numCopy - the number of output files we ultimately want. Be careful with this number.
corLevel - the corruption level. The higher the number the more extreme the bend. I keep this below 10,000.
colorRefresh - true or false, this allows the program to grab new colors for each file. Some colors might be picked more than once.
colorNum - how many colors we might want. Maximum is 16.
Draw
This is where the magic happens. This program is essentially translating a vector file into a String, or series of characters. It will skip the first 30 lines of the selected file in order to prevent corruption. Then, based on the value of corLevel, it will cycle through each character looking for a random number (between 10 and 150). Once found, it then replaces this number with another number (between 0 and 500). This section can be modified; however, I’ve found an aesthetic sweet spot here.
Recolor
Before outputting a file. The program will replace the original color data or the fill section of the file with a new color. These new colors are pulled from a list, taken from the 16 unique colors of the Commodore 64 system. A nostalgic source of computing for me.
We can simply drag and drop a .SVG image into the sketch and start getting some outputs. Let's start with this image.
The new file is then saved in the sketch folder of the program. Here are some examples: