Matt Johannesen – Animated Abstraction


For this project, I decided to try making something I had been thinking about since the last assignment: a series of infinite falling or rising squares, forming some sort of colorful tunnel. This was partly inspired by some of the square works of Frank Stella:

I knew from the start that in order to get that effect to work, I would have to automatically shift the squares up or down a layer when one reached the end of its animation cycle. I figured this would be easy to do, with some sort of “for loop” and counter.


Alas, Max is not Java. I quickly learned that variables simply aren’t used very often, and not in the way that other languages use them. For instance, Max patches seem to be unable to passively read variable data – instead, a “bang” signal must be sent first in order for the value to be used. It very quickly became cumbersome to keep attaching arbitrary “bang” sources (like metronome blocks or buttons) just to be able to read a value in real time.

After about a week of fighting with Max documentation and my own preconceptions about how programming should work, I finally got a result I liked:

In order to get this working, I had to strip out some more complicated features that would have made the patch easier for me to tweak (i.e. options to switch direction and variables to make commonly used numbers). My final patch is below:

3 Comments Add yours

  1. I’m glad you persisted with this – the visual effect is very cool.

    It does take some time to absorb the Max-ish way of doing things.

  2. Sylvia Lin says:

    I like the color choices a lot! This looks like it can be used as the opening animation for some videos. Good job on grabbing the reader’s attention!

  3. Joy Tartaglia says:

    I found this animation fun to watch, and ended up replaying it a few times. I blame the spinning squares. It’s really cool watching them shrink and/or spin.

Leave a Reply