Glitch GIMP

On Wednesday 29th April I gave my Allowing Mistakes to Happen presentation at Libre Graphics Meeting in Toronto. I was quite anxious about this because the attendees are, typically, developers of software and/or graphic designers. Looking through the archives I found only a comparatively small amount of presentations from artists talking about their artwork and even fewer from those you might call experimental artists (glitch art, generative art etc).

My fears were put to rest somewhat once my presentation actually happened. Despite my computer crashing towards the end (glitch lol) it seems to have struck a chord with many of the attendees. It seemed that they liked that I was turning bugs and the bug hunting process into a form of art.

One such person that was inspired was Michael Natterer, aka Mitch, one of the developers for GIMP, the premier open source photo and image editing software. He showed me how by changing one option when compiling Cairo the contents of the image window would be glitched.

Glitch GIMP

Of course I was quite impressed by the prospect of having a full-featured editing program that could produce only glitch art, so quickly sought advice on compiling it for myself. Presented below are instructions for creating your own glitched GIMP.

Before we go on

This compilation process and the resulting binary file has only been tested on Ubuntu 15.04. I have no way of knowing if the same will work on Windows, Mac OSX or any other flavour of Linux. Also, this tutorial assumes that you have some knowledge of compiling software. If this is all daunting to you go do some research.

…and now we begin

To avoid conflicts we’re going to compile and install Glitch GIMP to its own directory, leaving the original GIMP unmodified.

First create build and installation directories.

mkdir build
mkdir install
mkdir install/share/
mkdir install/share/aclocal

In the build directory you’ll need to create a file which will hold our environment variables.

cd build
touch env.sh

These environment variables will tell the computer where to install GIMP. A word of caution, these environment variables are valid for the current session. In other words, if you close your terminal window you’ll have to load these in again. Fill you env.sh file with the following, changing the first line to point to your install directory.

PREFIX=/~
export PATH=$PREFIX/bin:$PATH
export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH
export XDG_DATA_DIRS=$PREFIX/share:$XDG_DATA_DIRS
export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules
export ACLOCAL_FLAGS="-I $PREFIX/share/aclocal"
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH
export CPPFLAGS=-I$PREFIX/include
export LDFLAGS=-L$PREFIX/lib

Now fill your session with those variables.

. env.sh

Now we can begin compiling! You’ll have to install GIMP’s dependencies and an extra library.

sudo apt-get build-dep gimp
sudo apt-get install libexiv2-dev

Still in the build directory you’ll now have to clone parts necessary to compiling GIMP.

git clone git://git.gnome.org/babl
git clone git://git.gnome.org/gegl
git clone git://git.gnome.org/gexiv2
git clone git://git.gnome.org/gimp

And Cairo.

git clone git://git.cairographics.org/git/cairo

And now, compile and install babl and gegl:

./autogen.sh --prefix=/path/to/install/directory/
make -j4
make install

hint: if, like me, you have four processors you can run

make -j4

to speed up compiling.

In gexiv2 run:

./autogen.sh --prefix=/path/to/install/directory/
make -j4
make install

In the cairo directory run

./autogen.sh --prefix=/path/to/install/directory/ --enable-xlib-xcb=yes
make -j4
make install

(this is the compile option that causes the glitches 😉 )

And finally, compile and install GIMP

./autogen.sh --prefix=/path/to/install/directory/
make -j4
make install

In your install/bin directory you should now have a file called gimp-2.9. Run this and let the glitch begin.

Glitch GIMP

Glitch GIMP

Glitch GIMP

Glitch GIMP

One thing you will instantly notice is that you can’t directly export the glitch output to a file. This is for display only and, like true glitches, can’t be easily replicated or captured. The only way to do this is to take a screenshot, which is ideal for on-screen display but not so great if you want print quality output.

I’ve been told that I could produce some more reliable glitches by creating or hacking GEGL plugins. I haven’t delved into this yet but if anyone wants to assist please do get in touch.

Thanks

I never would have gained this knowledge had I not been able to attend Libre Graphics Meeting. As seen in the forum thread describing how I came across the databending in Audacity method, trying to ask developers how to creatively break your software can be a confusing task. However, being able to show the developers IRL what can be produced allowed the flow of information to be smoother and more productive than an e-mail exchange would have been.

Libre Graphics Meeting will be coming to London in 2016 and the aim is for it to be free for all to attend, and to cover travel costs of speakers, as it has done every year. If you want to help more stuff like this happen donate now.