Skip to Content
Welcome to the Spectrum Documentation
DevelopmentDevelopment Documentation

Spectrum Development Documentation

This is the internal technical documentation for the Spectrum engine and its accompanying modules. It is intended for engine developers and plugin creators not end users. End user documentation can be found here


What is Spectrum?

Spectrum is a framework for building control systems, with a primary focus on show control and DMX lighting. It is built on the Godot engine and follows a modular, networked architecture. The core product is a DMX lighting engine split across two separate programs SpectrumServer, which runs the engine, and SpectrumClient, which provides the user interface. Both are managed and launched by SpectrumLauncher.

The engine is built on top of a set of internal modules that handle networking, input, UI, and shared utilities. These modules are documented here alongside the core applications.


Applications

SpectrumClient

The user-facing interface for Spectrum. Connects to a running SpectrumServer instance and provides the operator with control over the lighting engine. All user interaction, patching, programming, and playback happens through the client.

SpectrumServer

The engine. Manages DMX output, the show file, and all internal state. The server can run headlessly on dedicated hardware or alongside the client on the same machine. It exposes its state to connected clients via the Constellation network protocall.

SpectrumLauncher

The entry point for end users. Manages instances of SpectrumClient and SpectrumServer, starting, stopping, updating, and configuring them.

ConstellationManager

A standalone application used to create and manage Constellation networks. It also serves as the test bed for developing Constellation


Internal Modules

These modules are not standalone products. They are shared libraries used across the Spectrum applications.

Constellation

The networking layer for Spectrum. Constellation handles multicast discovery, node and session management, TCP/UDP communication, and command routing between SpectrumClient and SpectrumServer instances.

NetworkManager

The abstract networking foundation that Constellation is built on. Defines the base classes for network nodes, sessions, and handlers. Allowing mutiple NetworkHandlers to run at the same time.

Axis

The input handling system. Axis manages MIDI, serial, HID, and network inputs and normalises them into a centralised control interface used by both SpectrumClient and SpectrumServer.

Vertex

The UI module. Vertex provides the shared theme, style definitions, and reusable components used across all Spectrum GUI applications.

Utils

A collection of shared utilities, base classes, and types used across the entire codebase. Key components include:

  • GlobalBaseClass — the shared interface all GBC-compatible classes must implement.
  • Data — the data type enum used throughout the engine to describe and identify data values.
  • ChildManager — a utility class for managing parent-child object relationships through a abstracted interface.
  • Promise — an async result type used across the engine for operations that may resolve locally or from a remote network response.

UIConstellationManager

The UI interface to control the Constellation network engine. Stored as its own module as it reused in both SpectrumClient and ConstellationManager


Developer Guides

  • Code Style Guide — formatting, naming conventions, and commenting rules for all GDScript files in the codebase.
  • How to Write Documentation — rules and templates for writing API documentation from source files.
Last updated on