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.
- 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
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
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.
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.