Enigma
A framework for building physical interactive consoles: installations where an
operator works a panel of real switches, knobs, indicators, and screens. It handles input, state, audio, and displays:
- Control surfaces: custom USB-HID boards for switches, rotary encoders,
and analog inputs, each control paired with an addressable-LED indicator.
The board automatically manages all indicator animation and state management
without host interaction.
- State: one coherent application state kept in sync via "Spec Vars" across multiple
independent HID devices and displays, so every panel, sound, and display reacts to the same
source of truth.
- Audio and haptics: a layered, multi-channel sound engine: independently
volume-controlled classes (music, voice, ambient, effects, alerts), a priority
voice-callout queue, and event- or threshold-driven playback. The same engine
optionally drives haptic transducers alongside the speakers.
- Displays: optional, and anything that can hold a socket open: a local
game-engine screen (Unity, Unreal, Godot), a browser page, an LED matrix, or a
small networked screen on a Raspberry Pi across the room. Application state is
serialized and published over WebSocket to any number of them (or none), each
subscribing to only the values it needs.
Enigma is the framework the Halcyon Dawn physical
starship-bridge simulator is built on. It is published here as a complete,
reusable reference: the host library, the board firmware, and the PCB designs.
While building it explicitly for use in my simulator frame, I also kept in mind
somewhat broader needs, such as designing electronic escape room puzzles, arcade
games, and so on. The expanded list of future boards includes functionality
useful for those ventures, even if the Halcyon Dawn project didn't use them.
Status: published as-is, for reference and reuse. Not actively maintained.
Issues and pull requests are unlikely to be reviewed, and Issues are disabled.
New boards may be added occasionally, but there is no support commitment.
Fork freely; that is what the license is for.
Platform: built and tested only on macOS Tahoe (Apple Silicon). No testing
has been done on other platforms, and none is planned. It may or may not work
elsewhere; that is left to you.
Layout