GlitchSort is a Processing application that uses interrupted pixel-sorting to create glitchy images. Since it has found an audience among glitch artists, I’m setting up this page as a point from which to download a current version and reference materials, as these become available. I’ll also post news or links to news about GlitchSort here.

GlitchSort 1.0b10, for Processing 2.0, is available as of June 7, 2013: Processing 2.0 fixes the image memory leak that plagued previous releases. Note that GlitchSort for Processing 2.0 requires ControlP5 2.0.4, which is not bundled with the Processing application (it is bundled with the standalone applications).

There are bundled applications for Windows32, Windows64, MacOSX, Linux32 and Linux64: YMMV as far as running these. If you have Java installed, they should run, but I have only tested them on MacOS.

The bundled documentation is for version 0.1b8, but I describe new features below and in the source code.  Here is a higher resolution version of the manual (33M PDF) with much better image quality. The print version (60M PDF) offers the highest resolution, for printing. Online reference manual can be viewed here (1.6M PDF). Download or view the optimized high resolution version (33M PDF) here. Very high resolution print version (61.5M PDF) here.

GlitchSort2 Manual Cover

GlitchSort2 Manual Cover

Version 1.0b10 adds commands that use capital letters (shift key + key). These change the behavior of the save, revert, open and turn 90° commands. See the changes.txt file or comments in the code for details. 1.0b10 also allows you to set a percentage of zigzag sorting.

GlitchSort 1.0b9, the last version for Processing 1.5.1, is available here: GlitchSort_v01b9.

Version 1.0b9 revised the zigzag sorting by providing check boxes to set zigzag sorting to random angles, aligned angles,  or angles permuted in blocks of four. It also adds the scaledLowPass method, a low pass filter on each RGB channel with a different FFT block size (64, 32, 16) for each channel. The component order depends on current Component Sorting Order setting, when the RGB channels are used. If you are using HSB channels, a random RGB order will be selected.  Currently this command is only triggered by the ‘)’ (right parenthesis) key command. It works best when pixel dimension are multiples of 64. After it executes, you can immediately use the statistical FFT command (‘k’) to sharpen the image. Amazingly, most of the detail that was lost with the low pass filtering will be restored by the default statistical FFT setting (set by the command to operate on 16 x 16 pixel blocks). The command takes time to execute because it’s really a long series of commands bundled together. It was an experiment that proved very rich in the variety of images it could create. Here’s an example.

Version 1.0b8a fixed the denoise command to handle edge and corner pixels correctly, and changed the ‘_’ (underscore) hack to repeat the last command four times, with a 90 degree rotation between executions, when last command is in “gl<>9kjdGLKJD”.

Version 1.0b7, a substantial update, supported Fast Fourier Transforms on images. It also saves JPEGs using current Java libraries, instead of the deprecated com.sun.image.codec.jpeg. Version 1.0b8 fixes a bug in the audify command, and adds a “denoise” filter and spatial shifting of color channels: that was enough to justify the new version number. I discussed GlitchSort version 1.0b7 pre-release on December 7, at a Share Session at GLi.TC/H.

Version 01b5, released on August 23, 2012, was the first public release named  “GlitchSort” instead of “GlitchSort2.” Version 01b5 provided a new sorting tool that operates on zigzag-scanned blocks of pixels using any of the available algorithms, and a color quantizing tool.

Version 1.0b4, released on August 1, 2012, offered four different sorting algorithms, each of which has a different behavior that can be used to affect images in different ways. It added the “munge” feature that does glitchy compositing, and the “degrade” command that uses JPEG compression to degrade an image.

My own images created with GlitchSort can be found at

Video TurtleBoids Demo

Video TurtleBoids Demo Applet

Video TurtleBoids Demo Applet

