Stoatworks Labs

PatchFerret (preview)

A console show file in, a patch list out. Early preview

In developmentRuns in a browser tab

The show file already knows the patch. It just won't tell you.

Drop a console show file in and get the paperwork back out: an input patch list, a specification sheet and a wiring topology diagram, as PDFs you can put in a folder. It reads Behringer X32, Yamaha DM3, DM7 and TF, and Allen & Heath Avantis and dLive.

This is an early preview and still very much in development, and the list of what it doesn't do yet is below. It's longer than the list of what it does. The file is parsed and the PDFs are drawn in the page, so there's no backend to upload a show to, which matters when the channel names are the performers and the scene names are the running order.

PatchFerret (preview) — A console show file in, a patch list out. Early preview
The repo's own X32 fixture: the show identified, its slots, strips and outputs counted, four documents ready to download, and the lines it didn't model listed under conversion fidelity.

What it does

01

It follows the patch all the way through

The point

Getting from an XLR to a fader takes three hops on an X32: a routing block maps eight connectors onto input slots, the channel picks a slot, and the preamp belongs to the connector. Assume channel 12 is fed by socket 12 and you get a confident, wrong patch list. In the test file, slots 25 to 32 are on the other AES50 link entirely and six channels reach no connector at all.

02

Head amps belong to the socket

Gain and phantom are stored against the connector, not the channel, because on a shared stage box that's what they are: one preamp feeding whoever is listening. A patch list that hangs gain off the channel quietly misrepresents which desks share it.

03

Your header, on every page

Logo, event, date, act, venue, production company, engineer and contact, none of which a console stores, so you type them once and they land on all three documents. Any key it doesn't recognise becomes another header field, so "Truck call" works without the tool knowing what one is.

04

It tells you what it couldn't read

No hiding it

Every document carries a fidelity section listing what the adapter recognised but couldn't carry across. A show that converts with nothing in that list is one the tool actually understood. Anything else says so on the page rather than leaving you to find out.

What to check before a show

  1. 01

    It's a preview, and it reads much less than a console holds

    Channel names, the strip inventory and the input patch come through. Head-amp gain, bus sends, EQ, dynamics and the output patch mostly don't yet. The reports say which, per file.

  2. 02

    Nothing it prints has been checked against a console

    The formats were worked out from real show files and, for Allen & Heath and Yamaha CL/QL, by changing one patch point in the manufacturer’s own offline editor and comparing the saved files. That pins the encoding. It isn't the same as sitting at the desk with the printout and agreeing with its patch screen, which nobody has done.

  3. 03

    It can't write or convert show files

    It reads. Converting a show between consoles is why the interchange format underneath exists, but no adapter can write yet, and at least two of these formats carry a checksum that would have to be solved first.

  4. 04

    Some consoles are recognised without being understood

    A Yamaha TF scene parses and names every channel, but none of its connectors resolve, because its patch field is one byte that selects a source class rather than a port. The tool leaves those blank and says why instead of inventing an XLR number.

Run your own copy

PatchFerret (preview) is also published as a Docker image, ghcr.io/stoatworks-labs/patchferret, serving the same files as the hosted copy. On a laptop or a box in the rack it keeps working when the venue's internet doesn't.

Docker

docker run -d --name patchferret --restart unless-stopped -p 8544:80 ghcr.io/stoatworks-labs/patchferret:latest

Then it's at http://localhost:8544/. The repo's docker-compose.yml does the same with docker compose up -d.

Unraid

Search Community Applications for patchferret and install it. The template sets the port to 8544 for you.

Self-hosting the web tools, and which ones you can