allPossibleImages

an installation for the BeOS.

version 1.0

by douglas irving repetto

screen shot
download allPossibleImages 1.0 (xxk)



allPossibleImages is the second in a series of pieces i am making that run under the BeOS. the first in the series was SineClock.

allPossibleImages presents an 8x8 grid of small blue lights (LED's). working at a rate of about 10 per second, it is steadily cycling through all the images that can possibly be displayed on such a grid. the number of possible images is immense, and it will take far longer than the life of our solar system to complete the cycle. pull up a comfortable chair!

huh?

the history of electronic music is full of claims that some new technology will now allow us to create and manipulate "all possible sounds" or "all sounds imaginable." i think it's interesting to think about the intersection and interaction of the sets of all possible sounds, all imaginable sounds, and all sounds that can be captured/created with current digital technology. i don't think that they form a union, that is, they don't all overlap. since there are an absolutely ridiculous number of sounds in the set of all possible sounds that can be captured/created with current digital technology (for instance, all possible one second, 8-bit, 8k SR sounds would be represented by an 64,000 bit number!), i decided to explore something slightly less ridiculous, like all possible 1-bit, 8x8 images . . .

using allPossibleImages

allPossibleImages requires Jon Watte's LibPrefs. check http://www.be.com/beware/Libraries.html for the latest version. you probably already have it installed.

double click on the allPossibleImages icon. the main window will appear, and the images will begin cycling. fascinating.

you can use the mouse to turn individual LED's on and off. you can draw a picture and then watch as it slowly decays. allPossibleImages is a replicant, so you can drag it to a container (like the desktop) and leave it there until the end of time. check your BeOS documentation for info on using replicants. briefly: go to the Be menu and select "Show Replicants." a little hand should appear in the corner of the allPossibleImages window. use that hand to drag the image to the desktop. now go back to the Be menu and select "Hide Replicants" to get rid of the little hand.

allPossibleImages will remember its window position, as well as where it is in the cycle of all possible images, when you quit or shut down your computer. the next time allPossibleImages is run, it will continue cycling from where it left off.

technical info on allPossibleImages

the 8x8 grid has 64 LED's in it. i treat those LED's as bits in a 64 bit binary number. by counting from zero to 2^64 - 1, and displaying each number's bit pattern on the grid, i cycle through all of the bit patterns/images possible with a 64 bit number.

it's easier to imagine using smaller numbers: let's say i'm using a 2x2 grid. that would give me 4 bits. with four bits you can represent 2^4 or 16 different numbers, and by counting from zero to 15 and displaying the corresponding bit pattern for each number, i would cycle through the 16 different possible images. the images in the 2x2 grid wouldn't be very interesting though - there's not a lot you can do with just four pixels!

with a 2x2 grid we get 2^4 or 16 different images. with an 8x8 grid, we get 2^64 or 1.84467440737096E+19 (18,446,744,073,709,600,000) different images! at ten images per second, it's going to take a really really really long time to display all of the images. let's see, 10*60*60*24*365 gives us a rate of 315,360,000 images a year. 2^64/315360000 = 58,494,241,735.5 years to finish the first cycle. then allPossibleImages will start again at the beginning.

the bits are arranged in a spiral starting from the center of the grid. although i count linearly from 0 to 2^64 - 1, i use grey code to determine which LED's to turn on/off for each bit pattern. this lets the image develop/change smoothly, without the mass turn-offs that would happen if i used straight binary. for example, going from 15 (01111) to 16 (10000) in binary is a pretty drastic change. grey code ensures that only one bit changes for each transition.

hardware version of allPossibleImages

i'm working on a hardware version of allPossibleImages. it will be as small as possible, hopefully small enough to be worn as a pendant. i will do a limited edition of (probably) ten. if you're interested, see my contact information below.

license:

allPossibleImages is artware. if you use and like it, send me something you've made. please ask me before including allPossibleImages on any sort of software compilations, CD's, etc.

contact info:

douglas irving repetto

email: glmrboy@shoko.calarts.edu
email: douglas.repetto@dartmouth.edu
web: http://shoko.calarts.edu/~glmrboy

permanent land:
2046 bellemead ave
havertown, pa
19083-2221 USA

temporary land (good at least through 1998):
6187 hinman
music department
hanover, n.h.
03755 USA