The Video TurtleBoids Demo Applet is a Processing applet that captures video, derives optical flow vectors from it, and then uses the vectors to change the velocity of a flock of “boids” that can also draw lines (i.e., behave like Logo turtles). You will need the IgnoCodeLib library (the .jar file is included in the Code directory) and the ControlP5 library (not included, available for download at

Based on Flocking, by Daniel Shiffman, in The Nature of Code, a demonstration of Craig Reynolds’ steering behaviors (see also Also adapts code from Optical Flow by Hidetoshi Shimodaira from

Download the VideoBoidsDemo. It will not run in a browser, and it does require a video input to function.


Video TurtleBoids

The Video TurtleBoids installation on view at What It Is through May 2012 uses “optical flow” from a video camera to control the motion of a flock of “boids” that also know how to draw. The optical flow is visible as gray lines indicating the motion of people, vehicles, etc., seen by the camera. “Boids” is Craig Reynolds’ humorous name for the flocking behaviors he described in the 1990s. “Turtle” is a term from even earlier, from the Logo programming language that grade school children once used to make drawings with a “turtle” that carried a “pen” around the screen.

Video TurtleBoids installation

This software was written in the open source language Processing. I am using Daniel Shiffman’s adaptation for Processing of Craig Reynolds’ steering behaviors. The optical flow code is by Hidetoshi Shimodaira, from the OpenProcessing web site. The drawing code is my own adaptation of TurtleGraphics, available in my open source Processing library, IgnoCodeLib.

Welcome Jack Koo

For the next few months Ignotus Editions is pleased to welcome an intern from the School of the Art Institute of Chicago, Jack Koo. Jack will be learning color workflow and printing, helping Paul Hertz prepare a one-person show due to open in May at What It Is. He’s also dedicating time to web design and programming. I’ve asked him to write occasional posts on his experience at Ignotus Editions, both to document his internship for SAIC, and to inform interested readers about some of the work that is done at Ignotus Editions.

IgnoCodeLib for Dorkbot

Thanks to everyone who came to Dorkbot this evening. It was a real pleasure to show pictures on paper and talk about the algorithms that produced them. Better than a gallery show, I said when I got home.

I promised I would post a development release of my code, so here it is: IgnoCodeLib. It should be pretty stable, though there are a few rough edges (bounds rectangle caching in BezShape and its subclasses seems shaky). Let me know how things go if you try it. I should have a new release version in a month, properly announced on the Processing forum, posted to Google Code, and available here.

BTW, the examples to try first (the newest ones) are Polygons, EllipsesAndCircles, and DrawMulti. Not all of them are commented yet–but y’all read code, n’est-ce pas?

Dorkbot Presentation

Thursday, October 27, at En3my Sound, 1550 N. Milwaukee Ave., 3rd floor, in Chicago: I’ll be presenting the newest version of my Processing library, IgnoCodeLib. I may even be so lucky as to have it online and ready to download. If not, expect an announcement soon. IgnoCodeLib provides a framework for 2D graphics using Bézier curves and straight lines. It can export its graphics to Adobe Illustrator. Moar information can be found on the Dorkbot Chicago site.

I’ll also hang some of my most recent work, created with my library. I’ve been posting much of it to Flickr, to the Sampling Patterns 55 set (a selection from the larger Sampling Patterns set) and recently to the Tree Jive set. This animated GIF, Not a Glitch, was created with the Tree Jive algorithm. My page on on Open Processing has some samples of the library used for animation.


Not a Glitch, animated GIF

Not a Glitch, animated GIF, created with Processing and IgnoCodeLib


Update: for those curious about the algorithmic technique behind the Tree Jive patterns, L-systems or string-rewriting systems, I recommend Prusinkiewicz and Lindenmeyer’s book The Algorithmic Beauty of Plants, available in a free, high-resolution version on the Algorithmic Botany web site.

GLI.TC/H 2011

The GLI.TC/H Festival Kickstarter Project, GLI.TC/H 0111!?▐▐▐▀▀▀▀▀▀▄▄▀▀▌▌▌▐▐▐DIT▀▀▀▀▀Do▄it▄2gather▀▀▀▀, appears to have the necessary funding and then some. Building on the success of GLI.TC/H 2010, GLI.TC/H 2011 will take place November 4, 5, and 6 in Chicago, November 11 and 12 in Amsterdam, and November 19 in Birmingham, UK.  Check it out. Pledge: an over-the-top festival deserves to go well over the top.

Is This Thing On?

A work by Darrell Luce, Painting with Balls, for Maurice de Vlaminck, Jasper Johns, and Murakami Saburo (encaustic and oil on canvas, with collaged elements, 42 x 18 inches, 2000), is included in the group show Is This Thing On: The Art of Comedy, curated by Miguel Cortez.

For Painting with Balls Luce “appropriated” a computer print from fellow ignoStudio member Paul Hertz and threw paint-loaded balls at it. He combined the results with a painting in encaustic loosely inspired by Disney’s The Sorcerer’s Apprentice and Italian Renaissance cartoons. The work cites Work Painted by Throwing a Ball (1954) by Murakami Saburo, a member of the Japanese avant-garde group Gutai, Jasper Johns’s Painting with Two Balls (1960), and Fauvist Maurice de Vlaminck, who winningly declared: “I try to paint with my heart and loins, not bothering with style.” The senior member of ignoStudio, the former carnival mentalist J.T. Pescador (stagename, “Ignotus the Mage”) interpreted Luce’s painting as a sendup of the macho challenge: “Hay que poner los huevos sobre la mesa a ver si alguién te los corta. (You’ve got to put your balls on the table to see if anyone cuts them off.)”

Computational Aesthetics 2011

Two large format digital prints by Paul Hertz will be shown in the juried art show at the annual Computational Aesthetics conference, held this year in Vancouver, Canada from August 5 through 7. The archival inkjet prints from the artist’s recent “Sampling Patterns” series, Ponente and Shimmer, were printed at Ignotus Editions.

Selections from the Sampling Patterns series can be viewed here, in a Flickr set. The series was developed with the Processing programming language, including Hertz’s Processing Library, IgnoCodeLib.

Artist’s Statement

Ponente and Shimmer are based on regular random distributions known as “blue noise.” Natural phenomena such as identically charged particles jostling for position within a limiting boundary or a flock of birds adjusting their mutual distances have similar distributions. Blue noise dot patterns have interesting visual and cognitive effects: Their regularity seems to imply an order just about to emerge, which their randomness negates. These and other works in my “Sampling Patterns” series are snapshots from interactive real-time animations where the geometric points of the distribution are used to sample functions that control color, scale, shape, and other visual attributes. The snapshots are further edited to produce prints.

In Ponente, blue noise grids determine the locations of distorted circular shapes in different scales and granularities. Low frequency wave functions control variations in scale and simple coloring rules distinguish different layers of shapes or populations within each layer. In Shimmer, a distribution is partitioned into three populations that are distinguished by algorithmically determined colors. Each population has its own shape-generation rule. A global rule for shape orientation (a wave function) creates swirling motions over the visual field.