Skip to content

Architecture

Matthew Stratford edited this page May 6, 2021 · 2 revisions

This is the high(er) level explanation what's present in BAPSicle, and how it all talks to each other.

Main Modules

  • server.py - The main entry point (called from launch.py) that acts as the launcher and watchdog for the other module processes.
  • player.py - The code that actually manages a channel of the show plan, plays audio etc. Multiple instances of the Player instances can be launched, each to handle a single channel of audio.
  • player_handler.py - Splits command responses from the player back to the module that sent the original command (or to all modules).
  • web_server.py - Provides the Sanic webserver used to serve the presenter UI, administer BAPSicle and act as an API proxy to (currently) MyRadio for UI track / show plan requests.
  • websocket_server.py - Provides a websocket server to allow the presenter UI instances to send / receive server state changes.
  • file_manager.py - The secret sauce that makes BAPSicle so responsive, handling pre-loading audio from the API to the local disk for quick loading.
  • controllers/*.py - Implementations of hardware controller interfaces for BAPSicle.
Clone this wiki locally