Paloma Kop

Navigation menu

Paloma Kop

Patch Log

A log of my patches created during Week of Patching

Table of Contents

Day 1: Colors Panning

I plan to use this Week of Patching to explore making visual (and possibly audio-visual) patches in TouchDesigner[1]. Unfortunately, I didn't have as much time as I would have liked to work on this today. This is kind of like my "hello, world" patch for doing some kind of video synthesis in TouchDesigner. First, here's a video of the resulting output:

A screenshot of the patch (click to zoom):

Screenshot of touch designer patch

And an explanation of what's happening:

  • I used four different "noise" CHOPs[2] with different seeds to generate four different one-dimensional arrays of randomized wiggles.

  • I animated the "translate X" parameter to make them animated.

  • I then used the "CHOP to" texture operator[3] to convert them to video streams, and "transform" TOPs to stretch them from 1D to 2D "noise fields".

  • I used a "reorder" TOP to take the first three noise fields and map them to red, green, and blue of the resulting video image.

  • I took the fourth noise field, which was rotated 90º, and used it to "displace" the color image from the other three, adding undulating horizontal wiggles to the otherwise vertical bands of color.

  • I used a "math" TOP to decrease the overall brightness, which also made the colors look more appealing to my eyes.

  • I took a "constant" TOP, generating a black video image, and composited it with the main video feed, to give it a solid background. (The only reason the other TOP is feeding into the "constant" was to quickly make it automatically have the same resolution.)

  • A "movie file out" TOP serves as the method for recording output.

As I went through the process of creating the patch, exporting the video file, taking screenshots, and writing this post, I observed that the actual patching was only about 25% of the total time that went into making this post. Since it's my first post, I will probably be able to do the rest a little more quickly, and I'm on semi-vacation so I should have more time for actual TouchDesigner noodling and troubleshooting. But I think this is actually a good microcosmic example of how making art works: if you want to document and share your process and make it legible to others in some way, it often requires a significant time commitment. But at the same time, it also helps me learn by having to explain what I'm doing, and it could be of benefit to future me as well.

Anyway, when I have more time on the patching side of things, I hope to figure out how to send the noise CHOP outputs to my eurorack audio interface so that I can make a sound component that follows the same modulation source as the colors. But at first glance, I wasn't able to figure out how to do multichannel output yet. (I didn't even know how to record to a video file until just now!)

