Skip to content

Sofie Timeline State Resolver: A Part of the Sofie TV Studio Automation System

License

Notifications You must be signed in to change notification settings

nrkno/sofie-timeline-state-resolver

Repository files navigation

Sofie Timeline State Resolver (TSR)

Node CI codecov

This is the Timeline State Resolver (TSR) library, part of the Sofie TV Automation System. This library orchestrates and controls different devices. Its input is a timeline data structure and a layer-to-device-map. Using this input, it resolves the expected state, diffs the state against current state, and sends commands to devices where necessary.

General Sofie System Information


Supported Devices

  • CasparCG - using the casparcg-connection library
  • Blackmagic Design ATEM vision mixers - using the atem-connection library
  • Blackmagic Design Hyperdeck record/playback devices - using the hyperdeck-connection library
  • Lawo audio mixers - using the emberplus library
  • OBS Studio live video production software (currently not supporting v29)
  • Panasoniz PTZ cameras
  • Pharos light control devices
  • Sisyfos audio controller
  • Quantel video server
  • vMix software vision mixer
  • VizRT MediaSequencer graphics system - using the v-connection library
  • Shotoku TR-XT camera robotics
  • Singular Live Graphics
  • Sofie Chef
  • Telemetrics camera robotics
  • Newtek Tricaster video mixers
  • Arbitrary OSC compatible devices
  • Arbitrary HTTP (REST) compatible devices
  • Arbitrary TCP-socket compatible devices

Installation and Usage

This is a mono-repo containing the TSR library, and a separate typings-only library (timeline-state-resolver-types). Contrary to what your editor might say, the typings-only library cannot use dependencies from the main library.

Check the main timeline-state-resolver package for instructions on using the library and more information

Development

When creating features that span the timeline-state-resolver and timeline-state-resolver-types packages - such as when creating a PR for supporting a new device - you will need to link the two packages together. To do that, after checking out a branch run:

yarn
yarn lerna link

This will link the types package to the main library so that you can use your new type definitions during development.

Note, that your IDE may not pick up your new type definitions until you build the types package.

There is a test application quick-tsr inside this repository which can be used to easily test changes made to this library.

Working with Types

Types that need to be consumed by external systems that have no need to interact with the TSR library itself should be written in the timeline-state-resolver-types package. Some types will be generated from JSON schemas, the schemas are composed under the $schemas subfolder in the specific integration's subfolder. (See the abstract integration for an example). The types can be generated with the yarn generate-schema-types command. The schemas themselves must be exported from the src/manifests.ts file, so they can be used by external systems to validate payloads and generate UI's.


The NRK logo is a registered trademark of Norsk rikskringkasting AS. The license does not grant any right to use, in any way, any trademarks, service marks or logos of Norsk rikskringkasting AS.