The Open-Air Instrumented Radio (OPEN-AIR) platform is a modular, high-performance toolkit designed for radio frequency monitoring, signal analysis, and laboratory instrument orchestration.
OPEN-AIR solves the problem of rigid, vendor-locked instrumentation software by providing a partitioned architecture:
- Partition A (Core): Handles safety-critical hardware communication, MQTT bridging, and real-time data processing.
- Partition B (UI): A rich, dynamic user interface engine capable of generating photorealistic industrial "Next Gen" dashboards from simple JSON configurations.
Whether you are performing spectral reconnaissance, automating test sequences, or building a custom cockpit for your RF laboratory, OPEN-AIR provides the scaffolding to scale from a single instrument to a global fleet.
Before running OPEN-AIR, ensure your environment meets the following requirements:
- Target OS: Ubuntu 22.04 LTS (or compatible Linux distribution).
- Runtime: Python 3.10 or higher.
- External Services:
- Mosquitto MQTT Broker: Required for inter-partition communication and instrument telemetry.
- VISA Backend: (Optional) National Instruments or Keysight VISA drivers for physical instrument connectivity.
Follow these steps to get OPEN-AIR running locally:
-
Clone the Repository:
git clone https://github.com/APKaudio/OPEN-AIR cd OPEN-AIR -
Set up Virtual Environment:
python3 -m venv venv source venv/bin/activate -
Install Dependencies:
pip install --upgrade pip pip install -r requirements.txt
The quickest way to launch the full system is via the Supervisor:
python3 OpenAir.pyYou can launch partitions independently for debugging:
- Core Only:
python3 OpenAir.py --core - UI Only:
python3 OpenAir.py --ui
- Instrument Discovery: Click "Find Fleet" in the UI to scan your network and USB ports for SCPI-compatible devices.
- Custom Dashboard: Edit any
.jsonfile in thedisplay/directory to instantly update your UI layout.
System-wide settings are managed via config.ini in the project root.
| Variable | Description | Default |
|---|---|---|
enable_debug_mode |
Enables verbose TRACE/DEBUG logging. | False |
broker_address |
IP address of your MQTT broker. | localhost |
mission_critical_mode |
Enables auto-restart for crashed partitions. | False |
Refer to managers/configini/config_reader.py.md for deep configuration details.
We welcome contributions to the OPEN-AIR ecosystem!
- Testing: Run the test suite via
pytest. - Formatting: Adhere to PEP 8 standards. Use
blackfor auto-formatting. - Submitting: Create a feature branch and submit a Pull Request against the
mainbranch.
* [manager_launcher.py.md](./managers/manager_launcher.py.md) β *Manager Launcher*
* **Mqtt_Manager/**
* [mqtt_manager.py.md](./managers/Mqtt_Manager/mqtt_manager.py.md) β *Mqtt Manager*
* **Visa_Fleet_Manager/**
* [__init__.py.md](./managers/Visa_Fleet_Manager/__init__.py.md) β * Init *
* [manager_fleet_mqtt_bridge.py.md](./managers/Visa_Fleet_Manager/manager_fleet_mqtt_bridge.py.md) β *Manager Fleet Mqtt Bridge*
* [manager_visa_Gateway.py.md](./managers/Visa_Fleet_Manager/manager_visa_Gateway.py.md) β *Manager Visa Gateway*
* [manager_visa_IP.py.md](./managers/Visa_Fleet_Manager/manager_visa_IP.py.md) β *Manager Visa Ip*
* [manager_visa_Search.py.md](./managers/Visa_Fleet_Manager/manager_visa_Search.py.md) β *Manager Visa Search*
* [manager_visa_USB.py.md](./managers/Visa_Fleet_Manager/manager_visa_USB.py.md) β *Manager Visa Usb*
* [manager_visa_csv_builder.py.md](./managers/Visa_Fleet_Manager/manager_visa_csv_builder.py.md) β *Manager Visa Csv Builder*
* [manager_visa_json_builder.py.md](./managers/Visa_Fleet_Manager/manager_visa_json_builder.py.md) β *Manager Visa Json Builder*
* [manager_visa_known_types.py.md](./managers/Visa_Fleet_Manager/manager_visa_known_types.py.md) β *Manager Visa Known Types*
* [manager_visa_parse_idn.py.md](./managers/Visa_Fleet_Manager/manager_visa_parse_idn.py.md) β *Manager Visa Parse Idn*
* [manager_visa_supervisor.py.md](./managers/Visa_Fleet_Manager/manager_visa_supervisor.py.md) β *Manager Visa Supervisor*
* [visa_fleet_manager.py.md](./managers/Visa_Fleet_Manager/visa_fleet_manager.py.md) β *Visa Fleet Manager*
* [visa_proxy_fleet.py.md](./managers/Visa_Fleet_Manager/visa_proxy_fleet.py.md) β *Visa Proxy Fleet*
* **Prototype/**
* [cli_visa_find.py.md](./managers/Visa_Fleet_Manager/Prototype/cli_visa_find.py.md) β *Cli Visa Find*
* **configini/**
* [config_builder.py.md](./managers/configini/config_builder.py.md) β *Config Builder*
* [config_reader.py.md](./managers/configini/config_reader.py.md) β *Config Reader*
* [config_validator.py.md](./managers/configini/config_validator.py.md) β *Config Validator*
* [console_encoder.py.md](./managers/configini/console_encoder.py.md) β *Console Encoder*
* **Display/**
* [open_air_ui.py.md](./managers/Display/open_air_ui.py.md) β *Open Air Ui*
* **factory/**
* [asset_cache_manager.py.md](./managers/Display/factory/asset_cache_manager.py.md) β *Asset Cache Manager*
* [button_canvas_base.py.md](./managers/Display/factory/button_canvas_base.py.md) β *Button Canvas Base*
* [gui_widget_factory.py.md](./managers/Display/factory/gui_widget_factory.py.md) β *Gui Widget Factory*
* [widget_registry.py.md](./managers/Display/factory/widget_registry.py.md) β *Widget Registry*
* **breakoff_manager/**
* [hidden_breakoff_manager.md](./managers/Display/breakoff_manager/hidden_breakoff_manager.md) β *Hidden Breakoff Manager*
* [hidden_breakoff_manager.py.md](./managers/Display/breakoff_manager/hidden_breakoff_manager.py.md) β *Hidden Breakoff Manager*
* **.crawler/**
* **Display-20260222165442/**
* **transparency/**
* [transparency_manager.py.md](./managers/Display/transparency/transparency_manager.py.md) β *Transparency Manager*
* [transparency_mixin.py.md](./managers/Display/transparency/transparency_mixin.py.md) β *Transparency Mixin*
* **parser/**
* [HOMOGENIZED_SCHEMA_SPEC.md](./managers/Display/parser/HOMOGENIZED_SCHEMA_SPEC.md) β *Homogenized Schema Spec*
* [gui_batch_builder.md](./managers/Display/parser/gui_batch_builder.md) β *Gui Batch Builder*
* [gui_file_loader.md](./managers/Display/parser/gui_file_loader.md) β *Gui File Loader*
* [gui_mqtt_manager.md](./managers/Display/parser/gui_mqtt_manager.md) β *Gui Mqtt Manager*
* [gui_rebuilder.md](./managers/Display/parser/gui_rebuilder.md) β *Gui Rebuilder*
* [gui_smart_standardizer.md](./managers/Display/parser/gui_smart_standardizer.md) β *Gui Smart Standardizer*
* [gui_smart_standardizer.py.md](./managers/Display/parser/gui_smart_standardizer.py.md) β *Gui Smart Standardizer*
* [gui_style_manager.md](./managers/Display/parser/gui_style_manager.md) β *Gui Style Manager*
* [gui_widget_factory.md](./managers/Display/parser/gui_widget_factory.md) β *Gui Widget Factory*
* [layout_parser.py.md](./managers/Display/parser/layout_parser.py.md) β *Layout Parser*
* [widget_schema_normalizer.py.md](./managers/Display/parser/widget_schema_normalizer.py.md) β *Widget Schema Normalizer*
* **telemetry/**
* [ui_tracking_service.py.md](./managers/Display/telemetry/ui_tracking_service.py.md) β *Ui Tracking Service*
* **geometry_snitch/**
* [geometry_snitch.py.md](./managers/Display/telemetry/geometry_snitch/geometry_snitch.py.md) β *Geometry Snitch*
* [hidden_geometry_manager.md](./managers/Display/telemetry/geometry_snitch/hidden_geometry_manager.md) β *Hidden Geometry Manager*
* **visibility_snitch/**
* [hidden_visibility_manager.md](./managers/Display/telemetry/visibility_snitch/hidden_visibility_manager.md) β *Hidden Visibility Manager*
* [visibility_snitch.py.md](./managers/Display/telemetry/visibility_snitch/visibility_snitch.py.md) β *Visibility Snitch*
* **array/**
* [array.md](./managers/Display/array/array.md) β *Array*
* [array.py.md](./managers/Display/array/array.py.md) β *Array*
* **collapsible_block/**
* [collapsible_block.py.md](./managers/Display/array/collapsible_block/collapsible_block.py.md) β *Collapsible Block*
* **builder/**
* [DYNAMIC_GUI_GUIDE.md](./managers/Display/builder/DYNAMIC_GUI_GUIDE.md) β *Dynamic Gui Guide*
* [async_grid_renderer.py.md](./managers/Display/builder/async_grid_renderer.py.md) β *Async Grid Renderer*
* [gui_batch_builder.py.md](./managers/Display/builder/gui_batch_builder.py.md) β *Gui Batch Builder*
* [gui_display.py.md](./managers/Display/builder/gui_display.py.md) β *Gui Display*
* [gui_mqtt_manager.py.md](./managers/Display/builder/gui_mqtt_manager.py.md) β *Gui Mqtt Manager*
* [gui_rebuilder.py.md](./managers/Display/builder/gui_rebuilder.py.md) β *Gui Rebuilder*
* [window_manager.py.md](./managers/Display/builder/window_manager.py.md) β *Window Manager*
* **styling/**
* [gui_style_manager.py.md](./managers/Display/styling/gui_style_manager.py.md) β *Gui Style Manager*
* **loader/**
* [blueprint_loader.py.md](./managers/Display/loader/blueprint_loader.py.md) β *Blueprint Loader*
* [gui_file_loader.py.md](./managers/Display/loader/gui_file_loader.py.md) β *Gui File Loader*
* [gui_from_json.py.md](./managers/Display/loader/gui_from_json.py.md) β *Gui From Json*
* [module_loader.py.md](./managers/Display/loader/module_loader.py.md) β *Module Loader*
* **context/**
* [widget_context.py.md](./managers/Display/context/widget_context.py.md) β *Widget Context*
* **Visa_Scipi_dialog/**
* [__init__.py.md](./managers/Visa_Scipi_dialog/__init__.py.md) β * Init *
* [manager_logic_connect_instrument.py.md](./managers/Visa_Scipi_dialog/manager_logic_connect_instrument.py.md) β *Manager Logic Connect Instrument*
* [manager_logic_disconnect_instrument.py.md](./managers/Visa_Scipi_dialog/manager_logic_disconnect_instrument.py.md) β *Manager Logic Disconnect Instrument*
* [manager_logic_mqtt_listen.py.md](./managers/Visa_Scipi_dialog/manager_logic_mqtt_listen.py.md) β *Manager Logic Mqtt Listen*
* [manager_logic_mqtt_publisher.py.md](./managers/Visa_Scipi_dialog/manager_logic_mqtt_publisher.py.md) β *Manager Logic Mqtt Publisher*
* [manager_visa.py.md](./managers/Visa_Scipi_dialog/manager_visa.py.md) β *Manager Visa*
* [manager_visa_list_visa_resources.py.md](./managers/Visa_Scipi_dialog/manager_visa_list_visa_resources.py.md) β *Manager Visa List Visa Resources*
* [manager_visa_proxy.py.md](./managers/Visa_Scipi_dialog/manager_visa_proxy.py.md) β *Manager Visa Proxy*
* [manager_visa_reboot.py.md](./managers/Visa_Scipi_dialog/manager_visa_reboot.py.md) β *Manager Visa Reboot*
* [manager_visa_reset.py.md](./managers/Visa_Scipi_dialog/manager_visa_reset.py.md) β *Manager Visa Reset*
* [manager_visa_safe_query.py.md](./managers/Visa_Scipi_dialog/manager_visa_safe_query.py.md) β *Manager Visa Safe Query*
* [manager_visa_safe_writer.py.md](./managers/Visa_Scipi_dialog/manager_visa_safe_writer.py.md) β *Manager Visa Safe Writer*
* [manager_visa_search_results.py.md](./managers/Visa_Scipi_dialog/manager_visa_search_results.py.md) β *Manager Visa Search Results*
* [worker_visa_pre_flight_check.py.md](./managers/Visa_Scipi_dialog/worker_visa_pre_flight_check.py.md) β *Worker Visa Pre Flight Check*
* **PTP/**
* [PTPtester.py.md](./managers/PTP/PTPtester.py.md) β *Ptptester*
* [ptp_manager.py.md](./managers/PTP/ptp_manager.py.md) β *Ptp Manager*
* **yak/**
* [manager_yak_rx.py.md](./managers/yak/manager_yak_rx.py.md) β *Manager Yak Rx*
* [manager_yak_tx.py.md](./managers/yak/manager_yak_tx.py.md) β *Manager Yak Tx*
* [manager_yakety_yak.py.md](./managers/yak/manager_yakety_yak.py.md) β *Manager Yakety Yak*
* [yak_command_builder.py.md](./managers/yak/yak_command_builder.py.md) β *Yak Command Builder*
* [yak_repository_parser.py.md](./managers/yak/yak_repository_parser.py.md) β *Yak Repository Parser*
* [yak_translator.py.md](./managers/yak/yak_translator.py.md) β *Yak Translator*
* [yak_trigger_handler.py.md](./managers/yak/yak_trigger_handler.py.md) β *Yak Trigger Handler*
* **Documentation/**
* [How to make a yak json.md](./managers/yak/Documentation/How%20to%20make%20a%20yak%20json.md) β *How To Make A Yak Json*
* **System_Core/**
* [open_air_core.py.md](./managers/System_Core/open_air_core.py.md) β *Open Air Core*
* [Worker_Launcher.py.md](./workers/Worker_Launcher.py.md) β *Worker Launcher*
* [__init__.py.md](./workers/__init__.py.md) β * Init *
* **monitoring/**
* [fleet_status_monitor.py.md](./workers/monitoring/fleet_status_monitor.py.md) β *Fleet Status Monitor*
* **Showtime/**
* [ptp_time.py.md](./workers/Showtime/ptp_time.py.md) β *Ptp Time*
* [worker_showtime_buttons.py.md](./workers/Showtime/worker_showtime_buttons.py.md) β *Worker Showtime Buttons*
* [worker_showtime_clear_group_buttons.py.md](./workers/Showtime/worker_showtime_clear_group_buttons.py.md) β *Worker Showtime Clear Group Buttons*
* [worker_showtime_draw_bargraph.py.md](./workers/Showtime/worker_showtime_draw_bargraph.py.md) β *Worker Showtime Draw Bargraph*
* [worker_showtime_group.py.md](./workers/Showtime/worker_showtime_group.py.md) β *Worker Showtime Group*
* [worker_showtime_on_group_toggle.py.md](./workers/Showtime/worker_showtime_on_group_toggle.py.md) β *Worker Showtime On Group Toggle*
* [worker_showtime_on_marker_button_click.py.md](./workers/Showtime/worker_showtime_on_marker_button_click.py.md) β *Worker Showtime On Marker Button Click*
* [worker_showtime_on_zone_toggle.py.md](./workers/Showtime/worker_showtime_on_zone_toggle.py.md) β *Worker Showtime On Zone Toggle*
* [worker_showtime_read.py.md](./workers/Showtime/worker_showtime_read.py.md) β *Worker Showtime Read*
* [worker_showtime_tune.py.md](./workers/Showtime/worker_showtime_tune.py.md) β *Worker Showtime Tune*
* **splash_screen/**
* [__init__.py.md](./workers/splash_screen/__init__.py.md) β * Init *
* [lyrics_data.py.md](./workers/splash_screen/lyrics_data.py.md) β *Lyrics Data*
* [makegif.py.md](./workers/splash_screen/makegif.py.md) β *Makegif*
* [splash_screen.py.md](./workers/splash_screen/splash_screen.py.md) β *Splash Screen*
* **mqtt/**
* [XXX worker_mqtt_data_flattening.py.md](./workers/mqtt/XXX%20worker_mqtt_data_flattening.py.md) β *Xxx Worker Mqtt Data Flattening*
* [broker_monitor.py.md](./workers/mqtt/broker_monitor.py.md) β *Broker Monitor*
* [delete_open_air.py.md](./workers/mqtt/delete_open_air.py.md) β *Delete Open Air*
* [mqtt_connection_manager.py.md](./workers/mqtt/mqtt_connection_manager.py.md) β *Mqtt Connection Manager*
* [mqtt_message.py.md](./workers/mqtt/mqtt_message.py.md) β *Mqtt Message*
* [mqtt_publisher_service.py.md](./workers/mqtt/mqtt_publisher_service.py.md) β *Mqtt Publisher Service*
* [mqtt_subscriber_router.py.md](./workers/mqtt/mqtt_subscriber_router.py.md) β *Mqtt Subscriber Router*
* [mqtt_topic_utils.py.md](./workers/mqtt/mqtt_topic_utils.py.md) β *Mqtt Topic Utils*
* [worker_mqtt_controller_util.py.md](./workers/mqtt/worker_mqtt_controller_util.py.md) β *Worker Mqtt Controller Util*
* **setup/**
* [config_reader.py.md](./workers/mqtt/setup/config_reader.py.md) β *Config Reader*
* **active/**
* [XXX worker_active_marker_tune_and_collect.py.md](./workers/active/XXX%20worker_active_marker_tune_and_collect.py.md) β *Xxx Worker Active Marker Tune And Collect*
* [XXX-worker_active_peak_publisher.py.md](./workers/active/XXX-worker_active_peak_publisher.py.md) β *Xxx-Worker Active Peak Publisher*
* [__init__.py.md](./workers/active/__init__.py.md) β * Init *
* **wysiwyg_editor/**
* [run_builder.py.md](./workers/wysiwyg_editor/run_builder.py.md) β *Run Builder*
* [wysiwyg_editor.py.md](./workers/wysiwyg_editor/wysiwyg_editor.py.md) β *Wysiwyg Editor*
* **workspaces/**
* [element_properties.py.md](./workers/wysiwyg_editor/workspaces/element_properties.py.md) β *Element Properties*
* [interactive_layout.py.md](./workers/wysiwyg_editor/workspaces/interactive_layout.py.md) β *Interactive Layout*
* [json_editor.py.md](./workers/wysiwyg_editor/workspaces/json_editor.py.md) β *Json Editor*
* **layout_overlays/**
* [alignment.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/alignment.py.md) β *Alignment*
* [blocks.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/blocks.py.md) β *Blocks*
* [colors.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/colors.py.md) β *Colors*
* [columns.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/columns.py.md) β *Columns*
* [selection.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/selection.py.md) β *Selection*
* [sizing.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/sizing.py.md) β *Sizing*
* [sticky.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/sticky.py.md) β *Sticky*
* [structure.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/structure.py.md) β *Structure*
* **grab_bag/**
* [grab_bag_loader.py.md](./workers/wysiwyg_editor/grab_bag/grab_bag_loader.py.md) β *Grab Bag Loader*
* [grab_bag_view.py.md](./workers/wysiwyg_editor/grab_bag/grab_bag_view.py.md) β *Grab Bag View*
* **actions/**
* **core/**
* [event_bus.py.md](./workers/wysiwyg_editor/core/event_bus.py.md) β *Event Bus*
* [file_io_handler.py.md](./workers/wysiwyg_editor/core/file_io_handler.py.md) β *File Io Handler*
* [state_manager.py.md](./workers/wysiwyg_editor/core/state_manager.py.md) β *State Manager*
* **exporters/**
* [__init__.py.md](./workers/exporters/__init__.py.md) β * Init *
* [utils_csv_writer.py.md](./workers/exporters/utils_csv_writer.py.md) β *Utils Csv Writer*
* [worker_file_csv_export.py.md](./workers/exporters/worker_file_csv_export.py.md) β *Worker File Csv Export*
* **watchdog/**
* [__init__.py.md](./workers/watchdog/__init__.py.md) β * Init *
* [watchdog.py.md](./workers/watchdog/watchdog.py.md) β *Watchdog*
* **logger/**
* [logger.py.md](./workers/logger/logger.py.md) β *Logger*
* **builder/**
* [builder.md](./workers/builder/builder.md) β *Builder*
* [builder.py.md](./workers/builder/builder.py.md) β *Builder*
* **breakoff_manager/**
* [hidden_breakoff_manager.md](./workers/builder/breakoff_manager/hidden_breakoff_manager.md) β *Hidden Breakoff Manager*
* [hidden_breakoff_manager.py.md](./workers/builder/breakoff_manager/hidden_breakoff_manager.py.md) β *Hidden Breakoff Manager*
* **panel_screw/**
* [screw_generator.py.md](./workers/builder/panel_screw/screw_generator.py.md) β *Screw Generator*
* **break_line/**
* [hidden_BreakLine.md](./workers/builder/break_line/hidden_BreakLine.md) β *Hidden Breakline*
* [hidden_BreakLine.py.md](./workers/builder/break_line/hidden_BreakLine.py.md) β *Hidden Breakline*
* **fader_input/**
* [fader_input.md](./workers/builder/fader_input/fader_input.md) β *Fader Input*
* [fader_input.py.md](./workers/builder/fader_input/fader_input.py.md) β *Fader Input*
* **button_wink_toggler/**
* [button_wink_toggler.py.md](./workers/builder/button_wink_toggler/button_wink_toggler.py.md) β *Button Wink Toggler*
* **fader/**
* [fader.md](./workers/builder/fader/fader.md) β *Fader*
* [fader.py.md](./workers/builder/fader/fader.py.md) β *Fader*
* **core/**
* [cap.py.md](./workers/builder/fader/core/cap.py.md) β *Cap*
* [readout.py.md](./workers/builder/fader/core/readout.py.md) β *Readout*
* [scale.py.md](./workers/builder/fader/core/scale.py.md) β *Scale*
* [track.py.md](./workers/builder/fader/core/track.py.md) β *Track*
* **button_trapezoid_toggler/**
* [button_trapezoid_toggler.md](./workers/builder/button_trapezoid_toggler/button_trapezoid_toggler.md) β *Button Trapezoid Toggler*
* [button_trapezoid_toggler.py.md](./workers/builder/button_trapezoid_toggler/button_trapezoid_toggler.py.md) β *Button Trapezoid Toggler*
* **status_light/**
* [status_light.md](./workers/builder/status_light/status_light.md) β *Status Light*
* [status_light.py.md](./workers/builder/status_light/status_light.py.md) β *Status Light*
* **meter_needle/**
* [constants.py.md](./workers/builder/meter_needle/constants.py.md) β *Constants*
* [meter_modifyer.py.md](./workers/builder/meter_needle/meter_modifyer.py.md) β *Meter Modifyer*
* [meter_needle.md](./workers/builder/meter_needle/meter_needle.md) β *Meter Needle*
* [meter_needle.py.md](./workers/builder/meter_needle/meter_needle.py.md) β *Meter Needle*
* **animation/**
* [animator.py.md](./workers/builder/meter_needle/animation/animator.py.md) β *Animator*
* **ui/**
* [frame_factory.py.md](./workers/builder/meter_needle/ui/frame_factory.py.md) β *Frame Factory*
* **config/**
* [meter_config.py.md](./workers/builder/meter_needle/config/meter_config.py.md) β *Meter Config*
* **cosmetics/**
* [background.py.md](./workers/builder/meter_needle/cosmetics/background.py.md) β *Background*
* [bezel.py.md](./workers/builder/meter_needle/cosmetics/bezel.py.md) β *Bezel*
* [geometry.py.md](./workers/builder/meter_needle/cosmetics/geometry.py.md) β *Geometry*
* [label.py.md](./workers/builder/meter_needle/cosmetics/label.py.md) β *Label*
* [lens.py.md](./workers/builder/meter_needle/cosmetics/lens.py.md) β *Lens*
* [lighting_overlay.py.md](./workers/builder/meter_needle/cosmetics/lighting_overlay.py.md) β *Lighting Overlay*
* [mask.py.md](./workers/builder/meter_needle/cosmetics/mask.py.md) β *Mask*
* **core/**
* [needle.py.md](./workers/builder/meter_needle/core/needle.py.md) β *Needle*
* [number.py.md](./workers/builder/meter_needle/core/number.py.md) β *Number*
* [peak.py.md](./workers/builder/meter_needle/core/peak.py.md) β *Peak*
* [pivot.py.md](./workers/builder/meter_needle/core/pivot.py.md) β *Pivot*
* [scale.py.md](./workers/builder/meter_needle/core/scale.py.md) β *Scale*
* [shadow.py.md](./workers/builder/meter_needle/core/shadow.py.md) β *Shadow*
* **integration/**
* [state_linker.py.md](./workers/builder/meter_needle/integration/state_linker.py.md) β *State Linker*
* **input_mousewheel_mixin/**
* [input_mousewheel_mixin.md](./workers/builder/input_mousewheel_mixin/input_mousewheel_mixin.md) β *Input Mousewheel Mixin*
* [input_mousewheel_mixin.py.md](./workers/builder/input_mousewheel_mixin/input_mousewheel_mixin.py.md) β *Input Mousewheel Mixin*
* [test_dynamic_gui_mousewheel_mixin.py.md](./workers/builder/input_mousewheel_mixin/test_dynamic_gui_mousewheel_mixin.py.md) β *Test Dynamic Gui Mousewheel Mixin*
* **panels/**
* [HOW_TO_USE_BACKGROUNDS.md](./workers/builder/panels/HOW_TO_USE_BACKGROUNDS.md) β *How To Use Backgrounds*
* [panel_generator.py.md](./workers/builder/panels/panel_generator.py.md) β *Panel Generator*
* **meter_bar/**
* [meter_bar.md](./workers/builder/meter_bar/meter_bar.md) β *Meter Bar*
* [meter_bar.py.md](./workers/builder/meter_bar/meter_bar.py.md) β *Meter Bar*
* [smart_meter.py.md](./workers/builder/meter_bar/smart_meter.py.md) β *Smart Meter*
* **core/**
* [ballistics.py.md](./workers/builder/meter_bar/core/ballistics.py.md) β *Ballistics*
* [config_parser.py.md](./workers/builder/meter_bar/core/config_parser.py.md) β *Config Parser*
* [layout_calculator.py.md](./workers/builder/meter_bar/core/layout_calculator.py.md) β *Layout Calculator*
* **renderers/**
* [tk_canvas_renderer.py.md](./workers/builder/meter_bar/renderers/tk_canvas_renderer.py.md) β *Tk Canvas Renderer*
* **button_actuator/**
* [button_actuator.md](./workers/builder/button_actuator/button_actuator.md) β *Button Actuator*
* [button_actuator.py.md](./workers/builder/button_actuator/button_actuator.py.md) β *Button Actuator*
* **images_image_display/**
* [images_image_display.md](./workers/builder/images_image_display/images_image_display.md) β *Images Image Display*
* [images_image_display.py.md](./workers/builder/images_image_display/images_image_display.py.md) β *Images Image Display*
* **images_animation_display/**
* [images_animation_display.md](./workers/builder/images_animation_display/images_animation_display.md) β *Images Animation Display*
* [images_animation_display.py.md](./workers/builder/images_animation_display/images_animation_display.py.md) β *Images Animation Display*
* **listbox/**
* [listbox.md](./workers/builder/listbox/listbox.md) β *Listbox*
* [listbox.py.md](./workers/builder/listbox/listbox.py.md) β *Listbox*
* **data_json_tree/**
* [data_json_tree.py.md](./workers/builder/data_json_tree/data_json_tree.py.md) β *Data Json Tree*
* **fader_horizontal/**
* [fader_horizontal.md](./workers/builder/fader_horizontal/fader_horizontal.md) β *Fader Horizontal*
* [fader_horizontal.py.md](./workers/builder/fader_horizontal/fader_horizontal.py.md) β *Fader Horizontal*
* **data_radar/**
* [data_radar.md](./workers/builder/data_radar/data_radar.md) β *Data Radar*
* [data_radar.py.md](./workers/builder/data_radar/data_radar.py.md) β *Data Radar*
* **circular_motion_displacement_potentiometer/**
* [CMDP_tester.md](./workers/builder/circular_motion_displacement_potentiometer/CMDP_tester.md) β *Cmdp Tester*
* [CMDP_tester.py.md](./workers/builder/circular_motion_displacement_potentiometer/CMDP_tester.py.md) β *Cmdp Tester*
* [circular_motion_displacement_potentiometer.py.md](./workers/builder/circular_motion_displacement_potentiometer/circular_motion_displacement_potentiometer.py.md) β *Circular Motion Displacement Potentiometer*
* [cmdp_channel_handler.py.md](./workers/builder/circular_motion_displacement_potentiometer/cmdp_channel_handler.py.md) β *Cmdp Channel Handler*
* [cmdp_file_handler.py.md](./workers/builder/circular_motion_displacement_potentiometer/cmdp_file_handler.py.md) β *Cmdp File Handler*
* [cmdp_group_handler.py.md](./workers/builder/circular_motion_displacement_potentiometer/cmdp_group_handler.py.md) β *Cmdp Group Handler*
* **input_directional_buttons/**
* [input_directional_buttons.md](./workers/builder/input_directional_buttons/input_directional_buttons.md) β *Input Directional Buttons*
* [input_directional_buttons.py.md](./workers/builder/input_directional_buttons/input_directional_buttons.py.md) β *Input Directional Buttons*
* **text_value_box/**
* [text_value_box.md](./workers/builder/text_value_box/text_value_box.md) β *Text Value Box*
* [text_value_box.py.md](./workers/builder/text_value_box/text_value_box.py.md) β *Text Value Box*
* **text_table/**
* [Table_CSV_Reader.py.md](./workers/builder/text_table/Table_CSV_Reader.py.md) β *Table Csv Reader*
* [Table_CSV_Writer.py.md](./workers/builder/text_table/Table_CSV_Writer.py.md) β *Table Csv Writer*
* [Table_CSV_check.py.md](./workers/builder/text_table/Table_CSV_check.py.md) β *Table Csv Check*
* [table_editing_inplace_mixin.py.md](./workers/builder/text_table/table_editing_inplace_mixin.py.md) β *Table Editing Inplace Mixin*
* [table_editing_manager.py.md](./workers/builder/text_table/table_editing_manager.py.md) β *Table Editing Manager*
* [table_editing_row_ops_mixin.py.md](./workers/builder/text_table/table_editing_row_ops_mixin.py.md) β *Table Editing Row Ops Mixin*
* [table_editing_sort_mixin.py.md](./workers/builder/text_table/table_editing_sort_mixin.py.md) β *Table Editing Sort Mixin*
* [table_editing_undo_mixin.py.md](./workers/builder/text_table/table_editing_undo_mixin.py.md) β *Table Editing Undo Mixin*
* [text_table.md](./workers/builder/text_table/text_table.md) β *Text Table*
* [text_table.py.md](./workers/builder/text_table/text_table.py.md) β *Text Table*
* **input_inc_dec_buttons/**
* [input_inc_dec_buttons.md](./workers/builder/input_inc_dec_buttons/input_inc_dec_buttons.md) β *Input Inc Dec Buttons*
* [input_inc_dec_buttons.py.md](./workers/builder/input_inc_dec_buttons/input_inc_dec_buttons.py.md) β *Input Inc Dec Buttons*
* **meter_knob_with_vu_meter/**
* [meter_knob_with_vu_meter.md](./workers/builder/meter_knob_with_vu_meter/meter_knob_with_vu_meter.md) β *Meter Knob With Vu Meter*
* [meter_knob_with_vu_meter.py.md](./workers/builder/meter_knob_with_vu_meter/meter_knob_with_vu_meter.py.md) β *Meter Knob With Vu Meter*
* **data_graphing/**
* [Meter_to_display_units.md](./workers/builder/data_graphing/Meter_to_display_units.md) β *Meter To Display Units*
* [Meter_to_display_units.py.md](./workers/builder/data_graphing/Meter_to_display_units.py.md) β *Meter To Display Units*
* [dynamic_bar_graph.py.md](./workers/builder/data_graphing/dynamic_bar_graph.py.md) β *Dynamic Bar Graph*
* [dynamic_graph.md](./workers/builder/data_graphing/dynamic_graph.md) β *Dynamic Graph*
* [dynamic_graph.py.md](./workers/builder/data_graphing/dynamic_graph.py.md) β *Dynamic Graph*
* [graph_builder.md](./workers/builder/data_graphing/graph_builder.md) β *Graph Builder*
* [graph_builder.py.md](./workers/builder/data_graphing/graph_builder.py.md) β *Graph Builder*
* [graph_interactor.md](./workers/builder/data_graphing/graph_interactor.md) β *Graph Interactor*
* [graph_interactor.py.md](./workers/builder/data_graphing/graph_interactor.py.md) β *Graph Interactor*
* [graph_styler.md](./workers/builder/data_graphing/graph_styler.md) β *Graph Styler*
* [graph_styler.py.md](./workers/builder/data_graphing/graph_styler.py.md) β *Graph Styler*
* [graph_updater.md](./workers/builder/data_graphing/graph_updater.md) β *Graph Updater*
* [graph_updater.py.md](./workers/builder/data_graphing/graph_updater.py.md) β *Graph Updater*
* [meter_widget_adapter.md](./workers/builder/data_graphing/meter_widget_adapter.md) β *Meter Widget Adapter*
* [meter_widget_adapter.py.md](./workers/builder/data_graphing/meter_widget_adapter.py.md) β *Meter Widget Adapter*
* [plot_widget_adapter.md](./workers/builder/data_graphing/plot_widget_adapter.md) β *Plot Widget Adapter*
* [plot_widget_adapter.py.md](./workers/builder/data_graphing/plot_widget_adapter.py.md) β *Plot Widget Adapter*
* **knob/**
* [knob.md](./workers/builder/knob/knob.md) β *Knob*
* [knob.py.md](./workers/builder/knob/knob.py.md) β *Knob*
* **effects/**
* [knob_3d_effects.py.md](./workers/builder/knob/effects/knob_3d_effects.py.md) β *Knob 3D Effects*
* **core/**
* [knob_config.py.md](./workers/builder/knob/core/knob_config.py.md) β *Knob Config*
* [knob_events.py.md](./workers/builder/knob/core/knob_events.py.md) β *Knob Events*
* [knob_renderer.py.md](./workers/builder/knob/core/knob_renderer.py.md) β *Knob Renderer*
* [knob_state.py.md](./workers/builder/knob/core/knob_state.py.md) β *Knob State*
* **button_trapezoid/**
* [button_trapezoid.md](./workers/builder/button_trapezoid/button_trapezoid.md) β *Button Trapezoid*
* [button_trapezoid.py.md](./workers/builder/button_trapezoid/button_trapezoid.py.md) β *Button Trapezoid*
* **text_label/**
* [text_label.md](./workers/builder/text_label/text_label.md) β *Text Label*
* [text_label.py.md](./workers/builder/text_label/text_label.py.md) β *Text Label*
* **images_progress_bar/**
* [images_progress_bar.md](./workers/builder/images_progress_bar/images_progress_bar.md) β *Images Progress Bar*
* [images_progress_bar.py.md](./workers/builder/images_progress_bar/images_progress_bar.py.md) β *Images Progress Bar*
* **text_gui_dropdown_option/**
* [text_gui_dropdown_option.md](./workers/builder/text_gui_dropdown_option/text_gui_dropdown_option.md) β *Text Gui Dropdown Option*
* [text_gui_dropdown_option.py.md](./workers/builder/text_gui_dropdown_option/text_gui_dropdown_option.py.md) β *Text Gui Dropdown Option*
* **text_label_from_config/**
* [text_label_from_config.md](./workers/builder/text_label_from_config/text_label_from_config.md) β *Text Label From Config*
* [text_label_from_config.py.md](./workers/builder/text_label_from_config/text_label_from_config.py.md) β *Text Label From Config*
* **text_value_with_units/**
* [text_value_with_units.md](./workers/builder/text_value_with_units/text_value_with_units.md) β *Text Value With Units*
* [text_value_with_units.py.md](./workers/builder/text_value_with_units/text_value_with_units.py.md) β *Text Value With Units*
* **fader_dual/**
* [fader_dual.md](./workers/builder/fader_dual/fader_dual.md) β *Fader Dual*
* [fader_dual.py.md](./workers/builder/fader_dual/fader_dual.py.md) β *Fader Dual*
* **fader_ganged_controlled_array/**
* [README.md](./workers/builder/fader_ganged_controlled_array/README.md) β *Readme*
* [fader_ganged_controlled_array.md](./workers/builder/fader_ganged_controlled_array/fader_ganged_controlled_array.md) β *Fader Ganged Controlled Array*
* [fader_ganged_controlled_array.py.md](./workers/builder/fader_ganged_controlled_array/fader_ganged_controlled_array.py.md) β *Fader Ganged Controlled Array*
* **text_web_link/**
* [text_web_link.md](./workers/builder/text_web_link/text_web_link.md) β *Text Web Link*
* [text_web_link.py.md](./workers/builder/text_web_link/text_web_link.py.md) β *Text Web Link*
* **checkbox/**
* [checkbox.md](./workers/builder/checkbox/checkbox.md) β *Checkbox*
* [checkbox.py.md](./workers/builder/checkbox/checkbox.py.md) β *Checkbox*
* **fader_linear_travelling_potentiometer/**
* [README.md](./workers/builder/fader_linear_travelling_potentiometer/README.md) β *Readme*
* [fader_linear_travelling_potentiometer.md](./workers/builder/fader_linear_travelling_potentiometer/fader_linear_travelling_potentiometer.md) β *Fader Linear Travelling Potentiometer*
* [fader_linear_travelling_potentiometer.py.md](./workers/builder/fader_linear_travelling_potentiometer/fader_linear_travelling_potentiometer.py.md) β *Fader Linear Travelling Potentiometer*
* **button_toggle/**
* [button_toggle.md](./workers/builder/button_toggle/button_toggle.md) β *Button Toggle*
* [button_toggle.py.md](./workers/builder/button_toggle/button_toggle.py.md) β *Button Toggle*
* **button_toggler/**
* [button_toggler.md](./workers/builder/button_toggler/button_toggler.md) β *Button Toggler*
* [button_toggler.py.md](./workers/builder/button_toggler/button_toggler.py.md) β *Button Toggler*
* **fader_bar_graph/**
* [fader_bar_graph.py.md](./workers/builder/fader_bar_graph/fader_bar_graph.py.md) β *Fader Bar Graph*
* **knob_rotary_selector/**
* [knob_rotary_selector.md](./workers/builder/knob_rotary_selector/knob_rotary_selector.md) β *Knob Rotary Selector*
* [knob_rotary_selector.py.md](./workers/builder/knob_rotary_selector/knob_rotary_selector.py.md) β *Knob Rotary Selector*
* **composite_mdp/**
* [README.md](./workers/builder/composite_mdp/README.md) β *Readme*
* [composite_mdp.py.md](./workers/builder/composite_mdp/composite_mdp.py.md) β *Composite Mdp*
* [tester.py.md](./workers/builder/composite_mdp/tester.py.md) β *Tester*
* **composite_horizontal_dial_value/**
* [composite_horizontal_dial_value.md](./workers/builder/composite_horizontal_dial_value/composite_horizontal_dial_value.md) β *Composite Horizontal Dial Value*
* [composite_horizontal_dial_value.py.md](./workers/builder/composite_horizontal_dial_value/composite_horizontal_dial_value.py.md) β *Composite Horizontal Dial Value*
* **slider_value/**
* [slider_value.md](./workers/builder/slider_value/slider_value.md) β *Slider Value*
* [slider_value.py.md](./workers/builder/slider_value/slider_value.py.md) β *Slider Value*
* **button_wink/**
* [button_wink.md](./workers/builder/button_wink/button_wink.md) β *Button Wink*
* [button_wink.py.md](./workers/builder/button_wink/button_wink.py.md) β *Button Wink*
* [winkdemo.py.md](./workers/builder/button_wink/winkdemo.py.md) β *Winkdemo*
* **core/**
* [wink_config.py.md](./workers/builder/button_wink/core/wink_config.py.md) β *Wink Config*
* [wink_events.py.md](./workers/builder/button_wink/core/wink_events.py.md) β *Wink Events*
* [wink_physics.py.md](./workers/builder/button_wink/core/wink_physics.py.md) β *Wink Physics*
* [wink_renderer.py.md](./workers/builder/button_wink/core/wink_renderer.py.md) β *Wink Renderer*
* [wink_state.py.md](./workers/builder/button_wink/core/wink_state.py.md) β *Wink State*
* **presets/**
* [XXX worker_preset_pusher.py.md](./workers/presets/XXX%20worker_preset_pusher.py.md) β *Xxx Worker Preset Pusher*
* [XXXworker_preset_from_device.py.md](./workers/presets/XXXworker_preset_from_device.py.md) β *Xxxworker Preset From Device*
* [__init__.py.md](./workers/presets/__init__.py.md) β * Init *
* **logic/**
* [state_mirror_engine.py.md](./workers/logic/state_mirror_engine.py.md) β *State Mirror Engine*
* **markers/**
* [XXXX worker_marker_peak_re_publisher.py.md](./workers/markers/XXXX%20worker_marker_peak_re_publisher.py.md) β *Xxxx Worker Marker Peak Re Publisher*
* [__init__.py.md](./workers/markers/__init__.py.md) β * Init *
* [worker_marker_logic.py.md](./workers/markers/worker_marker_logic.py.md) β *Worker Marker Logic*
* **styling/**
* [style.py.md](./workers/styling/style.py.md) β *Style*
* [theme_applier.py.md](./workers/styling/theme_applier.py.md) β *Theme Applier*
* **initialization/**
* [application_initializer.py.md](./workers/initialization/application_initializer.py.md) β *Application Initializer*
* [debug_cleaner.py.md](./workers/initialization/debug_cleaner.py.md) β *Debug Cleaner*
* [path_initializer.py.md](./workers/initialization/path_initializer.py.md) β *Path Initializer*
* [worker_project_paths.py.md](./workers/initialization/worker_project_paths.py.md) β *Worker Project Paths*
* **handlers/**
* [json_validator.py.md](./workers/handlers/json_validator.py.md) β *Json Validator*
* [widget_event_binder.py.md](./workers/handlers/widget_event_binder.py.md) β *Widget Event Binder*
* **State_Cache/**
* [__init__.py.md](./workers/State_Cache/__init__.py.md) β * Init *
* [cache_io_handler.py.md](./workers/State_Cache/cache_io_handler.py.md) β *Cache Io Handler*
* [cache_traffic_controller.py.md](./workers/State_Cache/cache_traffic_controller.py.md) β *Cache Traffic Controller*
* [gui_state_restorer.py.md](./workers/State_Cache/gui_state_restorer.py.md) β *Gui State Restorer*
* [state_cache_manager.py.md](./workers/State_Cache/state_cache_manager.py.md) β *State Cache Manager*
* [state_comparator.py.md](./workers/State_Cache/state_comparator.py.md) β *State Comparator*
* **importers/**
* [__init__.py.md](./workers/importers/__init__.py.md) β * Init *
* [worker_importer_appender.py.md](./workers/importers/worker_importer_appender.py.md) β *Worker Importer Appender*
* [worker_importer_editor.py.md](./workers/importers/worker_importer_editor.py.md) β *Worker Importer Editor*
* [worker_importer_loader.py.md](./workers/importers/worker_importer_loader.py.md) β *Worker Importer Loader*
* [worker_importer_saver.py.md](./workers/importers/worker_importer_saver.py.md) β *Worker Importer Saver*
* [worker_marker_csv_to_json_mqtt.py.md](./workers/importers/worker_marker_csv_to_json_mqtt.py.md) β *Worker Marker Csv To Json Mqtt*
* [worker_marker_file_import_converter.py.md](./workers/importers/worker_marker_file_import_converter.py.md) β *Worker Marker File Import Converter*
* **formats/**
* [worker_importer_from_csv_unknown.py.md](./workers/importers/formats/worker_importer_from_csv_unknown.py.md) β *Worker Importer From Csv Unknown*
* [worker_importer_from_ias_html.py.md](./workers/importers/formats/worker_importer_from_ias_html.py.md) β *Worker Importer From Ias Html*
* [worker_importer_from_shure_wwb_shw.py.md](./workers/importers/formats/worker_importer_from_shure_wwb_shw.py.md) β *Worker Importer From Shure Wwb Shw*
* [worker_importer_from_shure_wwb_zip.py.md](./workers/importers/formats/worker_importer_from_shure_wwb_zip.py.md) β *Worker Importer From Shure Wwb Zip*
* [worker_importer_from_soundbase_pdf_v1.py.md](./workers/importers/formats/worker_importer_from_soundbase_pdf_v1.py.md) β *Worker Importer From Soundbase Pdf V1*
* [worker_importer_from_soundbase_pdf_v2.py.md](./workers/importers/formats/worker_importer_from_soundbase_pdf_v2.py.md) β *Worker Importer From Soundbase Pdf V2*
* **icons/**
* [__init__.py.md](./workers/icons/__init__.py.md) β * Init *
* [make_icon.py.md](./workers/icons/make_icon.py.md) β *Make Icon*
Last Updated: 2026-02-24 | Generated by OPEN-AIR Documentation Engine