If anyone wants to play around with the patch, you can download the TouchDesigner file below. (It should work with the free version since it's set to a small resolution.)

📁 colors_panning.5.toe.zip


  1. TouchDesigner is a node-based software for creating interactive media systems, including image processing and generation, 3D modeling, and some audio and data processing, mostly geared towards live and realtime applications ↩︎

  2. CHOP is short for Channel Operator, which is basically how TouchDesigner refers to processing nodes related to audio, or anything that resembles an audio stream (like an LFO) ↩︎

  3. Texture Operator, a.k.a. TOP, is basically how TouchDesigner refers to processing nodes related to video streams ↩︎

Day 2: Sphere

Second day patch! This is a weird one, and it isn't really what I set out to do... But then, I don't really know what I was trying to do anyway. I definitely figured out some more quirks of TouchDesigner. The aesthetic result is... questionable? IDK, it looks like this:

A screenshot of the patch:

Screenshot of touch designer patch

This one uses an actual 3D scene, a very simple one with just a floating sphere, two lights, and a camera. The phong material applied to the sphere has a texture that is being generated by a pulse wave, with the phase being animated, so it looks like a slowly scrolling series of vertical lines. The pulse wave is set to a high frequency, so the stripes are dense and numerous — but the resolution on the "render" TOP is set to pretty low (180 x 180 pixels), so those stripes are getting aliased to hell. That aliasing is what is creating the moiré patterns. Plus the texture mapping on the sphere is "equidistant azimuth" mode, so without the aliasing, it actually looks like this:

A weird stripey sphere

Weird, right? At some point in the process, I also tried animating the resolution with an LFO, but animating the phase of the pulse wave produced smoother movement, so I went with that. Not sure I'd do this exact thing again, but I work for an art studio that makes op art with lots of dense, skinny lines, and I am constantly fascinated by the patterns they produce in the scaled-down thumbnail images. I always wondered if I could do something with that idea. The result is that I guess I can, but it looks very strange, and the visible upscaling artifacts / crunchiness is hard for me to embrace aesthetically.

Anyway, I'm out of time for today. Looking forward to seeing what else happens, now that I kind of know how to use this program better!

Here is the TouchDesigner file if anyone wants to play with it:

📁 sphere.6.toe.zip

Day 3: Reaction Diffusion Orb

Here's my patch for Week of Patching day 3! This one combines a simple reaction diffusion system with an orb (clearly one of my favorite shapes).

A screenshot of the patch:

Screenshot of touch designer patch

The top half is the reaction diffusion system and a bit of processing. It uses noise as a seed for a feedback loop, with a blur, sharpen[1], and transform within the loop part of the chain. blur and sharpen are the minimum to get reaction diffusion system; the transform introduces a tiny bit of movement (scale up and rotation) to keep the pattern from settling into a static image.

At the end of that chain, I scaled the whole image to 50% width because that seemed to be the best for mapping it to the texture of the sphere.

After the sphere is rendered, I used an "edge" TOP to grab the outlines of the pattern. I liked the look of the pattern as a set of contours rather than solid black and white shapes. The blur and level are just there to tweak the texture and quality of the resulting imagery.

I realized while clipping the file afterwards that I was dropping a lot of frames. Makes sense, as I had the render section scaled way up so that I could antialias later by downscaling. Might have overdone it though. Also, the whole thing is sped up. I probably should have tweaked the resolution of both the 3D render and the texture generation for a more balanced approach. Oh well, apologies in advance if you open the patch file and it lags like hell:

📁 reaction_diffusion_orb.7.toe.zip


  1. Sharpen is not a built-in node type in TouchDesigner, but it's available as one of the default image processing components. ↩︎

Day 4: Pseudo Rutt Etra

After feeling like I had gotten the hang of TouchDesigner more, I got excited and started having some ideas of things I wanted to try (instead of the other way around, noodling around and letting the results be determined by whatever ended up happening). I ran into the same situation I have in the past, which is that TouchDesigner is a very difficult program to learn this way. It seems that most people learn by seeing a lot of examples of how other people have implemented things, before they begin to build from scratch more. Well, as someone who often tries to build things from scratch — partly because I have Ideas of things to try based on my experience with other systems, and I don't see any examples of how to do them — I find this frustrating.

I really wanted to find a way to map brightness to depth, so I tried making a few things on my own using the "grid" SOP and some of the new POP operators, and almost got things to a point of being cool, but then I dragged something into something else that froze things and had to kill the app... only after which I realized I hadn't saved. This happened several times.

So I set my ego aside and searched for some tutorials that might at least get at parts of what I wanted to do, such as converting an image to a grid in 3D space, etc. I ended up finding this Pseudo Rutt Etra tutorial video by a person called "lateness," which I liked because it is actually pretty straightforward, unlike some others on similar topics. And they explained at least some of what they were doing, and I was able to replicate the results (at least until I diverged at the end of the chain to add my own color scheme). Here is a video of the output:

And a screenshot of the patch:

Screenshot of touch designer patch

The main patch is driven by a grid, with its x and y units set by a "constant" CHOP, allowing you to change the numbers later and have it propagate to both a "grid" SOP (3D shape) and a texture which is scaled to have 1 pixel per grid unit. At this point, a bunch of stuff happens that I would not have known how to do, such as converting both the shape and the image to CHOPs (channel operators), splitting apart the X, Y, and Z coordinate sets, adding the pixel values as a Z offset, and then converting back to a shape.

Since it's now 10pm, the result of this tutorial will have to be my patching entry for today. I had to work today, but I have the rest of the days of Week of Patching off, so hopefully I will have more time to make some things from scratch soon using what I've learned!

In lieu of sharing the patch file, I suggest building it yourself from lateness's video. I want to watch their other two videos soon also, they both look interesting, and useful for my goals.

Day 5: Variations

I'm a little behind on posting these, but I'm not behind on patching! It's just taking me a little bit longer to translate my patching activities into documentation and posts. Sometimes I get lost in noodling around. Which I think is a good thing.

So for this post, I have four different videos that are all variations of patches I made already, to varying degrees. For that reason, I haven't included patch screenshots or files. But I'll explain what I changed for each one. Note: the first three are all inspired by hardware I used to create my Signal Culture Series, so check those out to compare similar effects created with hardware.

Pseudo Rutt Etra v2

The first one is a variation on the Pseudo Rutt Etra. I'm a little more comfortable calling this my own work, because while vestiges of the tutorial version remain, I've figured out how to do some things that I like to do with hardware scan processing.

The main change here was to actually be able to apply the brightness of the source image to the lines. In order to achieve that, I had to switch the "MAT" (3D material) from "lines" to one that supports a color map. I chose a "constant" MAT, and applied the color map of the source texture to it. Since the lines formed by this MAT were much thinner and dimmer, I also had to use some image processing steps to boost them (mainly "blur" and "levels"). I also added a bloom to simulate the effect of a phosphorescent screen. I hope you will forgive me that affectation!

Also, I masked the image with a circle. Since the lines have the color of the input now, that allows the edges to drop away into darkness. Like many signals you can input into this kind of system, it benefits from a little blurring before it gets scan processed. Here is the result:

Wobbulator

After I felt reasonably successful in replicating some of my favorite techniques in scan processing, I realized I could emulate a Wobbulator (a kind of modified CRT) with the same technique. I kept a bit of the brightness displacement enabled, and I also added "pattern" CHOPs (oscillators) and LFOs to modulate the position of the scanlines in an additional way. It took some fiddling to get the oscillators to sync nicely with the "scan rate," but I figured it out. Here is the result of that:

I still haven't figured out how to emulate the "S-curve" modulation mode of the real Wobbulator I used. I might need to do some matrix multiplication? Will think more on this.

Ribbons

This is my final scan-processing (a.k.a. Rutt Etra[1]) inspired patch. Another technique I experimented with at Signal Culture was manipulating a blank video signal to create warped, abstract forms. I used more "patterns" to modulate not just the Z, but also the X and Y positions. One of these is being modulated by a simple sine wave; the other is a combination of sine and cosine to create a curl:

Colors Fading

This is a variation on the Colors Panning patch from Day 1. I changed the modulation on the noise from X to Z, so the colors appear to fade in and out, instead of moving horizontally. I like this version a little bit better. I especially like the vibrancy of the colors and the spectral effect that sometimes emerges:

That's all I'm prepared to share right now, but I have some more patches in the works that I will try to document soon and add to this log.


  1. Fun fact: Rutt and Etra were not the only ones to develop a scan-processing device, but their names became synonymous with the effect. Similar devices included the Scanimate (used in commercial motion design for television) and the Raster Scan by Dave Jones (which is what I used at Signal Culture). ↩︎

Conclusions

Week of Patching technically ended yesterday. I posted 5 log entries (out of an aspirational 7), which involved patching (of course), but also: recording videos, sharing screenshots and TouchDesigner files, writing explanations about what I did, making this webpage, etc. At the end of the week, I started getting deeper into the patching process, spending more time making more complex patches with reusable components... And I ran short on time for the "record and document" stage. I have more patches that I want to document, but it's going to take me more time, and I think they should probably get their own pages/posts rather than getting appended to the bottom of this page. So I'll wrap up this log by writing down some of my conclusions and observations.

Things Take a Long Time

I kind of touched on this at the beginning, but sometimes I find it easy to underestimate how long something will take. I might plan to patch for an hour, and then spend another 20 or so minutes on the sharing aspect. I begin patching, and next thing I know, it's time to eat dinner, and then I'm hastily writing up my notes before bed. Maybe it's not just how long these kinds of things take, but also how engrossing they can be. I still think that, at least for some things, the writing and sharing part is important, and can be enriching both to me and the people who read it. I am a big fan of "working with the garage door up," and while my participation in online spaces fluctuates, I try to continue to abide by the principle of openness.

Community is Awesome

This may seem obvious/cliché, but doing things in community is often better than doing them alone. Seeing what other people made throughout the week was very exciting for me, and it also fueled my own motivation to patch and share. Most of the other people patching were using audio synths, but one other person was working with visuals, and several people were using tools that they created themselves. One person did a mashup between Week of Patching and Old Computer Challenge. I'm not sure exactly how many people participated, but my estimate is about 10. If you haven't already done so, be sure to check out the #weekOfPatching hashtag on the Fediverse.

The Fediverse may be small and niche, but there's a high concentration of people who actually do things. People are, in my experience, a bit less passive than other platforms (besides, perhaps, dedicated forum spaces). Also, people seem to enjoy sharing their process, in a high level of technical detail. That makes me feel at home. People have made some valid critiques of it as a social platform, but I haven't felt so at home in any other online space in quite a while, and I greatly appreciate the people who surround me on it.

A Week is More Realistic Than a Month For Me

A few years ago, I tried to do another self-imposed challenge called Experiments in Public. That one was supposed to run for a month; I completed less than half of it, despite it being my main focus at the time. Now, my life is overall more busy, but I was on semi-vacation (I had to work for two days during the week). I thought 7 days would be easier, but it was still pretty hard — but I almost made it.

It's good for it to be a little bit of a stretch; or else it wouldn't be a "challenge," right? I see these things like "looptober," and I think about how hard that would be for me. I don't seem to be able to do creative projects "a little each day" — I have to do them for 30 hours in one week rather than 1 hour per day for a month. I wish I could be more like the latter, and I've tried that, but I guess by now I've figured out some things about my brain and stuff. It's always good to feel pressured by an artificial deadline, but not too pressured, and I think this hit that middle ground for me.

Maybe We Should Do This Again

If my schedule allows me to organize and participate in this again, I'd like to do so. If I do, I'll post on the Fediverse with the #weekOfPatching hashtag.

Thanks everyone who joined for making this such a fun and exciting experience! Finally, here are a few small previews of some of my yet-undocumented patches:

Image of a face and hand composed of squiggly white lines on a black background Abstract black and white graphic showing modulated stripes A face interrupting vertical stripes of a sine wave oscillator