Add adaptive brightness value source with time-of-day and scene modes

New "adaptive" value source type that automatically adjusts brightness
based on external conditions. Two sub-modes: time-of-day (schedule-based
interpolation with midnight wrap) and scene brightness (frame luminance
analysis via numpy BT.601 subsampling with EMA smoothing).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-24 15:14:30 +03:00
parent 48651f0a4e
commit d339dd3f90
11 changed files with 643 additions and 19 deletions

View File

@@ -774,10 +774,11 @@
"value_source.name.placeholder": "Пульс яркости",
"value_source.name.hint": "Описательное имя для этого источника значений",
"value_source.type": "Тип:",
"value_source.type.hint": "Статический выдаёт постоянное значение. Анимированный циклически меняет форму волны. Аудио реагирует на звук.",
"value_source.type.hint": "Статический выдаёт постоянное значение. Анимированный циклически меняет форму волны. Аудио реагирует на звук. Адаптивный подстраивается под время суток или яркость сцены.",
"value_source.type.static": "Статический",
"value_source.type.animated": "Анимированный",
"value_source.type.audio": "Аудио",
"value_source.type.adaptive": "Адаптивный",
"value_source.value": "Значение:",
"value_source.value.hint": "Постоянное выходное значение (0.0 = выкл, 1.0 = полная яркость)",
"value_source.waveform": "Форма волны:",
@@ -803,6 +804,25 @@
"value_source.sensitivity.hint": "Множитель усиления аудиосигнала (выше = более реактивный)",
"value_source.smoothing": "Сглаживание:",
"value_source.smoothing.hint": "Временное сглаживание (0 = мгновенный отклик, 1 = очень плавный/медленный)",
"value_source.adaptive_mode": "Адаптивный режим:",
"value_source.adaptive_mode.hint": "Время суток регулирует яркость по дневному расписанию. Сцена анализирует яркость изображения в реальном времени.",
"value_source.adaptive_mode.time_of_day": "Время суток",
"value_source.adaptive_mode.scene": "Яркость сцены",
"value_source.schedule": "Расписание:",
"value_source.schedule.hint": "Определите минимум 2 временные точки. Яркость линейно интерполируется между ними, с переходом через полночь.",
"value_source.schedule.add": "+ Добавить точку",
"value_source.schedule.points": "точек",
"value_source.picture_source": "Источник изображения:",
"value_source.picture_source.hint": "Источник изображения, кадры которого будут анализироваться на среднюю яркость.",
"value_source.scene_behavior": "Поведение:",
"value_source.scene_behavior.hint": "Дополнение: тёмная сцена = высокая яркость (для фоновой подсветки). Совпадение: яркая сцена = высокая яркость.",
"value_source.scene_behavior.complement": "Дополнение (тёмный → ярко)",
"value_source.scene_behavior.match": "Совпадение (яркий → ярко)",
"value_source.adaptive_min_value": "Мин. значение:",
"value_source.adaptive_min_value.hint": "Минимальная выходная яркость",
"value_source.adaptive_max_value": "Макс. значение:",
"value_source.adaptive_max_value.hint": "Максимальная выходная яркость",
"value_source.error.schedule_min": "Расписание требует минимум 2 временные точки",
"value_source.description": "Описание (необязательно):",
"value_source.description.placeholder": "Опишите этот источник значений...",
"value_source.description.hint": "Необязательные заметки об этом источнике значений",