Stoatworks Labs

Alleycat

Keeps the show on DXV without anyone thinking about it

In developmentApplicationTypeScript
Alleycat — Keeps the show on DXV without anyone thinking about it
No screenshot yet — it is a tray tool, and the part worth watching is a clip changing codec underneath a running composition.

What it does

A Resolume show wants DXV. Footage arrives as h264 from a client, a director or a phone, and every clip that is still h264 on the day is a clip the machine is decoding the hard way while it is also trying to play the show.

Alleycat watches for that in two places. It watches folders — new footage is probed and, if it is not DXV, sent to Alley; files are left alone until they stop growing, so copying onto a show drive mid-transfer is safe. And it polls the running composition over Arena's REST API and queues any clip whose codec is not DXV, then repoints every clip using the original at the converted copy once it is done.

The care is the point. A clip that is connected is never touched: it is converted, left alone, and swapped on the next tick after it is disconnected. Alley has no documented command line and three behaviours that have to be absorbed rather than trusted — it never exits, so completion is detected from the output file settling; its output lands beside the source, so a folder holding both clip.mp4 and a separate clip.mov is a collision Alleycat refuses rather than lets Alley overwrite; and the flag it is driven by reads as an internal test hook, so it may change between Resolume releases.

  • Watches folders and converts anything that is not already DXV, waiting for a file to stop growing before touching it
  • Scans the live composition over Arena's REST API and queues every clip whose codec is not DXV
  • Swaps the converted file into the composition in place — Arena keeps in and out points and clip effects across the swap
  • Never touches a playing clip: a connected clip is deferred and swapped on the next scan after it stops
  • Reads the video fourcc out of the QuickTime container itself rather than trusting a display string, so it costs a few small reads even on a 40 GB file
  • Refuses a conversion whose output name is already taken by something it did not produce, because Alley would overwrite it without asking
  • Needs Resolume Alley for the conversion — there is no DXV encoder in ffmpeg — and Arena or Avenue with the webserver on for the clip swapping, which is off by default

Where it stands

In development, and published only as previews. The transcode path and the Arena replacement path have both been run end to end against real software — Resolume Alley 7.27.1 and Arena 7.27.1 on macOS — including converting a live composition's h264 clips to DXV and swapping them in place while Arena was running, and deferring a connected clip until it was disconnected. The Alley command line, its never-exits behaviour and both of its output-naming rules were found in the binary and confirmed against 7.27.1. It has never been used on a real show, has never run on Windows or Linux, and no packaged build has ever been installed.