LIPP Week 3

Here are a few Max patches that I worked on over the last week. The first two are smaller patches that explore specific concepts and effects, and the last one is a video playback system that I made for a performance at the 1+1=3 series that happened last Friday.

I feel like I’m starting to understand the ins and outs of Max a lot better, but I’m still struggling to effectively organize my patches. Moving forward, I want to start using send and receive more often, and try to break up my patches into self-contained areas.

That said, I’m really excited about programming in Max - coming from a sequential coding paradigm, it’s so nice to be able to connect inputs and outputs and visualize data flow in real time.

Randomized Grid

This patch demonstrates how to use the matrixctl and router objects to randomize the mapping between jit.scissors and jit.glue, which creates a sort of randomized grid effect on a source video. This is actually an improvement that Matt made on my original patch, which used a non-standard mxj object to interleave 3 lists at once. Matt rewrote the patch to use a combination of zl.lace and zl.group to accomplish the same effect.

# Shaders in Jitter This patch demonstrates the bare minimum setup for applying a shader to a video texture in Jitter. I'm using `jit.gl.gridshape` to apply the shader and texture to the `jit.gl.render` context, but I think I might actually be better off using `jit.gl.slab` in the future. The thing that can be a bit confusing about this workflow is that many of the `jit.gl` objects are connected via a shared namespace, rather than inlets and outlets.

1+1=3 Performance

This patch is a video playback system that I built for my performance at 1+1=3 last week. This patch includes playback of GIFs using jit.movie, switching between a microphone and recorded audio samples, a glitchy downsampling effect controlled by beat tracking on audio, and the jit.chromakey video feedback effect that was demonstrated in last week’s class.