Skip to content

Releases: stoatworks-labs/ferric

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 20 Sep 19:30

Resolume's browser has no vendor grouping, so the Stoatworks plugins scatter through one alphabetical list and you have to remember every name to find them (cogwheel#26). Every plugin now reports itself with an SW prefix, so they sit together.

  • FerricSW Ferric

Nothing else moved. The four-character plugin ID a composition actually references is unchanged, and so are the bundle file names — an upgrade replaces what you have instead of leaving the old plugin beside the new one.

Full Changelog: v0.1.2...v0.1.3

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 04 Sep 21:58

What's Changed

New Contributors

Full Changelog: v0.1.1...v0.1.2

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 17:27

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Aug 04:04

The first release. Ferric puts the picture on tape — an FFGL effect for Resolume Arena and Avenue that treats the video signal the way a cassette deck treats an audio one.

What it does

Wow and flutter, as a timing error rather than a wobble. Every pixel is given a tape time — how far into the recording the head was when that pixel came off the oxide — and one scalar error signal is evaluated there. Wow leans the whole frame; flutter fits a cycle or two into a picture so it draws a wave down the image, and that wave scrolls between frames because the clock moved; scrape flutter becomes fine horizontal banding. Lines stretch as well as shift, because tape time varies along the line too. Four transports — Cassette, Reel to Reel, Video Head and Failing — set the character.

Tape noise reduction as a full round trip, in the real order: encode, tape, decode. The hiss is bent once where the picture is bent twice, so every artifact anybody recognises is the two ends disagreeing. Decode something that was never encoded and it goes dull and breathes; encode with nothing decoding and it goes glassy; mistrack the levels and detail pumps as the shot changes. Type B and Type C, with Decode Only, Encode Only and a Mistracking control.

The compander is one-dimensional and horizontal, because tape has one frequency axis and it lands on the picture as the scan direction. Vertical edges pump; horizontal ones sit perfectly still.

Show Trace plots the error signal against position down the picture — the exact quantity being applied — with audio meters and a seven-segment readout of weighted wow and flutter measured through a DIN 45507 curve.

Sound-reactive, with every depth off by default: a beat puts a sharp excursion straight into the error signal (the belt slipping) rather than modulating something already running; level hands the transport over to the music; band energy pushes the decoder off level so the noise reduction breathes with the mix.

Nine factory presets. Seven leave every reactive depth at zero so they behave with nothing routed.

Tape Speed, and the honest bit

A real 625-line picture scans at 15625 lines per second, and at that rate audio-band flutter is a constant across the whole frame — no vertical structure, no tearing at all. Audio wow and flutter and video time-base error are not the same phenomenon. So Ferric does what it says instead and runs the picture through a cassette transport, with the scan rate exposed as Tape Speed: from a rigid frame at one end to the image coming apart into ribbons at the other.

Verified

23 checks pass from a clean universal build:

  • the GLSL error signal matches an independent C++ implementation to 1.9e-05 over 6400 points, with a control case that must fail
  • a neutral Ferric returns the picture bit-exactly
  • encode into decode cancels to 1.31 rms (Type C), against 4.78 mistracked
  • the compander moves vertical detail by 9.996 rms and horizontal detail by 0.000
  • decoding lowers the noise floor, and Type C's advantage grows as the material gets quieter
  • a milliseconds host and a seconds host render identical frames
  • all 27 controls reach the picture

Rendered in Resolume Arena 7.27.1 on macOS and on Windows — the Windows run on Mesa llvmpipe, a different GLSL compiler from Apple's, which is what makes it worth doing. Both hosts read all 34 parameters correctly and show the same weighted figure.

Cost: 0.34 ms/frame at 1080p, 0.70 ms at 4K on an M4 Max, with Type C and dropouts running.

Not yet

No operator has dragged a slider — every control this far was driven over Resolume's REST API, so the inspector's feel is unjudged. No NVIDIA or AMD driver has run it. There is no OpenFX build. None of it has been through a show.

Install

macOS: Ferric.bundle into ~/Documents/Resolume Arena/Extra Effects/. Windows: Ferric.dll into %USERPROFILE%\Documents\Resolume Arena\Extra Effects\. There is a disk image and a Windows installer that do it for you. Restart Resolume — it scans the folder at startup.

macOS builds are Developer ID-signed and notarised.