Glossary#
- Backend#
See Services.
- Django#
Django is used as the web server framework for Gencaster. For example, it manages the database and wraps the Engine into a GraphQL connection.
- Docker#
Docker is a virtualization software which allows to specify the runtime of a service through code. This helps to make the installation, deployment and management of Gencaster easier.
- Edge#
- Connection#
Connects an entry node door with an exit node door.
- Editor#
See Services.
- Engine#
The story graph engine traverses the Story Graph and manages any script cell executions and allocations.
- Frontend#
See Services.
- Graph#
- Story Graph#
A graph is a key component of Gencaster and is used to define the score of a story within Gencaster. A graph stores the content, metadata and code statements which will control and influence the stream of the listener. Each Graph consists of multiple nodes which are connected through edges.
- GraphQL#
GraphQL has nothing to do with Story Graph, but instead is a communication protocol used between Frontend and Backend.
See Schema.
- Janus#
The WebRTC server used to distribute/broadcast the sonic output of scsynth via WebRTC.
- Node#
A node is an entity within the Story Graph and consists of any number of script cells as well as any number of node doors.
- Node door#
The entering and exiting of a node is managed through node doors. Each node has at least an default exit door, but can also have multiple exit nodes. Additionally, each node also has an entry door which enforces the flow such that an exit door can be only connected to an input door of a node.
Also see the node door tutorial for further information.
- Pipewire#
Used as a replacement for Jack within Gencaster, which manages the piping of the scsynth output to Janus. Gencaster used to rely on Jack but the virtualization performance was very bad, which Pipewire fixed.
- Services#
See Services.
- Script cell#
A script cell wrap code statements, see Script cell.
- sclang#
sclang is the programming language of the SuperCollider framework. Within Gencaster it is used to control the content of the stream.
- scsynth#
scsyth is the synthesis enginge of SuperCollider and is responsible to generate sounds on the Gencaster stream.
- Stream#
A stream combines a listener with a Stream Point and a Story Graph. There can be multiple listeners on a stream, determined by the Stream Assignment Policy. If the listener count becomes 0, the stream will be closed and the stream point will be available for the next listener.
See
stream.models.Stream
.- Stream Assignment Policy#
- Stream Point#
- Streaming Point#
A stream point encapsules a combination of a Janus stream, optional audio bridge and a scsynth instance. Gencaster can only manage as many parallel streams as there are stream points available.
- Stream Variable#
Stream variable allow to attach information on a stream.
See
stream.models.StreamVariable
.Important
A stream variable is always a string. Even if a stream variable has been set to a number or boolean value through a Python cell, the stream variable will be a string in the next script cell.
- SuperCollider#
SuperCollider is a framework for algorithmic composition and beyond. Gencaster uses scsynth and sclang in order to create sounds on the stream.
- Vue#
Vue is a JavaScript framework which is used to build to Frontend and the Editor.
- WebRTC#
WebRTC is the streaming technology which is used by Gencaster. It is supported by all major browsers and allows to distribute media in real time and in high quality. The actually used WebRTC server is Janus.