Technique/FX/trick to reduce layer framerate to a specific FPS?

I’m working a lot with lofi and retro and lofi aesthetics, and often find myself needing to reduce the FPS of a layer to around 15-20 fps, just for aesthetic reasons. (When an element or effect runs at 60 fps it tends to look “foreign” in a complex composition. Reducing it to 15fps makes it look like it belongs.)

Is there a way to accomplish this “low frame rate” look using the available effects or some clever routing? It does not have to look great or do any clever interpolation. For me the rougher the better ;)

(I have a memory of someone asking something similar a long time ago but I can’t refind the thread)

Do you have “Micro Buffer.fs” as an FX?

Yay, great idea, that seems to work! Thank you @ProjectileObjects :pray:

I can make it “look” right by just using a single and a low Buffer lag. But sometimes I advertendly seem to create some kind of flicker with this - that actually looks a bit cool! - but sometimes its too arresting. I can get around this by using presets for various scenes but that adds to my workload and project complexity, so a follow up question:

If you or anyone else knows - technically, what does the Micro Buffer do, what are the values representing? Maybe if I understand how it works, I can dial things in to work globally :nerd_face:

Here’s the info from the comments in the ISF shader itself. Perhaps it helps?

Metadata

  • Description: Buffers 8 recent frames to create a glitchy effect.
  • Credit: VIDVOX.
  • Version: 2.
  • Categories: Glitch.
  • Inputs:
    • inputImage: The current image frame.
    • inputDelay: Controls which of the buffered frames to use.
    • inputDelay2: An additional buffer delay control.
    • inputDelay3: A third buffer delay control.
    • inputRate: Controls how quickly the buffers update.
    • mode: Determines the blending mode (Single, Double, Triple).

Passes

  1. Pass 0:

    • Updates the “lastRow” buffer with the new position based on inputRate.
    • If inputRate is 0, it resets the position.
    • Otherwise, it updates the position based on the current state and inputRate.
  2. Passes 1-9:

    • Passes 1-8: Shift the contents of the buffers sequentially:
      • Pass 1 reads from “buffer7” and writes to “buffer8”.
      • Pass 2 reads from “buffer6” and writes to “buffer7”, and so on.
      • Pass 8 writes the new frame into “buffer1” and shifts “buffer1” to “buffer2”.
    • Pass 9: Determines which buffer to sample based on the inputDelay, inputDelay2, and inputDelay3 parameters. It also handles blending of buffers if mode is set to Double or Triple:
      • Samples the current frame or one of the buffered frames based on inputDelay.
      • If mode is 1 (Double), it mixes two buffers.
      • If mode is 2 (Triple), it mixes three buffers.
    • The final color is computed by averaging the selected buffers based on the mode.

Logic Details

  • Buffer Handling: Each pass moves the current frame data to the next buffer in the sequence. This allows the shader to retain and utilize recent frames.
  • Blending: The final output is a combination of the current frame and several previous frames. The extent of blending is controlled by the mode parameter.
  • Glitch Effect: The shader introduces a glitch effect by showing and blending different buffered frames, creating a delay and mix of frames which results in a visual distortion.

This shader is useful for creating dynamic and visually interesting effects where recent frames are combined and manipulated to achieve a glitchy or time-based visual effect.


So for the look of a frame rate drop or reduction. You’ll most likely use this FX in single mode, and set buffer to 1, then adjust the buffer lag to create the desired drop effect.

Using a 60 fps video counter (from YouTube), I found that setting the first buffer (in single mode), to anywhere between 1-9. (At 0, this effect is essentially off).

And adjusting the Buffer Lag:
5 output = ~30 FPS
10 output ~15 FPS
20 output ~5 FPS

1 Like

isn’t there a global setting in the app pref to set limit of fps it does processing at?

You can change the default canvas render settings. But that is a more “locked in” approach. Or you could run an FX like Micro Buffer on the main canvas and turn it off any time you want. Animation was common at 12-15FPS, but older films were “hand cranked” so their action FPS during recording was variable, and played back at whatever speed looked best to the projectionist.

Like silent filmes were shot around 16-18 fps, then played back at 20-24fps (making the action move quicker / more frantic) ← Especially comedies.

I’ll see if I can make an ISF frame reducer, but Micro Buffer already does it in a way.