Skip to content

Releases: stoatworks-labs/automitti

automitti v0.2.1 (preview)

Pre-release

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 24 Oct 18:19

Preview release. One fix, found against a real Mitti.

  • The HyperDeck link gets Mitti's disk at once. A real Mitti 2.8.19 never answers a bare slot info (nor slot info: slot id: 0), and the link keeps one command in flight. So every connect waited 3 s for its first transport state and never got the disk at all. It now asks for the transport first, then for the slot the transport names. Against a real Mitti 2.8.19 (read-only, empty playlist) both arrive in 4 ms. The Mitti simulator stays silent on the bare form now too, so the tests fail if the link ever goes back to it.

Everything else is as in v0.2.0, including what each part has and hasn't been checked against.

Full Changelog: v0.2.0...v0.2.1

automitti v0.2.0 (preview)

Pre-release

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 11 Oct 15:56

Preview release. automitti now runs several Mittis at once, speaks to Analog Way's LiveCore and older Midra switchers, and can drive QLab 5 as a player. Each section below says what that part has been checked against, and no more: none of the three has met real equipment beyond what is listed.

Several Mittis at once

  • Each Mitti is a device, with its own player link, switcher input, feedback relay, NDI tally and rules. All of them share the one switcher and the one emulated ATEM, as several Mittis can share a real ATEM.
  • The control page has a Home tab showing every Mitti's clip, countdown, tally, input and mode, with the switcher and its inputs; a tab per Mitti; and Switcher & show for what they share. Edits are a draft, saved with Save.
  • A new Mitti gets the next free feedback port (51011, 51012…), and a clash is flagged on both cards.
  • POST /api/devices, DELETE /api/devices/<id>. /api/player takes "device" (id or name), and goes to the first Mitti without it.
  • /display?device=<id or name>, titled with that Mitti's name.
  • A v0.1.x settings file becomes the first device.

Checked against: two Mitti simulators on the V-160HD simulator. A cut to each one's input rolled that Mitti and only that one, and the one taken off paused. A Mitti was added, renamed, given an input and removed, and the author's own v0.1.1 settings file came across intact. Not yet with two real Mittis, on any switcher, nor two real Mittis on one emulated ATEM.

LiveCore and Midra switchers (TCP 10500)

Two drivers on Analog Way's mnemonic protocol, written from openRCS's findings on a real NeXtage 16 and Pulse²:

  • LiveCore (Ascender 16/32/48, NeXtage 08/16, SmartMatriX Ultra). An input is on air while it is a layer source in the preset bank a screen is showing, and in both banks during a take. AUTO sweeps the T-bar over the take time, because the LiveCore's own take commands stall over the protocol; CUT jumps it. Input names are the frame's labels.
  • Midra (Pulse², Eikos², Saphyr, SmartMatriX², QuickMatriX, QuickVu). Fixed program and preview, the frame layer left out of the tally. AUTO is the Midra's own take, with preset-update mode turned off first; CUT moves the T-bar through its middle. A Midra silently refuses an input with no signal, so a select is read back and says so. Input names are typed in the settings. A Pulse² takes one control session.

Checked against: simulators only, which play back the traps openRCS found. Not a real frame. Still unknown: whether a LiveCore's T-bar sweep looks right at the default 1 s, whether a take made on a Midra's front panel is seen as it starts, and whether a Midra keeps a program select without a further commit.

QLab 5 as a player

A device's Player can be QLab instead of Mitti. QLab has no ATEM or NDI integration, so automitti's rules drive it: Play GOes the cue list (or resumes a paused clip, never a second GO), Cue ends takes the switcher off it, and Taken off air can pause or stop it. The running video cue's time feeds the clip display.

  • OSC over TCP 53000 with the workspace's passcode, which needs Control for the rules.
  • Only cues of the chosen types (Video by default) count as clips; light, audio and fade cues between them are passed over.

Checked against: a real QLab 5.5.10 with Wait cues only, in a scratch workspace: joining with the passcode and by name, the errors for no passcode, a wrong one and a closed workspace; play, pause, resume, stop-and-rewind and a clip running out; and, through the server with the manual switcher, a take onto QLab's input GOing the cue with its end AUTOing back while the clip display counted it down. A Video cue actually playing has not been checked, nor a pre-wait, a clip inside a Group, a QLab on another machine or a show-sized workspace. docs/QLAB.md has the details.

Also

Still not verified

  • A real Roland V-160HD, and a real Pulse 4K running this code.
  • Mitti playing on NDI tally, rather than receiving it.
  • Windows and Linux: only a macOS build is published.

The macOS build is universal, signed and notarised by Apple.

automitti v0.1.1 (preview)

Pre-release

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 30 Sep 18:01

Preview release. This one proves the whole Mitti loop on a switcher, fixes four bugs found testing v0.1.0 against a real Mitti, and splits automitti into drivers so more switchers and players can be added.

Proven with a real Mitti

