PACK ⬕ Nostalgia Voltage
Download on Patreon
- This pack contains 786 VJ loops (53 GB)
Good times, cherished memories, pervasive surveillance. Every smile converted into engagement metrics. Every kiss cataloged for behavioral trends. Every emotion analyzed for actionable data.
I typically dislike using stock footage because it so often feels hollow and corporate. But it turns out that you can’t fake the feeling of genuine laughter, tenderness, and actually having a good time even in a prepared setting. So I scoured Envato for some footage of happy people and then also security cameras. There was a wide variety of clips to choose from and I was pleasantly surprised. I ended up curating 314 video clips of people hugging, kissing, loving, families and kids playing. And then 149 video clips of security cameras. A perfect ratio for what I had in mind.
I realized that some of the footage was recorded using a high speed camera and that gave me an idea. So I sorted the footage into folders: originals already slowmo, needs slowmo x2, or needs slowmo x4. Then I imported the footage into Topaz Video and did some frame interpolation renders so that they all had the same amount of slow motion which felt dreamlike. Any visible interpolation artifacts from Topaz didn't really matter since each clip was going to be heavily obscured by the laser tracing later on in the pipeline. Then I imported those renders into After Effects and used my
ISO_ChangeFootageFrameRate.jsx script to automatically adjust the frame rate for all of the footage to 30fps since it was slowmo anyway and I loathe dealing with drop frame timecodes and also drop frames mess with BPM sync. I typically prefer to work at 60fps but the Oscilloscope FX looked much better at 30fps. Since I was going to heavily manipulate the footage later on in the pipeline, I could scale up and crop each scene so that the people were better featured within the frame. For some of the very short security camera clips, I duplicated and reversed the clips so that there was more duration to work with. Finally I tweaked the in and out points for all the footage and then precomped everything using my
ISO_PrecompAllLayers.jsx script.
Now it was time for some heavy lifting. I used the
Mask Prompter 3 FX to automatically rotoscope each scene and I used the SAM 3 model since it’s mature. I really loved when it glitched out but I was ironically having trouble forcing it to glitch on command and so I came up with an alternate approach. I ended up duplicating each scene several times and used Mask Prompter 3 with unique text prompts for each scene. This allowed me to rotoscope out “people” for comp A (aka “HumanA”), “face” for comp B, “woman” for comp C, “man” for comp D, “child” for comp E, “hand” for comp F, and such. So each clip was processed via multiple rotoscoping passes, with every pass isolated into a separate comp. Since Mask Prompter 3 is already quite heavy and adding more FX was going to make for outrageous render times, I had to render out all of these comps to frame sequences. That took several days to render out, even when using my
ISO_RenderQueueSplitIntoSeparateProjects.jsx script so that I could render using
multiple AE instances.
Something that I love about machine vision, at least for art purposes, is just how glitchy it is. These models do not seem to be aware of time and instead just process frames on a single basis, which means they pop and glitch frequently. Feels very much like the time period we’re living through where promises rarely meet expectations.
With all of the rotoscoping out of the way, I imported all of the frame sequences back into AE and then used my
ISO_PrerenderedFootageIntoMatchingComps.jsx script to automatically link relevant footage into the parent comps. Then I created the “HumanStack” comps, which is where all of the various rotoscoped layers for a specific clip were layered together into a single scene and then I used a
wiggle expression to randomly flicker the opacity (and the lighten blend mode). Then I used my
ISO_RandomizeSeeds.jsx script to automatically randomize the seed values for all of the wiggle expressions so that each layer flickered in a unique way. In this way, I was able to fake out the glitchy look of each layer flickering and this did wonders for the next stage of the pipeline.
I also wanted to create “Edit” comps, which is where I layered all of the different footage together and then cut to the next clip at regular intervals. I used the
Rift plugin to automatically stagger the clips in this way. I created 1, 2, and 4 second edited options since these cuts can easily be synced to 120BPM by VJs. Also I manually set the in point for each scene so as to assure that each scene featured an ideal moment visually. From there I created “Overlap” edit comps where the footage was allowed to overlap and then “serial” edit comps where the footage was back-to-back. I had to use the lighten blend mode on the “Overlap” footage so that multiple layers could be seen at once. Plus I figured that some VJs might not want to include the security cameras and just focus on the human emotions, so I created versions (aka “Combo” or “Solo”) which featured various groupings of the HumanA, HumanStack, and Cam footage. Pick your stew!
Finally I could get to the fun part which turned out to be quite cumbersome, but it was worth the trouble. I applied the
Oscilloscope FX to get some beautiful laser tracing visuals happening by purposely visualizing a Fourier transform in an imperfect way so that we can see those untamed sine waves. What’s really interesting about this plugin is you can adjust the trace frequency, beam point density, steps per loop, phosphor fade time and such details that allow for a virtual oscilloscope to be created. But each scene needed to be manually tweaked so that the Picture Threshold attribute would sit in the goldilocks zone and the rendered output would look ideal. So I created a starting point for the Oscilloscope FX settings onto an adjustment layer and then used my
ISO_PasteClipboardIntoComps.js script to automatically paste it into all of the selected comps. From there it was tricky to find the ideal base settings for each comp and this was made further complicated in that I wanted to make it feel like unpredictable voltage noise and so I applied a wiggle expression to these two attributes, yet I had to manually tweak the min/max range of the expression in each comp. It was a delicate balance and it felt like surfing a wave when tweaking the expressions. Too much detail and the magic is gone… Too much abstraction and you can’t recognize anything... It took me several rounds of going over each of the comps to get things feeling right and it took a bunch of time. Then I used my
ISO_RandomizeSeeds.jsx script to automatically randomize the seed values for all of the wiggle expressions so that the attributes did not operate in tandem. Lastly added the
Deep Glow FX for some subtle green glow.
Over the course of this project I used several JSX scripts which saved me tons of time when doing repetitive tasks to hundreds of comps in After Effects. In the past I’ve often spoken about how I’ve used LLMs in this way and it’s been a gamechanger for me. And so I open-sourced my JSX scripts and
LLM blueprint for anyone to benefit from. Check out the
Github repo which contains loads more. Every breath you take, every move you make, every bond you break, every step you take, they'll be watching you.
Released July 2026