ADR-005: Sensor Framework
Date: March 2026
Status: Accepted
Context
Effects should react to real-time input (microphone, pipeline metrics) without hardcoding sensor logic.
Decision
Sensor ABC with read() returning SensorValue:
Implementations:
- MicSensor: Microphone RMS dB (via sounddevice)
- PipelineMetricsSensor: FPS, frame-time
- OscillatorSensor: Test sine wave generator
SensorStage provides values to effects. Effects declare param_bindings:
Transforms: linear, exponential, threshold
Consequences
- Positive: Extensible - add new sensors without touching effects
- Positive: Effects react to any sensor uniformly
- Negative: Audio sensors require additional dependencies
References
engine/sensors/__init__.py: Sensor ABC, SensorRegistry
engine/sensors/mic.py: MicSensor
engine/pipeline/adapters.py: SensorStage