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 turns up as h264 from a client, a director or a phone, and every clip that's still h264 on the day is one the machine is decoding the hard way while it's also trying to play the show.

Alleycat watches for that in two places. It watches folders: new footage is probed and, if it isn't DXV, sent to Alley, and 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, queues any clip whose codec isn't DXV, then points every clip using the original at the converted copy once it's done.

Most of the work is in being careful. A connected clip is never touched: it's converted, left alone, and swapped on the next tick after it's disconnected. Alley has no documented command line and three habits that have to be worked around rather than trusted. It never exits, so Alleycat spots completion by the output file settling. Its output lands next to the source, so a folder holding both clip.mp4 and a separate clip.mov is a collision Alleycat refuses rather than letting Alley overwrite one. And the flag it's driven by looks like 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 only published as previews. The transcode path and the Arena replacement path have both been run end to end against the actual 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 holding back a connected clip until it was disconnected. Alley's command line, its never-exits habit 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, it hasn't run on Windows or Linux, and no packaged build has ever been installed.