Sofie: The Modern TV News Studio Automation System (tv-automation-server-core)
This is the core application of the Sofie TV News Studio Automation System.
First, install Meteor:
Then, clone the repository and install all dependencies: (Make sure your NODE_ENV is NOT set to production!)
git clone -b master https://github.com/nrkno/tv-automation-server-core.git cd tv-automation-server-core/meteor meteor npm install meteor
If you run into any issues while installing the dependencies, clone any offending packages from Git and link them using
npm link. For example, for
git clone -b master https://github.com/nrkno/tv-automation-mos-connection.git cd tv-automation-mos-connection npm run build npm link cd ../tv-automation-server-core/meteor npm link mos-connection
In order for the system to work properly, it may be neccessary to set up several system properties. These can be set through environement variables - if not present, default values will be used.
||Comma separated list of time servers to sync the system to||
||Framerate to be used when displaying time with frame accuracy||
For the purpose of running the system in a studio environment, there are additional endpoints, unavailable from the menu structure.
||Countdown clocks for a given studio, to be shown to the studio presenter|
||Redirects to the rundown currently active in a given studio|
||A simple prompter for the studio presenter|
In general, you will want to limit the amount of client stations that have full control of the studio (such as activating rundowns, taking parts, ad-libbing, etc.). In order to mark a given client station (browser) as a Studio Control station, you should append
?studio=1 to any query string, for example:
This setting is persisted in browser's Local Storage. To disable studio mode in a given client, append
In the default mode, the Settings page will be unavailable from main navigation. If you want access to the Settings page on a given client station, append
?configure=1 to any query string.
In developer mode, right click is not disabled
The UI will automatically detect user browser's default matching and select the best match, falling back to english. You can also force the UI language to any language by navigating to a page with
?lng=xx query string, for example:
This choice is persisted in browser's Local Storage, and the same language will be used until a new forced language is chosen using this method.
Operating the prompter screen
The prompter has several operating modes, described further below. All modes are intended to be controlled by a computer mouse or similar, such as a presenter tool. To cycle between operating modes, press both mouse keys simultaneously.
The prompter can be configured using URL parameters:
|mirror||string||Mirror the display horisontally|
|vmirror||string||Mirror the display vertically|
|mode||string||Restrict the operating mode. Possible values: "normal", "speed", "smoothscroll"|
|followtake||0 / 1||Whether the prompter should automatically scroll to current segment when the operator TAKE:s it||1|
|fontsize||number||Set a custom font size of the text. 20 will fit in 5 lines of text, 14 will fit 7 lines etc..||14|
|marker||string||Set position of the read-marker. Possible values: "center", "top", "bottom", "hide"||"hide"|
|margin||number||Set margin of screen (used on monitors with overscan), in %.||0|
Nothing fancy, use it like a normal web page
- Scrolling the mouse wheel sets the speed
- Click Left mouse button to toggle scrolling
- Hold Left mouse button to toggle scrolling
- Click Right mouse button to toggle rewind scrolling
- Hold Right mouse button to toggle rewind scrolling
- Scrolling the mouse wheel starts continous scrolling. Small speed adjustments can then be made by nudging the scroll wheel. Stop the scrolling by making a "larger scroll" on the wheel.
The prompter can be operated using pressing & holding keyboard arrow keys:
Home to enable auto-scroll mode.
Shift+Down scrolls in 3x speed. If the studio setup requries a mirrored-image prompter, you can append
?mirror=1 to enable mirror mode. This setting is not persisted in browser.
For support of various languages in the User Interface, Sofie uses the i18next framework. It uses JSON-based translation files to store UI strings. In order to build a new translation file, first extract a PO template file from Sofie UI source code:
cd meteor npm run i18n-extract-pot
Find the created
template.pot file in
meteor/i18n folder. Create a new PO file based on that template using a PO editor of your choice. Save it in the
meteor/i18n folder using your ISO 639-1 language code of choice as the filename.
Next, modify the
package.json scripts and create a new language compilations script:
"i18n-compile-json": "npm run i18n-compile-json-nb & npm run i18n-compile-json-sv & npm run i18n-compile-json-xx", "i18n-compile-json-xx": "i18next-conv -l nb -s i18n/xx.po -t public/locales/xx/translations.json",
Then, run the compilation script:
npm run i18n-compile-json
The resulting JSON file will be placed in
meteor/public/locales/xx, where it will be available to the Sofie UI for use and autodetection.
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.