Add value sources for dynamic brightness control on LED targets

Introduces a new Value Source entity that produces a scalar float (0.0-1.0)
for dynamic brightness modulation. Three subtypes: Static (constant),
Animated (sine/triangle/square/sawtooth waveform), and Audio-reactive
(RMS/peak/beat from mono audio source). Value sources can be optionally
attached to LED targets to control brightness each frame.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-24 12:19:40 +03:00
parent 27720e51aa
commit ef474fe275
26 changed files with 1704 additions and 14 deletions

View File

@@ -760,5 +760,54 @@
"audio_source.updated": "Audio source updated",
"audio_source.deleted": "Audio source deleted",
"audio_source.delete.confirm": "Are you sure you want to delete this audio source?",
"audio_source.error.name_required": "Please enter a name"
"audio_source.error.name_required": "Please enter a name",
"streams.group.value": "Value Sources",
"value_source.group.title": "🎚️ Value Sources",
"value_source.add": "Add Value Source",
"value_source.edit": "Edit Value Source",
"value_source.name": "Name:",
"value_source.name.placeholder": "Brightness Pulse",
"value_source.name.hint": "A descriptive name for this value source",
"value_source.type": "Type:",
"value_source.type.hint": "Static outputs a constant value. Animated cycles through a waveform. Audio reacts to sound input.",
"value_source.type.static": "Static",
"value_source.type.animated": "Animated",
"value_source.type.audio": "Audio",
"value_source.value": "Value:",
"value_source.value.hint": "Constant output value (0.0 = off, 1.0 = full brightness)",
"value_source.waveform": "Waveform:",
"value_source.waveform.hint": "Shape of the brightness animation cycle",
"value_source.waveform.sine": "Sine",
"value_source.waveform.triangle": "Triangle",
"value_source.waveform.square": "Square",
"value_source.waveform.sawtooth": "Sawtooth",
"value_source.speed": "Speed (cpm):",
"value_source.speed.hint": "Cycles per minute — how fast the waveform repeats (1 = very slow, 120 = very fast)",
"value_source.min_value": "Min Value:",
"value_source.min_value.hint": "Minimum output of the waveform cycle",
"value_source.max_value": "Max Value:",
"value_source.max_value.hint": "Maximum output of the waveform cycle",
"value_source.audio_source": "Audio Source:",
"value_source.audio_source.hint": "Mono audio source to read audio levels from",
"value_source.mode": "Mode:",
"value_source.mode.hint": "RMS measures average volume. Peak tracks loudest moments. Beat triggers on rhythm.",
"value_source.mode.rms": "RMS (Volume)",
"value_source.mode.peak": "Peak",
"value_source.mode.beat": "Beat",
"value_source.sensitivity": "Sensitivity:",
"value_source.sensitivity.hint": "Gain multiplier for the audio signal (higher = more reactive)",
"value_source.smoothing": "Smoothing:",
"value_source.smoothing.hint": "Temporal smoothing (0 = instant response, 1 = very smooth/slow)",
"value_source.description": "Description (optional):",
"value_source.description.placeholder": "Describe this value source...",
"value_source.description.hint": "Optional notes about this value source",
"value_source.created": "Value source created",
"value_source.updated": "Value source updated",
"value_source.deleted": "Value source deleted",
"value_source.delete.confirm": "Are you sure you want to delete this value source?",
"value_source.error.name_required": "Please enter a name",
"targets.brightness_vs": "Brightness Source:",
"targets.brightness_vs.hint": "Optional value source that dynamically controls brightness each frame (overrides device brightness)",
"targets.brightness_vs.none": "None (device brightness)"
}