scenic-core
v4.0.10
Published
Node.js manager for Switcher
Downloads
16
Readme
Scenic Core
Scenic is a stage teleconference system that allows for real-time transmission of audiovisual and arbitrary data over any IP network. Telepresence systems can be used in various artistic contexts, so that two different creative spaces can communicate with each other or present a combined performance. Scenic Core is a rewrite and improvement of the previous Scenic software.
Scenic Core is a web server which can be used with a compatible user interface using WebSocket commands. The Scenic graphical user interface can be downloaded separately from its source. As part of the Scenic stack, Scenic Core acts as a bridge and gatekeeper between Switcher (telepresence engine) and Scenic.
Scenic Core is currently developed by the Société des Arts Technologiques [SAT], a non-profit artistic entity based in Montreal, Canada. The current version of Scenic Core has been tested with Ubuntu 20.04.
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Dependencies
| Name | Version | Command | Description |
|----------------------------------|-------------|---------|-----------------------------------------------------------------------|
| Git | latest | sudo apt install git
| Distributed version control system used to get Scenic Core source code |
| NodeJS | == 10 | See NodeJS installation instructions | JavaScript runtime which helps to build the Scenic engine |
| NPM | >= 6.14.4 | Included with the NodeJS installation | JavaScript package manager used to build internal dependencies |
| libicu-dev | latest | sudo apt install libicu-dev
| Development library for handling of unicode characters |
| Shmdata | latest | See Shmdata documentation | Library to share flows of data frames between processes via shared memory |
| Switcher | == 2.1.41 | See Switcher documentation | C++ engine allowing the streaming of data over IP networks |
| Node-Switcher | latest | - | NodeJS add-on to allow communication Switcher. Will be automatically installed with Scenic Core |
WARNING: Scenic Core is NOT compatible with Switcher version 2.2 and and upwards.
Installation
Install from NPM
Install the npm package globally:
npm install -g scenic-core
Install from Source
Your default g++ compiler must be 8.0 or greater. (sudo apt install g++-8
on ubuntu)
| Step | Command
|----------------------------------|-------------------------
| Clone the Scenic Core repository | git clone https://gitlab.com/sat-mtl/tools/scenic/scenic-core.git
| Move into Scenic Core folder | cd scenic-core
| Build the application | make build
| Install the application | sudo make install
Node-Switcher Add-On
The NodeJS add-on for Switcher, which was once part of Scenic Core, has been moved to its own repository and renamed Node-Switcher. It is specified as a dependency of Scenic Core in its package.json
, and will therefore be automatically installed with the server.
Usage
Starting the Server
scenic --help # display all scenic options
scenic-core [options]
Options:
-l, --logLevel Set the log level [choices: "error", "warn", "switcher", "debug", "info", "verbose", "scenic"] [default: "switcher"]
-p, --port Set a specific port for websocket connections [number] [default: 8000]
-S, --savePath Override default Scenic save file directory [string] [default: "/home/scenicbox/Documents/Scenic/Scenes"]
-L, --logPath Override default log directory [string] [default: "/home/scenicbox/.local/state/scenic-core/logs"]
--version, -v Show version number [boolean]
--help, -h Show help [boolean]
By default, Scenic Core is publishing all its logs into the directory defined by the XDG_STATE_HOME variable. It writes all logs from:
| Program source | Folder destination |
|-----------------|---------------------------------|
| Internal logger | ${XDG_STATE_HOME}/scenic-core
|
| Switcher | ${XDG_STATE_HOME}/scenic-core
|
| Scenic client | ${XDG_STATE_HOME}/scenic
|
Starting the Server for Debug with gdb
scenic-debug # start pre-configurated gdb script
Docker deployment
To setup Scenic using Docker, follow the instructions in the Docker usage page.
Development information on Docker images build system is available on the Docker build page
Technologies
Scenic Core is a custom assembly of ExpressJS and Socket.io, using NodeJS 10.20.1. It uses a NodeJS add-on to communicate with Switcher and the WebSocket protocol to communicate with Scenic.
The SAT uses Ubuntu 20.04, so testing priority is given to this version.
Contributing
Check out our Contributing Guide to get started!
Versioning
SemVer is used for versioning. For the versions available, see the tags on this repository.
Authors
See here.
License
This project is licensed under the GNU General Public License version 3 - see the LICENSE file for details.
Acknowledgments
This project was made possible by the Société des Arts Technologiques [SAT].