Tested with Mitti 2.8.19 and Analog Way's Midra 4K simulator, using only Mitti's own ATEM trigger (no automitti rules):

  • Mitti found the emulated ATEM over Bonjour and connected to it.
  • An AUTO on the Midra onto Mitti's input rolled the clip half a second in, while the transition was still running.
  • At the end of the clip, Mitti's Pause at End → AUTO to Preview came back through the emulated ATEM, and the Midra took the other source back to program.

Fixed

  • The emulated ATEM keeps its identity. Mitti recognises an ATEM by its unique id. v0.1.0 derived that id from the Mac's host name, so a Mac renamed by a network change looked like a different ATEM and had to be chosen again. The id is now stored in the settings. An existing pairing survives: the id is seeded with the one v0.1.0 announced.
  • Mitti on the same Mac could look offline. If Mitti's Feedback To was picked from its Bonjour list, Mitti sent feedback from the Mac's LAN address. automitti only accepted it from 127.0.0.1, so it dropped every packet. It now accepts any of the Mac's own addresses.
  • A pinned "Announce on address" that no longer exists is not announced any more. automitti falls back to every interface and says so. It also re-announces whenever the Mac's addresses change.
  • The Pulse 4K / Midra 4K driver said "online" too early. It reported online before its first read of screens and layers, so a preview select made in that moment did nothing. It now waits for that read, and a select with no layer to write reports an error.

Drivers

Every switcher (V-160HD, Pulse 4K / Midra 4K, manual) and Mitti itself is now a driver: a folder that describes it and holds the code that speaks its protocol.

  • The emulated ATEM, NDI tally, the rules, the clip display and the settings page only talk to "the switcher" and "the player". A new switcher, or a new player such as QLab, is one folder with no change anywhere else.
  • Your own drivers go in drivers/ inside automitti's data folder and appear in the menus.
  • Settings are kept per driver, so switching driver and back loses nothing.
  • npm test holds every driver to the same contract and runs it against its simulator.
  • See docs/DRIVERS.md.
  • v0.1.0 settings files are carried over automatically.
  • /api/mitti still works, as an alias of the new /api/player.

Not verified yet

  • A real Roland V-160HD, and a real Pulse 4K running this code.
  • Mitti playing on NDI tally, rather than just receiving it.
  • Windows and Linux: only a macOS build is published.

The macOS build is universal, signed and notarised by Apple.

automitti v0.1.0 (preview)

Pre-release

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 30 Sep 17:08

Preview release. The first build of automitti, for trying out rather than for a show that depends on it. It has run against a real Mitti and Blackmagic's own switcher SDK, but the switcher drivers have only met simulators.

automitti is a menu-bar app that puts Mitti on switchers it doesn't know about, the Roland V-160HD and the Analog Way Pulse 4K / Midra 4K, the way Mitti already follows an ATEM.

What's in it

  • Emulated ATEM. Mitti finds automitti over Bonjour and connects to it like any ATEM. The emulated switcher carries the real switcher's inputs, names, program, preview and tally, and Mitti's own cut or auto (Pause at End) is performed on the real switcher.
  • NDI tally to Mitti's NDI output, as a metadata-only receiver, so no video crosses the network. It uses the NDI runtime already on the machine (NDI Tools).
  • Rules over OSC or HyperDeck, for driving Mitti directly: play on program, rewind on preview, pause or load the next cue when taken off, cut or auto at a clip's end, optionally a few seconds early.
  • Switchers:
    • Roland V-160HD over LAN, with tally pushed by the unit.
    • Pulse 4K / Midra 4K over AWJ.
    • A manual mode fed over HTTP.
  • OSC feedback relay. Mitti's single feedback stream goes to as many destinations as you list, byte for byte.
  • Clip clock at /display:
    • current clip with a countdown that turns amber, then red;
    • elapsed time and TRT;
    • the next clip and its TRT.

Verified

  • Real Mitti 2.8.18:
    • It connected to the emulated ATEM by itself.
    • An AUTO onto its input rolled the clip as the transition began.
    • The clip clock read current and next TRTs from Mitti.
  • Blackmagic Switcher SDK 10.2.1: accepts the emulated ATEM. Tally callbacks, cut and auto all worked through to the switcher behind it.
  • NDI tally: read back by an NDI SDK sender, the way Mitti reads it.
  • Midra 4K simulator: tally through a take, cut and preview select.

Not verified yet

  • A real V-160HD. The driver is written from Roland's documents and the Companion module.
  • A real Pulse 4K running this code.
  • Mitti's own Pause-at-End take watched end to end.
  • Mitti playing on NDI tally, rather than just receiving it.
  • Windows and Linux. Only a macOS build is published.

Worth knowing

  • Mitti connects to the first IPv4 address Bonjour gives it. On a machine with a VPN, set Network → Announce on address to the show network.
  • Mitti's HyperDeck emulation needs TCP 9993. On a machine running ZeroTier, that port is already taken.

The macOS build is universal, signed and notarised by Apple.