Skip to content

ryanstaplehurst-sys/product_library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Insert Productions — Draw.io Signal Flow Libraries

A curated set of draw.io shape libraries for the AV equipment Insert Productions actually rents, plus a Python toolkit that lets Claude compose .drawio signal-flow diagrams from free-form briefs.

30 libraries · ~328 device shapes · synced to Current RMS, accuracy-verified against manufacturer specs, June 2026.

See coverage_status.md for the up-to-date inventory.

What's in here

  • libraries/.xml files you load into draw.io as Custom Libraries (File → Open Library). Most are per-manufacturer (yamaha.xml, sennheiser.xml); a few are thematic groupings of single-device-per-vendor kit (audio-other.xml, displays.xml, comms.xml, network.xml, playback.xml, cameras.xml, mics.xml, extenders.xml, dj-kit.xml, led-panels.xml, touchscreens.xml, computers.xml).
  • sources/ — Python device specs that build each library. Edit a spec, run python3 sources/<file>.py, the matching libraries/<file>.xml regenerates.
  • scripts/ — the engine: library_io.py parses/builds libraries, compose_diagram.py turns a JSON spec into a .drawio file, cable_styles.py is the single source of truth for the cable convention, build_all.py rebuilds everything.
  • reference/cable_conventions.md — the cable colour/line/width legend in human-readable form.
  • coverage_status.md — running tracker of what kit is in the libraries vs the rental list.
  • SKILL.md — instructions for Claude.

Loading libraries in draw.io

For project managers and the rest of the team, see the Signal Flow User Guide PDF (in the technical team's shared drive) for the friendlier walkthrough.

The short version:

  1. Click the green Code button at the top of this repo → Download ZIP. Extract somewhere sensible.
  2. Open draw.io (desktop or app.diagrams.net).
  3. File → Open Library from File… → navigate into the libraries/ folder → select all 30 .xml files (Cmd+A or Ctrl+A) → Open.
  4. Libraries appear in the left panel. Drag any device onto the canvas.

_cables.xml contains pre-styled edge templates you can drop between ports for the cable convention.

Composing a diagram via Claude

If you have the insert-drawio-signal-flow skill installed in claude.ai, just describe the flow in plain English ("ATEM 2 M/E feeds two SX40s via Videohub, with confidence returns to FOH") and Claude returns a .drawio file. See SKILL.md for the full spec the skill speaks under the hood.

Composing a diagram from the CLI

python3 scripts/compose_diagram.py \
    --spec /path/to/spec.json \
    --output /path/to/output.drawio

Spec format:

{
  "title": "Studio A — camera routing",
  "title_block": true,
  "legend": true,
  "devices": [
    { "id": "atem", "library": "blackmagic", "title": "atem 2/me" },
    { "id": "sx40", "library": "brompton",   "title": "tessera SX40" }
  ],
  "connections": [
    { "from": "atem.PGM ME1", "to": "sx40.SDI 1 (12G)", "cable": "sdi" }
  ]
}

Adding a device

  1. Open the relevant sources/<file>.py (or create a new one — copy the structure from brompton.py).

  2. Append a new dict to DEVICES:

    {
        "title":      "v-1200hd",
        "name":       "Roland V-1200HD",
        "subtitle":   "Multi-format Switcher",
        "tags":       ["Switcher", "Video"],
        "width":      160,
        "loose_ports": ["IP:", "Tally"],
        "inputs":     ["SDI 1", "SDI 2", "HDMI 1", "HDMI 2"],
        "outputs":    ["PGM", "PVW", "AUX 1", "AUX 2"],
        "control":    ["LAN", "MIDI"],
    }
  3. Run python3 sources/<file>.py. The matching .xml regenerates.

  4. Commit and push so the team gets the new shape on their next pull.

Cable convention (quick reference)

Colour = signal type, line style = transport (solid copper, dashed fibre, dotted wireless), width = criticality. See reference/cable_conventions.md for the full table.

Type Colour Notes
SDI yellow dashed if over fibre
HDMI / DP purple
IP video (NDI / 2110) blue dashed if over fibre
LED data (Cat6 / 10G) dark green dashed if over fibre
AES3 / MADI / Dante mid green dashed for Dante
Analog audio pink
DMX / sACN magenta
LTC / Genlock orange dashed for genlock
Network / Control thin grey
Wireless RF / IR grey dotted
USB light grey
Power 13/16A thick black
Power 32A 3-phase thick red

Building all libraries from scratch

for f in sources/*.py; do python3 "$f"; done

Or:

python3 scripts/build_all.py

Library coverage

See coverage_status.md for the full per-library device table — it's the single source of truth, updated on every stock sync (last: June 2026, which added projectors.xml and roland.xml and ~75 shapes).

Out of scope

Cables, adapters, power, brackets, mounts, stands, packaging, ladders, batteries, chargers, antennas without active electronics, software licences, sub-rent placeholders, lighting fixtures (different domain — DMX universes belong in their own skill).

Licence

Internal Insert Productions tool. Device specs are derived from manufacturer-published port lists; if you redistribute, check trademark guida

Releases

No releases published

Packages

 
 
 

Contributors

Languages